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

怎么通过「需求文档+原型图+技术文档」写出高质量的测试用例,尤其是在产品需求写的很模糊的场景下?当下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. 补齐异常/权限/兼容性​ → 确保覆盖全面

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

相关推荐
程序员小远12 天前
自动化测试基础知识总结
自动化测试·软件测试·python·selenium·测试工具·职场和发展·测试用例
嘿黑嘿呦12 天前
chap 8排序
算法·蓝桥杯·排序算法·软件工程
旧曲重听112 天前
2026前端技术从「夯」到「拉」
前端·程序人生·职场和发展·软件工程
承渊政道13 天前
飞算JavaAI 智能引导背后的多 Agent 协作机制解析:从老旧 Java 后台升级到可运行工程
java·开发语言·spring boot·安全·intellij-idea·软件工程·ai编程
apcipot_rain13 天前
计科八股20260616(1)——堆存中位数、链表判环、黑白测试、敏捷开发与瀑布模型、配置管理、持续集成、池化
数据结构·算法·软件工程
程序员三藏13 天前
Web自动化测试详解
自动化测试·软件测试·python·selenium·测试工具·职场和发展·测试用例
糖果店的幽灵13 天前
软件测试接口测试从入门到精通:接口功能测试实战 - 从理论到实践
软件测试·功能测试·接口测试
糖果店的幽灵13 天前
软件测试接口测试从入门到精通:Python接口自动化 - pytest测试框架
软件测试·python·功能测试·自动化·pytest·接口测试
lisw0513 天前
【计算机科学技术】路由器(route):概念、历史、内容与战略!
机器学习·智能路由器·软件工程