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

问卷系统项目自动化测试

自动化测试的概述

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://www.xdnf.cn/news/20059.html

相关文章:

  • OpenCV: cv::warpAffine()逆仿射变换详解
  • 模型剪枝----ResNet18剪枝实战
  • Linux之Ubuntu桌面化操作系统的安装
  • AI生成内容的版权问题解析与实操指南
  • Sunlord破解AI服务器供电难题!揭秘高效、小型化电感黑科技
  • MQTT 认证与授权机制实践(二)
  • 盲盒抽卡机小程序功能版块设计的合理性评估维度
  • ZooKeeper vs Redis:分布式锁的实现与选型指南
  • Vulkan进阶系列11 - RenderPass 设置对渲染性能的影响
  • 批量生成角色及动画-角色动画转化为mixamo骨骼(二)
  • 深入浅出 全面剖析消息队列(Kafka,RabbitMQ,RocketMQ 等)
  • 分类、目标检测、实例分割的评估指标
  • 数据结构基础之队列:数组/链表
  • 【C++】 list 容器模拟实现解析
  • 富文本编辑器:主流插件简介与wangEditor深度配置指南
  • 【c++】c++输入和输出的简单介绍
  • Mac M4环境下基于VMware Fusion虚拟机安装Ubuntu24.04 LTS ARM版
  • 在 CentOS 9 上安装 Docker 的完整指南
  • 蚂蚁 S21 XP+ HYD 500T矿机评测:SHA-256算法与高效冷却技术的结合
  • 数字隔离器,新能源汽车PTC中的“电气安全卫士”
  • git命令解析
  • 家庭网络异常降速问题排查处理方案
  • 查找算法 -- 二分查找 O(log n)
  • 前端笔记2025
  • 快速了解迁移学习
  • Jupyter Notebook的交互式开发环境方便py开发
  • 一文看懂什么是GaN HEMT以及其工艺流程(氮化镓高电子迁移率晶体管)
  • 数据结构之双向链表
  • Nginx 配置详解与虚拟主机实战指南
  • 嵌入式|Linux中打开视频流的两种方式V4l2和opencv