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

背景

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

相关推荐
软件检测小牛玛14 小时前
具备软件功能测试资质的机构哪家更权威?山东软件测评机构 中承信安
功能测试·单元测试·软件测试报告·软件测评机构
闻哥17 小时前
从测试坏味道到优雅实践:打造高质量单元测试
java·面试·单元测试·log4j·springboot
姚青&21 小时前
Pytest 测试用例编写
测试用例·pytest
Warren981 天前
Pytest Fixture 作用域与接口测试 Token 污染问题实战解析
功能测试·面试·单元测试·集成测试·pytest·postman·模块测试
知行合一。。。1 天前
程序中的log4j、stderr、stdout日志
python·单元测试·log4j
测试秃头怪1 天前
面试大厂就靠这份软件测试八股文了【含答案】
自动化测试·软件测试·python·功能测试·面试·职场和发展·单元测试
测试杂货铺1 天前
软件测试面试题大全,你要的都在这。。
自动化测试·软件测试·python·功能测试·面试·职场和发展·测试用例
测试大圣1 天前
软件测试基础知识总结(超全的)
软件测试·python·功能测试·测试工具·职场和发展·单元测试·测试用例
程序员小远2 天前
UI自动化测试用例管理平台搭建
自动化测试·软件测试·python·selenium·测试工具·职场和发展·测试用例