针对单元测试、集成测试、系统测试和验收测试(用户测试)各自的目标和测试内容不同,设计对应的各类测试用例 - 详解
2025-10-20 19:34 tlnshuju 阅读(0) 评论(0) 收藏 举报背景
为了给新项目设计单元测试、集成测试、平台测试和验收测试(用户测试)各个阶段的测试用例。首先需要理清每个阶段的侧重点,各自的目标和测试内容依据是看这位大佬的https://cloud.tencent.com/developer/article/2140352。
然后我们以一个具体的模块为例,来设计不同级别的测试用例。
假设模块:用户登录模块
模块功能描述:
- 输入:用户名、密码
- 处理:验证用户名和密码是否与数据库中的记录匹配。
- 输出:登录成功(并返回用户信息)或登录失败(并返回具体错误原因,如用户名不存在、密码错误等)。
1. 单元测试用例
测试对象:login(username, password)
函数/方法。
用例ID | 测试输入 | 预期输出 | 测试目的 |
---|---|---|---|
UT-001 | 用户名: “admin”, 密码: “correct_password” | 返回:成功,用户信息对象 | 验证正常登录路径 |
UT-002 | 用户名: “admin”, 密码: “wrong_password” | 返回:失败,错误信息“密码错误” | 验证密码错误处理 |
UT-003 | 用户名: “non_existent_user”, 密码: “any” | 返回:失败,错误信息“用户名不存在” | 验证用户名不存在处理 |
UT-004 | 用户名: “”, 密码: “any” | 返回:失败,错误信息“用户名不能为空” | 验证空用户名处理(边界/数据有效性) |
UT-005 | 用户名: “admin”, 密码: “” | 返回:失败,错误信息“密码不能为空” | 验证空密码处理(边界/数据有效性) |
UT-006 | 用户名: null , 密码: null | 抛出明确的异常(如“参数不能为null”) | 验证错误处理(异常路径) |
UT-007 | 用户名: 超长字符串(如1000个字符) | 返回:失败,错误信息“用户名长度超限” | 验证输入长度限制(边界测试) |
测试依据:函数内部的代码逻辑、注释、该模块的详细设计文档。
2. 集成测试用例
测试对象:用户登录模块 + 数据库模块(或用户信息管理模块)的接口。
用例ID | 测试场景/模块交互 | 预期结果 | 测试目的 |
---|---|---|---|
IT-001 | 登录模块调用数据库查询接口,传入正确的用户名 | 数据库返回正确的用户记录,登录模块成功验证密码 | 验证模块间数据传输正常 |
IT-002 | 登录模块调用数据库查询接口,传入不存在的用户名 | 数据库返回空记录,登录模块正确返回“用户名不存在” | 验证模块对异常数据的协同处理 |
IT-003 | 数据库连接失败 | 登录模块捕获到数据库异常,并返回“系统繁忙,请稍后重试”等友好信息 | 验证错误处理(单模块缺陷对系统的影响) |
IT-004 | 登录成功后,登录模块调用日志记录模块记录登录行为 | 日志系统中成功生成一条登录日志 | 验证与第三方模块的功能协作 |
测试依据:单元测试通过的模块、概要设计文档(定义了模块间的接口)。
3. 系统测试用例
测试对象:完整的“用户登录”功能,包括前端界面、后端服务、数据库等。
用例ID | 测试步骤 | 预期结果 | 测试类型 |
---|---|---|---|
ST-001 | 1. 打开登录页面 2. 输入正确的用户名和密码 3. 点击“登录”按钮 | 1. 页面跳转到系统主页 2. 页面顶部展示欢迎信息,如“欢迎,admin” | 功能测试 |
ST-002 | 1. 输入错误密码后点击登录 | 页面清晰提示“用户名或密码错误”,且密码框被清空 | 功能测试 |
ST-003 | 1. 不输入用户名直接点击登录 | 页面提示“请输入用户名”,光标定位到用户名输入框 | 功能测试/易用性测试 |
ST-004 | 1. 启用浏览器的“后退”按钮 after login | 不应退回到登录页,或退回到登录页后再次前进应直接进入主页(避免安全漏洞) | 安全性测试 |
ST-005 | 1. 模拟100个用户同时登录 | 系统响应时间在可接受范围内(如<3秒),无崩溃 | 性能测试 |
ST-006 | 1. 在不同的浏览器(Chrome, Firefox, Edge)上执行ST-001 | 特性正常,页面布局正确 | 兼容性测试 |
ST-Smoke-001 | 在每次新版本构建后,执行ST-001和ST-002 | 基本登录功能正常 | 冒烟测试 |
ST-Regression-001 | 在修改了密码加密算法后,重新执行所有与登录相关的测试用例 | 所有机制依然正常 | 回归测试 |
测试依据:需求规格说明文档(如:用户必须能够通过用户名和密码登录系统)。
4. 验收测试用例
测试对象:整个系统,从最终用户的角度验证。
用例ID | 测试场景(用户故事形式) | 预期结果(用户期望) | 备注 |
---|---|---|---|
UAT-001 | 作为一名已注册用户,我希望在首页输入我的账号和密码,以便进入系统使用功能。 | 我能顺利进入系统主界面,并看到我定制的仪表盘。 | 对应ST-001 |
UAT-002 | 作为一名已注册用户,当我输错密码时,我希望系统能明确告诉我原因,以便我重新输入。 | 体系提示“密码错误”,我不会误以为是账号难题。 | 对应ST-002 |
UAT-003 | 作为一名新用户,当我第一次登录时,系统应提示我修改初始密码。 | 登录后直接跳转到修改密码页面,并强制我达成修改。 | 可能是一项特定的业务需求 |
UAT-004 | 作为管理员,我查看《用户手册》,其中描述的登录步骤应和实际体系一致。 | 我能够按照手册快速达成登录运行。 | 文档验收 |
UAT-005 | 作为用户,整个登录过程不应超过5秒。 | 从点击登录到进入主页,感觉流畅,无长时间等待。 | 非功能性需求验收 |
测试依据:用户合同、需求方确认的需求文档、验收标准。
总结
通过依据以上示例能够看出:
- 单元测试:关注代码内部逻辑,粒度最细。
- 集成测试:关注模块/服务间的接口和协作。
- 系统测试:关注整个系统是否满足需求规格,包括效果和非功能需求。
- 验收测试:从业务和用户角度验证架构是否“可用”和“好用”。
在实际计划中,每种测试的用例都会比示例更详尽,并且会使用不同的测试工具和办法(如JUnit用于单元测试,Selenium用于系统UI测试)。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/941529.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!相关文章
【STM32项目开源】基于STM32的智能宠物防丢监控便捷的系统
【STM32项目开源】基于STM32的智能宠物防丢监控便捷的系统pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consola…
P11233 [CSP-S 2024] 染色题解
参考了这篇题解,以及机房大佬的讲解
题目描述
给定一个长度为 \(n\) 的正整数数组 \(A\),其中所有数从左至右排成一排。
你需要将 \(A\) 中的每个数染成红色或蓝色之一,然后按如下方式计算最终得分:
设 \(C\) 为长…
hive udaf 输入输出处理参考手册 - 指南
pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …
位运算(早晚得学会)
在二进制中,数字的奇偶性可以通过最低位(最右边的一位)来判断:如果一个数是奇数,它的二进制最低位一定是 1(例如:3 是 11,5 是 101)。
如果一个数是偶数,它的二进制最低位一定是 0(例如:2 是 10,4 是 100…
2025年市面上工程石材产品排名前十:选购指南与品牌深度解析
摘要
随着建筑行业标准化与品质化需求提升,工程石材市场迎来新一轮发展机遇。据中国石材协会统计,2024年工程石材市场规模突破8000亿元,同比增长12.3%。本文基于产品性能、市场口碑、服务能力等维度,为您呈现权威的…
2025年市面上工程石材产品排名前十:权威榜单与选择指南
摘要
工程石材行业在2025年持续蓬勃发展,随着建筑和装饰市场的需求增长,优质石材供应商成为关键。本文基于用户搜索意图,提供市面上工程石材产品的排名前十榜单,涵盖品牌实力、口碑评分和核心优势,旨在帮助用户快…
深入解析:【C++】继承
pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …
利用错误配置的postMessage()函数实现DOM型XSS攻击
本文详细分析了三种通过错误配置postMessage函数实现DOM型XSS攻击的场景,包括无源验证检查、使用indexOf函数进行源验证以及白名单源存在XSS漏洞的情况,并提供了相应的漏洞代码和利用方法。利用错误配置的postMessag…
听说今年很多应届硕士很难找到工作...
听说今年很多应届硕士很难找到工作...听说今年很多应届硕士很难找到工作,投递简历的人和岗位机会比例通常是300:1的概率。本文适合没开始工作的应届生、Gap大于1年的人、没去过大厂工作的人...分享一个提高约面率的小…
开源 C++ QT QML 创建(四)复杂控件--Listview
pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …
洛谷 P7380 [COCI 2018/2019 #6] Konj 题解
P7380 [COCI 2018/2019 #6] Konj 题解
题目传送门。
题意
给定 \(n\) 条线段两端端点坐标,保证一定与 \(x\) 轴或 \(y\) 轴平行。求最小的矩阵能表示出从点 \(T\) 出发到达的所有点。
如果两条线段相交或间接可以走到…
意大利居留 办理 看小红书上的材料就行,部分材料可以到按手印再补交
到了邮局之后 取个寄信号 我的是P开头
然后给他信封和材料
最后签3个名字 然后刷卡100零几欧 输入pin码 ok
机器学习领导者分享AI技术与行业洞见
本文介绍了某中心机器学习业务负责人在人工智能领域的专业见解,涵盖分布式模型训练、自然语言处理、计算机视觉等技术应用,以及AI行业发展趋势和人才培养策略,为技术从业者提供有价值的参考。Allie K. Miller希望帮…
el-upload上传配合$confirm使用的问题
现象:el-upload如果再on-remove,先调用$confirm 点了取消,也删了文件。
解决方案:
1、使用:before-remove钩子<el-uploadref="upload"class="m-l-10":limit="1"action="&qu…
我写过的动态规划问题的状态表示与转移汇总
众所周知,在写 dp 问题时只要想出来状态表示和转移方程就能把一道题写的差不多了,所以在这里整理一下我写过的 dp 问题的解法,方便我后面举一反三
背包动态规划
线性动态规划
Luogu P1359 租用游艇 橙
题目链接\(n\…