欢迎光临
我们一直在努力

【跑者天地】Web端平台——UI自动化测试专项报告

1 项目概述

1.1 项目名称

跑者天地社区交流平台

1.2 自动化测试目标

为了提高测试效率,减少重复性人工操作,对系统核心业务流程进行自动化测试。

本次自动化测试主要验证:

  • 用户登录功能
  • 首页加载功能
  • 帖子详情查看功能
  • 帖子发布功能
  • 页面元素显示功能

确保系统在功能迭代后仍能正常运行。

2 自动化测试方案

2.1 自动化测试范围

本次自动化测试覆盖以下模块:

模块名称测试内容
用户登录模块 登录成功、登录失败
首页模块 首页元素加载
帖子详情模块 帖子详情页面跳转
发布帖子模块 发布帖子流程

2.2 自动化测试工具

工具用途
Selenium Web自动化测试
Python 编写测试脚本
ChromeDriver 浏览器驱动

2.3 测试环境

项目配置
操作系统 Windows 11
浏览器 Chrome
Python版本 Python 3.12.4
Selenium版本 Selenium 4.0.0
数据库 MySQL 8.0

3 自动化测试框架设计

3.1 项目结构

autotest1/
├── common/
│ ├── __init__.py
│ └── Utils.py # 公共工具类(浏览器驱动 + 截图)
├── tests/
│ ├── __init__.py
│ ├── LoginTest.py # 登录页面测试
│ ├── IndexTest.py # 首页测试
│ ├── DetailTest.py # 帖子详情页测试
│ ├── PublishTest.py # 发布文章测试
│ └── RunTest.py # 测试套件入口(统一执行所有用例)
├── images/ # 截图存放目录
└── test01.py # 笔记草稿

3.2 公共类设计(common/Utils.py 功能说明)

Driver 类 — 浏览器驱动管理

职责说明
自动获取驱动 通过 ChromeDriverManager().install() 自动检测本机 Chrome 版本并下载匹配的 chromedriver
浏览器配置 创建 ChromeOptions 对象,可扩展无头模式、页面加载策略等配置
启动浏览器 调用 webdriver.Chrome(service=…, options=…) 生成浏览器实例
全局隐式等待 driver.implicitly_wait(3),最多等待3秒,作用于整个 driver 生命周期

GetScreeShot() 方法 — 自动截图

步骤说明
生成日期文件夹 按 YYYY-MM-DD 格式创建目录,如 images/2026-06-01/
生成文件名 格式为 方法名-年-月-日-时分秒.png,通过 sys._getframe().f_back.f_code.co_name 反射获取方法名
保存截图 调用 driver.save_screenshot() 保存到上述路径

TestDriver 对象

  • 在模块末尾创建全局单例:

    TestDriver = Driver()

  • 所有测试类通过 from common.Utils import TestDriver 获取同一浏览器实例
  • 避免反复启动和关闭浏览器,提高执行效率

4 自动化测试用例设计

4.1登录模块自动化测试用例

用例编号用例名称优先级前置条件测试步骤测试数据预期结果
AT_Login_001 正常登录 P0 系统正常运行 1.打开登录页面 2.输入账号密码 3.点击登录 用户名:admin 密码:admin123 登录成功并进入首页
AT_Login_002 账号密码错误 P1 系统正常运行 1.打开登录页面 2.输入错误账号密码 3.点击登录 用户名:admin1 密码:admin23 登录失败并提示账号或密码错误
AT_Login_003 密码错误 P1 系统正常运行 1.打开登录页面 2.输入正确账号和错误密码 3.点击登录 用户名:admin 密码:admin23 登录失败并提示账号或密码错误
AT_Login_004 用户名为空 P1 系统正常运行 1.打开登录页面 2.用户名为空 3.输入密码 4.点击登录 用户名:空 密码:admin123 登录失败
AT_Login_005 SQL注入验证 P1 系统正常运行 1.打开登录页面 2.输入注入语句 3.点击登录 用户名:' OR 1=1 — 登录失败

4.2首页模块自动化测试用例

