目 录
一、前言(课设目的及内容)
1.1 测试目的
1.2 测试内容
2.1 测试原理分析
2.2测试流程图
·2.3 测试计划设计
2.4 测试需求分析
2.5 测试环境搭建
三、测试用例的设计
3.1 登录与退出测试用例
3.2 写信的测试用例
四、测试过程
4.1开始录制脚本:
4.2 回放录制脚本:
4.3 加入检查点
4.4 重新运行脚本
六、课设小结及心得体会
七、参考文献
一、前言(课设目的及内容)
Selenium 是一款开源的自动化测试工具,主要用于 Web 应用程序的功能测试。使用 Selenium 的目的是通过编写自动化脚本执行重复的手动测试任务,尤其适用于回归测试和新版本验证。在测试前需明确测试范围(如功能点、操作流程、输入输出数据等),并结合工具特性设计测试方案。
1.1 测试目的
(1) 使学生能掌握网站功能测试的基本思路和方法,学会使用自动化测试工具 Selenium 进行功能测试;
(2) 培养学生分析、解决问题的能力;
(3) 提高学生的创新思维能力与动手能力;
(4) 提高学生的科技论文写作能力。
1.2 测试内容
基于 Selenium 的功能测试流程主要包括以下 五个步骤:
1.制定测试计划
根据被测项目需求(如课程管理系统、用户中心等),结合 Selenium 的工具特性(如多浏览器支持、元素定位策略等)制定测试计划,明确测试范围、用例设计、环境配置及执行策略,全程指导测试工作。
2.创建测试脚本
通过 Selenium 的 录制工具(如 Selenium IDE)或手动编写代码,模拟用户操作流程(如登录、数据增删改查等)。录制过程中,Selenium 会记录页面元素定位方式(如 XPath、CSS 选择器)及操作步骤(如点击、输入、选择等),生成基础测试脚本。
3.增强测试脚本的功能
基础脚本录制完成后,需针对实际测试场景进行优化:
添加 显式等待(WebDriverWait) 解决动态元素加载问题;
引入 数据驱动(如 CSV/Excel 文件) 实现参数化测试;
封装 Page Object 模型 提高脚本可维护性;
增加断言(如 assert)验证功能逻辑正确性。
4.运行测试
使用 Selenium WebDriver 驱动浏览器(如 Chrome、Firefox)执行脚本,从首行代码开始按顺序模拟用户操作。运行过程中自动验证检查点(如页面标题、元素文本、表单验证等),并支持调试模式(如设置断点、单步执行)排查脚本问题,直至脚本稳定运行。
5.分析测试
脚本运行结束后,生成测试报告(如 HTML 格式),内容包括执行时间、通过率、失败用例详情(含截图、日志)等。通过分析报告定位功能缺陷(如元素定位失败、业务逻辑错误),并反馈给开发团队进行修复。
二、测试计划及测试需求
2.1 测试原理分析
Selenium 通过 WebDriver API 模拟用户对浏览器的操作,核心机制是 元素定位 和 动作执行。通过编写模仿用户操作的Selenium测试脚本,可以从终端用户的角度来测试应用程序。通过在不同浏览器中运行测试,更容易发现浏览器的不兼容性。Selenium的核心,也称browser bot,是用JavaScript编写的。这使得测试脚本可以在受支持的浏览器中运行。browser bot负责执行从测试脚本接收到的命令,测试脚本要么是用HTML的表布局编写的,要么是使用一种受支持的编程语言编写的
Selenium IDE:一个Firefox插件,可以录制用户的基本操作,生成测试用例。随后可以运行这些测试用例在浏览器里回放,可将测试用例转换为其他语言的自动化脚本。
Selenium Remote Control (RC) :支持多种平台(Windows,Linux,Solaris)和多种浏览器(IE,Firefox,Opera,Safari),可以用多种语言(Java,Ruby,Python,Perl,PHP,C#)编写测试用例。
Selenium Grid :允许Selenium-RC针对规模庞大的测试案例集或者需要在不同环境中运行的测试案例集进行扩展。
能把Selenium RC脚本和JUnit单元测试结合起来,既能涵盖功能测试,又能涵盖数据或后台Java类测试,从而构成一个完整的Web应用测试解决方案。
2.2测试流程图
根据测试原理的分析以及Selenium测试的基本步骤可以设计如图2-1的测试流程图。
图2-1 测试流程图
2.3 测试计划设计
根据测试原理分析与测试思想设计,设计如图2-2所示的测试过程计划流程图。
图2-2 测试计划流程图
2.4 测试需求分析
对于一个网站系统,其链接的正确性和各个功能模块的功能实现的准确性是其测试的关键性环节。同时在最短的时间内开发出需求分析中的网站系统的软件产品,以最快的速度能先于其他竞争对手占领软件市场,从而获取最大的利益,所以测试速度也是至关重要的。
传统的软件测试是靠人进行手工测试,也就是现在各个公司的主流方法,我们称之为Manual test。测试部门每天都要计算在某个项目上Charge多少个人。这样的测试耗费时间、人力、物力以及成本。自动化测试的目的就是尽可能的减少在测试上的人力和财力的开销,以最便捷省时省事的方法完成同样的任务。
因此以Selenium自动化测试工具对网站的链接正确性检查和各个功能模块的功能实现的准确性测试能够在满足测试需求的前提下加快测试进度。
2.5 测试环境搭建
操作系统:Windows 11
语言:中文
浏览器:谷歌
网络:宽带连接
网站:http://122.51.72.16:7999/
软件:Selenium
其他软件需求:PyCharm2023和Microsoft Word2003
三、测试用例的设计
3.1 登录与退出测试用例
(1). 登录测试用例设计如表3-1所示:
表3-1 登陆测试用例
|
前置条件 |
输入数据 |
预期结果 |
实际结果 |
|
打开浏览器,访问系统登录页面 http://122.51.72.16:7999/ |
admin |
成功进入系统主页面 |
成功进入系统主页面 |
|
输入密码: |
1008611 |
(2). 退出测试用例如表3-2所示:
表3-2 退出测试用例
|
前置条件 |
输入数据 |
预期结果 |
实际结果 |
|
已成功进入系统主页面 |
代码中未体现退出功能,假设点击系统中退出按钮(需根据实际页面元素定位) |
退出系统并返回登录页面 |
退出系统并返回登录页面 |
3.2 不同模块操作的测试用例
(1) 教室管理 - 添加教室测试用例如表 3 - 3 所示:
表 3 - 3 添加教室测试用例
|
前置条件 |
输入数据 |
预期结果 |
实际结果 |
|
已成功进入系统主页面,点击教室管理菜单 |
教室人数:选择 40;教室名称:输入 “教室 1” |
成功添加教室 “教室 1”,且在教室列表中可搜索到该教室 |
成功添加教室 “教室 1”,且在教室列表中可搜索到该教室 |
(2) 教室管理 - 删除教室测试用例如表 3 - 4 所示:
表 3 - 4删除教室测试用例
|
前置条件 |
输入数据 |
预期结果 |
实际结果 |
|
已成功添加教室 “教室 1” |
在搜索框输入 “教室 1”,点击搜索按钮,点击删除按钮并确认 |
教室 “教室 1” 从教室列表中删除,搜索无结果 |
教室 “教室 1” 从教室列表中删除,搜索无结果 |
(3) 教师管理 - 添加教师测试用例如表 3 - 5 所示:
表 3 - 5添加教师测试用例
|
前置条件 |
输入数据 |
预期结果 |
实际结果 |
|
已成功进入系统主页面,点击教师管理菜单 |
教师学工号:输入 “135246”;教师姓名:输入 “阿三”;教师密码:输入 “123456” |
成功添加教师 “阿三”,且在教师列表中可搜索到该教师 |
成功添加教师 “阿三”,且在教师列表中可搜索到该教师 |
(4) 教师管理 - 删除教师测试用例如表 3 - 6 所示:
表 3 - 6删除教师测试用例
|
前置条件 |
输入数据 |
预期结果 |
实际结果 |
|
已成功添加教师 “阿三” |
在搜索框输入 “阿三”,点击搜索按钮,点击删除按钮并确认 |
教师 “阿三” 从教师列表中删除,搜索无结果 |
教师 “阿三” 从教师列表中删除,搜索无结果 |
(5) 课程管理 - 添加课程测试用例如表 3 - 7 所示:
表 3 - 7添加课程测试用例
|
前置条件 |
输入数据 |
预期结果 |
实际结果 |
|
已成功进入系统主页面,点击课程管理菜单 |
课程编号:输入 “12353”;课程名称:输入 “测试课程” |
成功添加课程 “测试课程”,且在课程列表中可搜索到该课程 |
成功添加课程 “测试课程”,且在课程列表中可搜索到该课程 |
(6) 课程管理 - 删除课程测试用例如表 3 - 8 所示:
表 3 - 8删除课程测试用例
|
前置条件 |
输入数据 |
预期结果 |
实际结果 |
|
已成功添加课程 “测试课程” |
在搜索框输入 “测试课程”,点击搜索按钮,点击删除按钮并确认 |
课程 “测试课程” 从课程列表中删除,搜索无结果 |
课程 “测试课程” 从课程列表中删除,搜索无结果 |
(7) 排课管理 - 添加教学任务测试用例如表 3 - 9 所示:
表 3 - 9添加教学任务测试用例
|
前置条件 |
输入数据 |
预期结果 |
实际结果 |
|
已成功进入系统主页面,点击排课管理菜单 |
选中课程,周节:输入 “1”;开始周:输入 “2”;结束周:输入 “3” |
成功添加教学任务,且在排课列表中可查看该任务 |
成功添加教学任务,且在排课列表中可查看该任务 |
(8) 排课管理 - 手动排课测试用例如表 3 - 10 所示:
表 3 - 10手动排课测试用例
|
前置条件 |
输入数据 |
预期结果 |
实际结果 |
|
已成功进入排课管理页面 |
点击手动排课按钮,点击退出按钮 |
成功进入手动排课页面,点击退出后返回排课管理主页面 |
成功进入手动排课页面,点击退出后返回排课管理主页面 |
(9) 班级管理 - 添加班级测试用例如表 3 - 11 所示:
表 3 - 11添加班级测试用例
|
前置条件 |
输入数据 |
预期结果 |
实际结果 |
|
已成功进入系统主页面,点击班级管理菜单 |
班级人数:输入 “147258”;班级名称:输入 “10” |
成功添加班级 “10”,且在班级列表中可搜索到该班级 |
成功添加班级 “10”,且在班级列表中可搜索到该班级 |
(10) 班级管理 - 删除班级测试用例如表 3 - 12 所示:
表 3 - 12删除班级测试用例
|
前置条件 |
输入数据 |
预期结果 |
实际结果 |
|
已成功添加班级 “10” |
在搜索框输入 “147258”,点击搜索按钮,点击删除按钮并确认 |
班级 “10” 从班级列表中删除,搜索无结果 |
班级 “10” 从班级列表中删除,搜索无结果 |
(11) 用户管理 - 添加用户测试用例如表 3 - 13 所示:
表 3 - 13添加用户测试用例
|
前置条件 |
输入数据 |
预期结果 |
实际结果 |
|
已成功进入系统主页面,点击用户管理菜单 |
用户名:输入 “test147”;密码:输入 “123456”;启用状态:启用 |
成功添加用户 “test147”,且在用户列表中可搜索到该用户 |
成功添加用户 “test147”,且在用户列表中可搜索到该用户 |
(12) 用户管理 - 删除用户测试用例如表 3 - 14 所示:
表 3 - 14删除用户测试用例
|
前置条件 |
输入数据 |
预期结果 |
实际结果 |
|
已成功添加用户 “test147” |
在搜索框输入 “test147”,点击搜索按钮,点击删除按钮并确认 |
用户 “test147” 从用 |
|
四、测试过程
4.1开始录制脚本:
点击打开Selenium IDE插件,创建一个New Project;
图4-1 创建空白测试
我们这个课设实验是利用Selenium来验证选课管理系统的功能,点击Record来录制一个脚本:
图4-2 开始录制脚本
点击“确定”后进入网站主页(http://122.51.72.16:7999/):
图4-3 进入选课系统主页
然后这里我们选择课程管理功能进行测试,如下图所示:
图4-4 课程管理录制页面页面
输入课程号,课程名等信息后实现对课程的添加:
图4-5 课程添加界面
接着我进行了对新添加的课程进行查询,查看是否成功添加课程,在查询到后我对该课程进行修改和删除操作:
图4-6 课程查询界面
图4-7 课程修改界面
4.2 回放录制脚本:
录制完成后,点击按钮,由于没有加入检查点,故而结果都是Done,出现如下图:
图4-8 脚本回放完成界面
4.3 其他子系统录制回放
鉴于每个模块如果都像上面的模块写会显得实验报告比较乱,下面我将只展示录制运行成功的截图。
图4-9 排课脚本回放成功完成界面
图4-9 教室管理脚本回放成功完成界面
图4-10 教师管理脚本回放成功完成界面
图4-11 绑定课程管理脚本回放成功完成界面
4.4 编写自动化功能测试的python代码
项目代码结构
程序代码运行成功页面:
图4-12 课程管理功能运行成功界面
图4-12 教室管理功能运行成功界面
图4-12 排课功能运行成功界面
图4-13班级管理功能运行成功界面
图4-14用户管理功能运行成功界面
五、测试结果分析
由于Selenium可以实现自动化测试,但是也是因此很容易出现元素被遮挡而导致的执行操作失败的问题:
比如下面的情况,由于我在测试时使用的浏览器最大化而导致“添加操作成功”的弹窗元素遮挡住了“查询”这一元素,而导致元素不一致识别不出导致的报错。
图5-1 查询元素被遮挡界面
图5-2 测试不成功界面
最后我将页面的大小在Selenium软件和Python程序用统一。
通过使用Selenium软件带有的元素定位功能,确定统一的元素。
图5-3 元素定位功能界面
具体操作方法为选中元素后查看。
图5-4 元素操作(定位、查看)功能界面
这样成功解决了元素的问题。
六、课设小结及心得体会
Selenium 作为开源自动化测试工具,其多语言支持和跨浏览器兼容性使其成为 Web 测试的核心方案。通过本次课设,我不仅掌握了从需求分析到测试执行的完整流程,更深刻体会到 “工具只是载体,逻辑与思维才是核心”—— 例如,在处理复杂页面交互时,需结合 DOM 结构分析、等待策略设计和异常处理逻辑,才能构建健壮的自动化测试体系。
然而,通过这次实验,我也发现了自己的一些不足,比如对Selenium逻辑了解不全面,导致中途出现了元素遮挡问题。而且平时的缺乏对于这些工具的利用,使得面对如此多的按钮却不知从何做起。这也是给自己一个警示,想要学好任何一门知识或者工具,都要花大量精力去钻研,没有努力就没有收货。不过总的来说,还是要感谢刘丹老师的指导和同学的帮组,才能使得我顺利完成这次课程,再次感谢!
核心收获:
- Selenium 自动化测试流程掌握
通过 Selenium IDE 录制基础操作流程(如登录、添加课程、删除班级等),直观理解了 “操作录制→脚本优化→断言验证” 的核心测试链路。例如,在录制课程管理模块时,通过 IDE 生成的代码框架,进一步手动添加了显式等待(WebDriverWait)和断言(assert),确保动态加载元素的稳定性和功能逻辑的正确性。
- 跨模块测试与异常处理
在测试 “添加教室→搜索教室→删除教室” 流程时,学会了通过 Page Object 模型 封装页面元素和操作,提高代码复用性。例如,将教室管理页面的搜索框、添加按钮等元素封装为 ClassRoom 类的属性,避免重复定位元素的冗余代码。
针对 “元素被遮挡” 导致的点击失败问题(如添加成功弹窗覆盖查询按钮),通过 滚动页面到元素位置(scrollIntoView())和 强制点击等方法解决,深刻理解了 Selenium 处理动态页面的灵活性。
七、参考文献
[1] 张瑾,杜春晖. 自动化软件测试[M]. 北京:机械工业出版社,2008
[2] 李晓鹏,夜无雪。从零开始学 Selenium 自动化测试(基于 Python・视频教学版)[M]. 北京:机械工业出版社,2020.
[3] 梁杰。自动化测试最佳实践:Selenium WebDriver 架构解析与实战 [M]. 北京:人民邮电出版社,2018.
[4] Selenium 官方文档. https://www.selenium.dev/documentation/

浙公网安备 33010602011771号