问卷系统项目自动化测试
自动化测试的概述
1.测试目的
通过自动化测试脚本,替代部分重复的手工测试工作,提升问卷考试系统核心功能的测试效率,确保系统在迭代过程中核心模块(如用户登录、项目管理、练习管理等)功能稳定性,减少人工测试遗漏,同时实现关键场景的快速回归测试。
2.测试范围
本次自动化测试覆盖系统核心功能模块,包括但不限于:用户登录模块(正确登录、错误登录场景)、我的项目模块(新建 / 重命名 / 删除项目)、我的练习模块(练习答题、查看结果)、系统管理模块(用户新增 / 编辑、角色管理)等关键操作场景。
3.技术选型
- 自动化测试框架:Selenium
- 编程语言:Python 3.9
- 依赖工具:ChromeDriver(浏览器驱动,需与 Chrome 版本匹配)
- 环境要求:Windows 11 操作系统、Chrome 浏览器、Python 环境(需安装 selenium、webdriver-manager 等依赖包)
4.自动化测试的一般步骤:
1)使用脑图编写web自动化测试用例,参考上述的测试用例
2)创建自动化测试项目,根据用例来实现脚本
一、脑图
二、代码的编写
1.脚本结构
自动化测试脚本按 “模块 - 功能” 划分,每个模块对应独立的测试脚本文件,核心结构如下:
脚本文件路径 | 对应模块 | 核心测试场景 |
---|---|---|
questionnaireLogin.py | 用户登录模块 | 正确用户名密码登录、用户名错误登录、密码错误登录 |
questionnaireProject.py | 我的项目模块 | 新建问卷项目、重命名项目、删除项目 |
questionnairePractice.py | 我的练习模块 | 继续随机练习、查看练习结果、删除练习记录 |
questionRegister.py | 用户注册模块 | 姓名、注册账号、密码、密码确认 |
| 公共配置 | 浏览器驱动封装,Chrome 浏览器初始化、截图生成与存储等 |
2.核心脚本功能解析
1)公共类Utils.py
这部分主要是对浏览器驱动进行封装,以服务于问卷考试系统的自动化测试。
- 在
Driver
类的初始化方法里,指定了 ChromeDriver 的路径来启动 Chrome 浏览器,并设置了 2 秒的隐式等待,让浏览器在查找元素时能有一定时间等待页面加载。 - 保存现场截图,
getScreenShot
方法用于生成测试截图,会先按当前日期创建对应的文件夹用于存储截图,若文件夹不存在则自动创建。截图的文件名会包含调用该方法的测试函数名以及当前的日期时间,这样能方便追溯测试情况,同时截图会保存到日期文件夹用于归档,也会保存到根目录的 “screenshot.png” 以便快速查看最新截图。 - 创建了
questionnaireDriver
这个全局的浏览器驱动实例,外部测试脚本可以直接导入使用,无需重复初始化浏览器,大大提升了测试的便捷性和可维护性。
2)用户注册模块questionRegister.py
这部分实现了问卷考试系统用户注册功能的自动化测试,核心是模拟用户注册操作并验证注册结果。
- 脚本复用了已封装的全局浏览器驱动
questionnaireDriver
,无需重复初始化浏览器,确保测试环境一致性 - 在初始化阶段,自动定位到系统注册页面(URL:http://8.155.1.153:8081/user/register)并打开页面,为注册操作铺垫。
- 核心测试流程上,通过 CSS_SELECTOR 定位注册页面的姓名、用户名、密码、确认密码输入框,自动填入测试数据(姓名 / 用户名,密码 / 确认密码),随后模拟点击注册按钮,等待页面加载稳定后,通过对比当前页面 URL 与预期的登录页面 URL(http://8.155.1.153:8081/user/login)判断注册是否成功 —— 若跳转至登录页则判定注册成功,反之则失败,最后关闭浏览器结束测试。
3)用户登录模块questionnaireLogin.py
这部分实现了问卷考试系统用户登录模块的自动化测试,涵盖成功登录与异常登录两种核心场景。
- 脚本复用全局浏览器驱动
questionnaireDriver
,在questionnaireLogin
类初始化时,自动定位并打开登录页面(URL:http://8.155.1.153:8081/user/login),为后续测试提供基础环境。 - 成功登录场景(
loginSuccessTest
方法)中,先清空用户名和密码输入框(避免残留数据干扰),再输入正确的账号(“yq”)和密码(“123456”),模拟点击登录按钮;通过定位首页特定元素(如用户信息相关节点)验证是否成功跳转至系统首页,同时调用截图方法留存登录成功后的页面状态,确保登录功能正常。 - 在异常登录场景(
loginFailTest
方法)中,同样先清空输入框,输入正确用户名(“yq”)与错误密码(“123457”)并点击登录;通过定位错误提示元素获取实际提示文本,与预期的 “错误的用户名和密码” 进行断言比对,验证系统对错误登录的处理是否符合预期,同时截图记录错误提示状态,确保异常场景的提示逻辑正确。 - 整体测试覆盖了登录模块的核心验证点:正确凭据的登录跳转、错误凭据的提示反馈,通过元素定位、操作模拟、结果断言和截图留存,全面验证了登录功能的正确性与健壮性。
4)我的项目模块questionnaireProject.py
这部分实现了问卷考试系统 “我的项目” 模块在登录状态下的自动化测试,核心围绕页面核心元素验证与关键功能入口校验展开,
- 脚本复用全局封装的浏览器驱动
questionnaireDriver
,在questionnaireProject
类初始化阶段,自动定位并打开 “我的项目” 页面(URL:http://8.155.1.153:8081/project),确保测试从正确的模块页面启动。 - 核心测试方法
projectTestByLogin
聚焦登录状态下的页面有效性验证:先通过time.sleep(2)
等待页面加载稳定,随后通过 CSS_SELECTOR 定位 “我的项目” 页面标题元素,校验页面标题是否正常渲染,确认页面成功加载 - 代码中预留了项目列表核心表头的定位逻辑,可进一步扩展验证项目列表的列名展示是否完整、准确(如项目名称、状态、类型等关键信息列),同时包含 “新建项目” 功能按钮的定位与点击逻辑,能验证 “新建” 按钮是否存在且可正常触发操作;
- 调用
questionnaireDriver.getScreenShot()
生成当前页面截图,留存测试过程中的页面状态,便于后续核对测试结果。
5)测试套件RunTest
测试套件的运行,使用的是以测试类作为执行顺序的方式
3.代码参考
questionnaireTest代码参考
三、代码测试
所以代码用例通过。