用例编号用例名称优先级前置条件测试步骤测试数据预期结果
AT_Index_001 顶部菜单栏跳转验证 P2 用户已成功登录并进入首页 1.进入首页 2.点击顶部菜单按钮 3.点击注销菜单 注销菜单 成功跳转至注销页面
AT_Index_002 Banner发帖按钮验证 P2 用户已成功登录并进入首页 1.进入首页 2.点击立即发帖按钮 立即发帖按钮 成功跳转至发布帖子页面
AT_Index_003 帖子排序功能验证 P2 用户已成功登录并进入首页 1.点击帖子排序下拉框 2.选择“最多浏览” 最多浏览 页面按照选择条件重新排序
AT_Index_004 帖子详情跳转验证 P2 用户已成功登录并进入首页 1.点击任意帖子 2.查看页面跳转情况 新手8周训练计划帖子 成功进入帖子详情页面

4.3帖子详情页自动化测试用例

用例编号用例名称优先级前置条件测试步骤测试数据预期结果
AT_Detail_001 顶部菜单栏跳转验证 P0 用户已进入帖子详情页 1.点击顶部菜单按钮 2.点击注销菜单 注销菜单 成功跳转至注销页面
AT_Detail_002 作者编辑帖子验证 P0 当前登录用户为帖子作者 1.进入本人发布的帖子详情页 2.点击编辑文章按钮 本人发布帖子 成功进入编辑帖子页面
AT_Detail_003 非作者编辑帖子验证 P1 当前登录用户不是帖子作者 1.进入其他用户帖子详情页 2.点击编辑按钮 非本人帖子 弹出无权限提示,不允许编辑
AT_Detail_004 帖子浏览量显示验证 P2 用户已进入帖子详情页 1.打开帖子详情页 2.获取浏览量元素 任意帖子 浏览量正常显示,不为空

4.4发布帖子页面自动化测试用例

用例编号用例名称优先级前置条件测试步骤测试数据预期结果
AT_Publish_001 顶部菜单栏跳转验证 P2 用户已进入发布帖子页面 1.点击顶部菜单按钮 2.点击注销菜单 注销菜单 成功跳转至注销页面
AT_Publish_002 正常发布帖子验证 P0 用户已登录并进入发布页面 1.输入标题 2.输入正文 3.选择分类 4.点击发布 标题:5公里入门训练计划;正文:测试内容;分类:训练计划 发布成功
AT_Publish_003 标题为空验证 P1 用户已进入发布页面 1.标题为空 2.输入正文 3.点击发布 标题为空 提示标题不能为空,发布失败
AT_Publish_004 分类下拉框验证 P1 用户已进入发布页面 1.点击分类下拉框 2.切换分类 训练计划、赛事资讯等 分类切换成功
AT_Publish_005 共创按钮验证 P1 用户已进入发布页面 1.勾选共创按钮 2.取消勾选共创按钮 共创开关 按钮状态可正常切换
AT_Publish_006 发布成功后页面跳转验证 P0 用户已进入发布页面 1.输入合法内容 2.点击发布 正常帖子数据 发布成功并自动返回首页

5 自动化测试脚本实现

5.1 登录自动化脚本

说明(异常登录):

  • 打开登录页面

    class Login:#类

    def __init__(self):

    #把TestDriver(实例对象)里的driver给Self.url(给他自己用)用
    # 1. 拿到全局浏览器驱动,整个登录类共用
    # 好处:不用每次都重新打开浏览器,避免重复创建驱动
    self.driver=TestDriver.driver
    self.driver.get("http://127.0.0.1:8080/login.html")

  • 输入正确账号、错误密码

    def LoginFailTest1(self):
    # self.driver.back()
    self.driver.find_element(By.CSS_SELECTOR, "#username").clear()
    self.driver.find_element(By.CSS_SELECTOR, "#password").clear()
    self.driver.find_element(By.CSS_SELECTOR, "#username").send_keys("admin")
    self.driver.find_element(By.CSS_SELECTOR, "#password").send_keys("admin")

  • 点击登录

    self.driver.find_element(By.CSS_SELECTOR, "#submit").click()
    time.sleep(3)

  • 判断是否进入首页(添加屏幕截图)

    #切换到弹窗
    alert = self.driver.switch_to.alert
    actual=alert.text
    #print(actual)
    assert actual == "账号或密码错误"
    #如果断言失败怎么弄(可以print/输出屏幕截图)
    alert.accept()
    TestDriver.GetScreeShot()

