如何写出高质量的测试用例

怎么通过「需求文档+原型图+技术文档」写出高质量的测试用例,尤其是在产品需求写的很模糊的场景下?当下AI智能体已经可以根据产品需求输出测试用例了,但是大模型对于不同业务的理解还会存在一些偏差,导致输出的用例质量不高,当然随着不断地训练,大模型学习了更多的项目相关的需求文档和技术文档后,再进行测试用例的输出,后期会输出更高质量的测试用例。通过AI进行测试用例的输出暂时先不展开,后面会继续跟进相关内容,这篇文档主要还是想聊下在不借助AI大模型场景下,我们如何写出高质量的测试用例。

一、三类文档的测试重点与输出用例类型

1. 需求文档 → 测「业务规则」

重点抓取内容

  • 业务流程(如登录→下单→支付→退款)

  • 约束条件(必填、长度、格式、权限)

  • 异常提示文案(如"请输入有效手机号")

输出

  • 功能测试用例主体(覆盖核心业务流程与规则验证)
2. 原型图 → 测「界面+交互」

重点抓取内容

  • 控件位置(按钮、输入框、下拉菜单、弹窗)

  • 交互逻辑(可点击/灰显、跳转逻辑、返回/刷新)

  • 字段属性(必填/可选、可编辑性)

输出

  • 界面测试用例(布局、控件可见性)

  • 易用性测试用例(操作路径合理性)

  • 流程跳转测试用例(页面间导航逻辑)

3. 技术文档 → 测「逻辑+边界」

重点抓取内容

  • 接口字段(长度、类型、枚举值)

  • 数据库字段(长度、精度、约束)

  • 状态机(状态流转规则,如待支付→已支付→已取消)

  • 前后端校验规则(如服务端必填校验)

输出

  • 边界值测试用例(如字段最大/最小值)

  • 异常测试用例(如非法输入、状态异常)

  • 数据一致性测试用例(如接口返回与数据库存储是否匹配)

二、需求不详细时的高质量用例编写方法

1. 显性需求全覆盖

操作示例

  • 原始需求:"用户可以修改手机号"

  • 拆分用例:

    • ✔️ 输入正确手机号 → 修改成功

    • ✔️ 输入已存在手机号 → 提示重复

    • ✔️ 输入空 → 提示"不能为空"

    • ✔️ 输入格式错误 → 提示"格式不正确"

    • ✔️ 未登录 → 提示"请先登录"

    • ✔️ 验证码正确/错误/过期 → 分别验证结果

2. 测试设计方法自动补全

必用方法

  • 等价类划分

    • 有效类(合法数据)、无效类(非法数据)
  • 边界值分析

    • 长度边界(如手机号11位)、数值边界(如年龄0-150)
  • 场景法

    • 正常流程、中断流程(断网/杀进程)、逆向流程(取消/返回)
  • 错误推测法

    • 快速点击、重复提交、权限越界(普通用户访问管理员数据)
3. 从原型+技术文档反推需求

强制测试规则

  • 原型有"删除按钮" → 必须测删除功能、二次确认弹窗

  • 技术文档规定字段长度varchar(20)→ 测试20位/21位输入

  • 接口返回枚举值0/1/2→ 必须覆盖所有枚举场景

​4. 主动提问确认模糊点

需明确的问题清单

  • 字段长度限制(如"用户名最多输入多少字符?")

  • 异常处理规则(如"重复提交如何拦截?")

  • 权限控制(如"普通用户能否查看他人数据?")

  • 兼容性要求(如"是否支持IE浏览器?")

输出

  • 问题记录表(作为用例设计的补充依据)

三、高质量用例的四大标准

1. 可独立执行
  • ❌ 模糊用例:

    "验证支付功能是否正常"

  • ✅ 明确用例:

    "使用余额支付100元,验证订单状态变为'已支付'且账户余额减少100元"

2. 预期结果明确
  • ❌ 模糊预期:

    "系统应正确处理"

  • ✅ 明确预期:

    "返回HTTP状态码200,且响应JSON包含success:true字段"

3. 覆盖全面性
  • 覆盖维度

    • 正常场景

    • 异常场景(如网络异常、数据错误)

    • 边界值(如输入框最大长度)

    • 权限场景(如管理员/普通用户权限差异)

    • 兼容性场景(如不同浏览器/设备)

4. 简洁无冗余
  • ❌ 冗余用例:

    "测试用户名长度为1位→失败;测试用户名长度为2位→失败;..."

  • ✅ 精简用例:

    "测试用户名长度为0~5位→均提示'长度需6~20位"

四、万能写作流程(直接套用)

  1. 读需求​ → 拆解功能点(如"登录功能包含账号、密码、验证码、密码非明文展示")

  2. 看原型​ → 拆解页面元素(如"登录按钮灰色不可点")

  3. 看技术文档​ → 拆解字段规则(如"密码字段需加密存储")

  4. 用测试方法生成用例​ → 等价类+边界值+场景法覆盖

  5. 模糊点反推确认​ → 提问产品/开发补全细节

  6. 补齐异常/权限/兼容性​ → 确保覆盖全面

通过以上结构化整理,可快速生成清晰、可执行的测试用例,兼顾业务规则、界面交互与底层逻辑验证。

相关推荐
llilian_161 小时前
信号失真度测试仪 自动失真测试仪 低失真度自动测量仪为各行业精准赋能 自动失真仪
网络·功能测试·单片机·测试工具
Kingfar_14 小时前
智能座舱HMI/HUD人机交互测评体系:基于多模态仿真与数据驱动的全流程解决方案
科技·人机交互·可用性测试·用户体验
汽车仪器仪表相关领域10 小时前
重载工况制动闭环:NHZ-20 型加载式制动检测台机动车安全检测全场景实战指南
人工智能·单元测试·压力测试·可用性测试·安全性测试
oscar99911 小时前
给 Claude Code 装上浏览器:Chrome 集成测试版详解
前端·chrome·集成测试·浏览器
无籽西瓜a12 小时前
【西瓜带你学设计模式 | 第十期 - 外观模式】外观模式 —— 子系统封装实现、优缺点与适用场景
java·后端·设计模式·软件工程·外观模式
无籽西瓜a12 小时前
【西瓜带你学设计模式 | 第九期 - 代理模式】代理模式 —— 静态与动态代理实现、优缺点与适用场景
java·后端·设计模式·软件工程·代理模式
张较瘦_21 小时前
软件工程 | 需求三层次:用正反对比例子,把复杂概念讲明白
大数据·软件工程
qq_452396231 天前
【测试之道】第四篇:分层测试论 —— 金字塔、奖杯与蜂巢:构建你的质量防御阵型
功能测试·软件工程
程序员小远1 天前
Jmeter基础:Jmeter聚合报告详解
自动化测试·软件测试·python·测试工具·jmeter·测试用例·压力测试
极创信息1 天前
信创软件安全加固指南,信创软件的纵深防御体系
java·大数据·数据库·金融·php·mvc·软件工程