针对单元测试、集成测试、系统测试和验收测试(用户测试)各自的目标和测试内容不同,设计对应的各类测试用例

背景

为了给新项目设计单元测试、集成测试、系统测试和验收测试(用户测试)各个阶段的测试用例。首先需要理清每个阶段的侧重点,各自的目标和测试内容依据是看这位大佬的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测试)。

相关推荐
tianyuanwo5 小时前
构建质量的堡垒:一文读懂单元测试、集成测试、系统测试与回归测试
单元测试·集成测试·系统测试·回归测试
okra-13 小时前
测试分析报告
测试用例·测试覆盖率
小熊出擊2 天前
[pytest] 一文掌握 fixture 的作用域(scope)机制
python·功能测试·单元测试·自动化·pytest
程序员二黑2 天前
告别硬编码!5个让Web自动化脚本更稳定的定位策略
面试·单元测试·测试
Sic_MOS_780168243 天前
超高密度2kW GaN基低压电机驱动器的设计
人工智能·经验分享·汽车·集成测试·硬件工程·能源
小熊出擊3 天前
[pytest] autouse 参数:自动使用fixture
python·测试工具·单元测试·自动化·pytest
北岛三生3 天前
Imatest-Wedge模块
图像处理·数码相机·测试工具·测试用例·模块测试
北岛三生4 天前
Imatest-Star模块(西门子星图)
图像处理·数码相机·测试工具·测试用例·模块测试