说明(正常登录):

  • 打开登录页面(同上)
  • 输入正确账号密码

    def LoginSucTest(self):
    self.driver.find_element(By.CSS_SELECTOR,"#username").clear()
    self.driver.find_element(By.CSS_SELECTOR, "#password").clear()
    self.driver.find_element(By.CSS_SELECTOR,"#username").send_keys("admin")
    self.driver.find_element(By.CSS_SELECTOR,"#password").send_keys("admin123")

  • 点击登录(同上)
  • 判断是否进入首页(断言+屏幕截图)

    #添加屏幕截图
    TestDriver.GetScreeShot()

    5.2 首页自动化脚本

    说明:

  • 登录系统

    class IndexTest:
    def __init__(self):
    driver=""
    self.driver=TestDriver.driver
    self.driver.get("http://127.0.0.1:8080/index.html?currentPage=1")

  • 获取首页元素

    def SucIndex(self):

    self.driver.find_element(By.CSS_SELECTOR,"#card-body > div:nth-child(1) > div.post-content > h3")

  • 判断元素是否存在

5.3 帖子详情自动化脚本

说明:

  • 点击帖子
  • 进入详情页

    class DetailTest:
    def __init__(self):
    self.driver=TestDriver.driver
    self.driver.get("http://127.0.0.1:8080/DetailPage.html?articleId=1")

  • 判断标题元素是否存在

    def SucDetail(self):
    self.driver.find_element(By.CSS_SELECTOR,"#article-header1 > h1")
    time.sleep(2)
    TestDriver.GetScreeShot()

5.4 发布帖子自动化脚本

说明:

  • 进入发布帖子页

    class PublishTest:
    def __init__(self):
    self.driver=TestDriver.driver
    self.driver.get("http://127.0.0.1:8080/write.html")

  • 输入标题

    #插件里的元素无法定位,或者是非法元素,找到但是用不到,这里暂不处理
    self.driver.find_element(By.CSS_SELECTOR,"#title").click()
    self.driver.find_element(By.CSS_SELECTOR,"#title").send_keys("掉进粉色旋涡")

  • 点击发布

    self.driver.find_element(By.CSS_SELECTOR,"#submit").click()

  • 判断是否返回首页

    actual=self.driver.find_element(By.CSS_SELECTOR,"#card-body > div:nth-child(1) > div.post-content > h3").text

    assert actual == "掉进粉色旋涡"
    TestDriver.GetScreeShot()

    6 自动化测试执行

    6.1 执行方式

    统一由:RunTest.py 执行所有测试用例。

    from common.Utils import TestDriver
    from tests import LoginTest, DetailTest, PublishTest
    from tests import IndexTest
    if __name__ == "__main__":
    #在LoginTest下创建一个Login类
    LoginTest.Login().LoginFailTest1()
    LoginTest.Login().LoginSucTest()
    IndexTest.IndexTest().SucIndex()
    DetailTest.DetailTest().SucDetail()
    PublishTest.PublishTest().PublishSuc()
    TestDriver.driver.quit()

     6.2 执行结果统计

模块用例数通过失败
登录模块 5 5 0
首页模块 4 4 0
帖子详情模块 4 4 0
发布帖子模块 6 6 0
合计 19 19 0

7 自动化测试覆盖率分析

已覆盖功能

  • 登录流程
  • 首页访问
  • 页面跳转
  • 帖子发布
  • 页面元素校验

未覆盖功能

  • 注册验证码
  • 文件上传
  • 富文本编辑器(第三方插件)

8 自动化测试问题分析

问题1

富文本编辑器无法直接定位元素。

原因:

第三方组件封装较深

问题2

页面元素加载较慢。

解决方案:添加隐式等待

self.driver.implicitly_wait(3)#最多等待三秒(作用于全局)

9 自动化测试结论

本次自动化测试共执行 19个测试用例,覆盖登录、首页、帖子详情及帖子发布等核心业务流程。测试过程中所有脚本均能够正常执行,测试结果符合预期。自动化测试有效提高了回归测试效率,减少了人工重复操作,为系统后续版本迭代提供了稳定的测试保障。

赞(0)
未经允许不得转载:171主机测评 » 【跑者天地】Web端平台——UI自动化测试专项报告
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址