当前位置: 首页 > news >正文

问卷系统项目自动化测试

自动化测试的概述

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用户注册模块姓名、注册账号、密码、密码确认

Utils.py

公共配置

浏览器驱动封装,Chrome 浏览器初始化、截图生成与存储等

2.核心脚本功能解析

1)公共类Utils.py

这部分主要是对浏览器驱动进行封装,以服务于问卷考试系统的自动化测试。

  1. Driver类的初始化方法里,指定了 ChromeDriver 的路径来启动 Chrome 浏览器,并设置了 2 秒的隐式等待,让浏览器在查找元素时能有一定时间等待页面加载。
  2. 保存现场截图,getScreenShot方法用于生成测试截图,会先按当前日期创建对应的文件夹用于存储截图,若文件夹不存在则自动创建。截图的文件名会包含调用该方法的测试函数名以及当前的日期时间,这样能方便追溯测试情况,同时截图会保存到日期文件夹用于归档,也会保存到根目录的 “screenshot.png” 以便快速查看最新截图。
  3. 创建了questionnaireDriver这个全局的浏览器驱动实例,外部测试脚本可以直接导入使用,无需重复初始化浏览器,大大提升了测试的便捷性和可维护性。

2)用户注册模块questionRegister.py

这部分实现了问卷考试系统用户注册功能的自动化测试,核心是模拟用户注册操作并验证注册结果。

  1. 脚本复用了已封装的全局浏览器驱动questionnaireDriver,无需重复初始化浏览器,确保测试环境一致性
  2. 在初始化阶段,自动定位到系统注册页面(URL:http://8.155.1.153:8081/user/register)并打开页面,为注册操作铺垫。
  3. 核心测试流程上,通过 CSS_SELECTOR 定位注册页面的姓名、用户名、密码、确认密码输入框,自动填入测试数据(姓名 / 用户名,密码 / 确认密码),随后模拟点击注册按钮,等待页面加载稳定后,通过对比当前页面 URL 与预期的登录页面 URL(http://8.155.1.153:8081/user/login)判断注册是否成功 —— 若跳转至登录页则判定注册成功,反之则失败,最后关闭浏览器结束测试。

3)用户登录模块questionnaireLogin.py

这部分实现了问卷考试系统用户登录模块的自动化测试,涵盖成功登录与异常登录两种核心场景。

  1. 脚本复用全局浏览器驱动questionnaireDriver,在questionnaireLogin类初始化时,自动定位并打开登录页面(URL:http://8.155.1.153:8081/user/login),为后续测试提供基础环境。
  2. 成功登录场景(loginSuccessTest方法)中,先清空用户名和密码输入框(避免残留数据干扰),再输入正确的账号(“yq”)和密码(“123456”),模拟点击登录按钮;通过定位首页特定元素(如用户信息相关节点)验证是否成功跳转至系统首页,同时调用截图方法留存登录成功后的页面状态,确保登录功能正常。
  3. 在异常登录场景(loginFailTest方法)中,同样先清空输入框,输入正确用户名(“yq”)与错误密码(“123457”)并点击登录;通过定位错误提示元素获取实际提示文本,与预期的 “错误的用户名和密码” 进行断言比对,验证系统对错误登录的处理是否符合预期,同时截图记录错误提示状态,确保异常场景的提示逻辑正确。
  4. 整体测试覆盖了登录模块的核心验证点:正确凭据的登录跳转、错误凭据的提示反馈,通过元素定位、操作模拟、结果断言和截图留存,全面验证了登录功能的正确性与健壮性。

4)我的项目模块questionnaireProject.py

这部分实现了问卷考试系统 “我的项目” 模块在登录状态下的自动化测试,核心围绕页面核心元素验证与关键功能入口校验展开,

  1. 脚本复用全局封装的浏览器驱动questionnaireDriver,在questionnaireProject类初始化阶段,自动定位并打开 “我的项目” 页面(URL:http://8.155.1.153:8081/project),确保测试从正确的模块页面启动。
  2. 核心测试方法projectTestByLogin聚焦登录状态下的页面有效性验证:先通过time.sleep(2)等待页面加载稳定,随后通过 CSS_SELECTOR 定位 “我的项目” 页面标题元素,校验页面标题是否正常渲染,确认页面成功加载
  3. 代码中预留了项目列表核心表头的定位逻辑,可进一步扩展验证项目列表的列名展示是否完整、准确(如项目名称、状态、类型等关键信息列),同时包含 “新建项目” 功能按钮的定位与点击逻辑,能验证 “新建” 按钮是否存在且可正常触发操作;
  4. 调用questionnaireDriver.getScreenShot()生成当前页面截图,留存测试过程中的页面状态,便于后续核对测试结果。

5)测试套件RunTest

测试套件的运行,使用的是以测试类作为执行顺序的方式

3.代码参考

questionnaireTest代码参考

三、代码测试

所以代码用例通过。


文章转载自:

http://gmD5Wd2j.ckhyj.cn
http://vb0M42kP.ckhyj.cn
http://mYKjYFkD.ckhyj.cn
http://I3hAuPXo.ckhyj.cn
http://Jo7zZb2p.ckhyj.cn
http://iwF4G8dX.ckhyj.cn
http://pATSl2fq.ckhyj.cn
http://fRh9i0pL.ckhyj.cn
http://fGxFx96q.ckhyj.cn
http://7lE97Rpz.ckhyj.cn
http://dwczGcIg.ckhyj.cn
http://Js6SMZZN.ckhyj.cn
http://lIvCCm9e.ckhyj.cn
http://va1UpehD.ckhyj.cn
http://NBizpUng.ckhyj.cn
http://H14bESAG.ckhyj.cn
http://3P2h6BOa.ckhyj.cn
http://lbA0jMT5.ckhyj.cn
http://oyvfaG9G.ckhyj.cn
http://ZmMx16bq.ckhyj.cn
http://Cuk2Gwmf.ckhyj.cn
http://AfhBoe9r.ckhyj.cn
http://qsr6Mimn.ckhyj.cn
http://tReRtuSh.ckhyj.cn
http://l2Zz1SCc.ckhyj.cn
http://6NsR9Bm5.ckhyj.cn
http://vYWz5Teb.ckhyj.cn
http://2dF8bn7j.ckhyj.cn
http://dMLuoKGm.ckhyj.cn
http://vZbjfcXH.ckhyj.cn
http://www.dtcms.com/a/368910.html

相关文章:

  • 事务管理的选择:为何 @Transactional 并非万能,TransactionTemplate 更值得信赖
  • React Fiber 风格任务调度库
  • Sentinel和Cluster,到底该怎么选?
  • 紧固卓越,智选固万基——五金及紧固件一站式采购新典范
  • android 四大组件—Activity源码详解
  • B树,B+树,B*树(无代码)
  • Redis到底什么,该怎么用
  • mysql中null值对in子查询的影响
  • 时间轮算法在workerman心跳检测中的实战应用
  • 不同行业视角下的数据分析
  • 探索Go语言接口的精妙世界
  • 如何在没有权限的服务器上下载NCCL
  • 常见Bash脚本漏洞分析与防御
  • 【算法笔记】异或运算
  • 数据结构:排序
  • mac清除浏览器缓存,超实用的3款热门浏览器清除缓存教程
  • 残差连接与归一化结合应用
  • 【知识点讲解】模型扩展法则(Scaling Law)与计算最优模型全面解析:从入门到前沿
  • MySQL锁篇-锁类型
  • LINUX_Ubunto学习《2》_shell指令学习、gitee
  • FastGPT源码解析 Agent知识库管理维护使用详解
  • MATLAB 2023a深度学习工具箱全面解析:从CNN、RNN、GAN到YOLO与U-Net,涵盖模型解释、迁移学习、时间序列预测与图像生成的完整实战指南
  • 均匀圆形阵抗干扰MATLAB仿真实录与特点解读
  • 《深入理解双向链表:增删改查及销毁操作》
  • 属性关键字
  • 【Linux基础】Linux系统管理:MBR分区实践详细操作指南
  • 国产化FPGA开发板:2050-基于JFMK50T4(XC7A50T)的核心板
  • 时隔4年麒麟重新登场!华为这8.8英寸新「手机」给我看麻了
  • 敏感词过滤这么玩?自定义注解 + DFA 算法,优雅又高效!
  • RPC内核细节(转载)