返回业务与用例设计模块
Business Testing / Tutorial 02

测试用例设计实战教程

不要从“我要写多少条用例”开始,而要先回答“这个业务可能在哪里出错”。

10 个章节5 种设计方法10 条完整下单用例
01

先看懂这次要测试的下单规则

需求不是用例

你要测试的业务

用户购买 1~5 件商品,填写收货地址,可以使用“满 100 元减 20 元”优惠券,然后提交订单。系统只有在库存足够、地址有效时才能创建订单,同一次提交不能产生重复订单。

一次下单会连续经过五个业务节点
01选择商品
02填写地址
03使用优惠券
04提交订单
05校验并创建

把一句需求拆成可以追问的规则

对象已知规则还要问清楚
商品数量每次下单 1~5 件0、1、5、6 件时系统如何处理?
库存库存不少于购买数量才可下单校验时库存变化怎么办?
优惠券订单满 100 元减 20 元正好 100 元是否可以使用?
收货地址姓名、手机号和详细地址必填格式错误后已填内容是否保留?
重复提交同一次确认只能创建一笔订单连续点击和请求重试是否幂等?
需求里写出的通常只是正常路径。真正影响用例质量的,往往是没有写清楚的边界、组合、异常和状态变化。
02

从业务流程中提取测试点

先覆盖风险

先沿着用户操作向后追踪:页面收到了什么输入,系统执行了哪些规则,哪些数据发生了变化,失败后又要恢复什么。

围绕一次提交,从四个方向提取测试点
01

输入

数量、地址、优惠券

02

规则

库存、金额、资格

03

数据

订单、库存、券状态

04

异常

超时、重试、重复提交

从输入找测试点

  • 商品数量是否合法。
  • 地址必填项和格式是否正确。
  • 优惠券状态和使用门槛是否满足。
  • 重复点击是否被识别为同一次提交。

从结果找测试点

  • 页面提示和订单金额是否正确。
  • 订单是否只创建一次。
  • 库存是否按购买数量扣减。
  • 失败时订单、库存和优惠券是否保持原状。
测试点说明“要验证什么”,测试用例说明“在什么条件下、怎么操作、应该看到什么”。先列测试点,再写用例,覆盖会更稳定。
03

用等价类减少重复测试

同类选代表

什么时候使用等价类

当一组输入会触发相同的处理规则时,不需要把每个值都测一遍。可以把它们分成有效类和无效类,再从每一类选择有代表性的数据。

商品数量被分成四类,每一类选择代表数据
无效≤ 0
有效1~5
无效≥ 6
无效非整数

为商品数量划分等价类

类别范围候选数据选择方式
有效类1~5 件1、3、5选择 3 件作为普通有效数据
无效类小于 1 件0、-1选择 0 验证最常见非法输入
无效类大于 5 件6、20选择 6 验证刚刚超限
无效类非整数1.5、文本、空值分别验证类型和必填校验
等价类不是随便挑一个正常值和一个异常值。先确认系统的处理规则是否相同;处理规则不同,就应该拆成不同类别。
04

用边界值盯住最容易出错的位置

边界前后都要测

程序常在“大于还是大于等于”“从 0 还是从 1 开始”这些位置出错。找到规则的分界线,再检查边界值本身和它前后的值。

购买数量允许 1~5 件,重点检查两个边界的前后
0
1
2
4
5
6
最小值附近有效区间最大值附近

下单业务中的边界数据

边界测试数据预期判断
最小值附近0、1、20 被拒绝;1、2 可以进入库存校验
最大值附近4、5、64、5 可以购买;6 被拒绝
优惠门槛附近99.99、100.00、100.01门槛前不可用,达到门槛后可用
库存临界点购买数 = 库存 - 1、库存、库存 + 1足量成功,超量失败且不扣库存
如果只能保留少量用例,优先保留边界值,而不是在同一个有效区间里重复选择多个普通值。
05

用判定表覆盖规则组合

条件组合不遗漏

库存和地址会共同决定下单结果

只看单个条件,很容易漏掉“库存不足并且地址也错误”这样的组合。判定表把条件写在上半部分,把每种组合对应的动作写在下半部分。

从业务条件到判定表用例
列条件库存、地址
列组合是 / 否
写动作创建或提示
生成用例每列一条

库存与地址判定表

条件或动作规则 1规则 2规则 3规则 4
库存足够
地址有效
创建订单
提示地址错误
提示库存不足
条件越多,组合数量增长越快。先删除业务上不可能出现的组合,再合并处理结果完全相同且风险一致的组合。
06

用状态迁移检查订单流转

不仅看当前结果

订单不是一个静止的数据记录。创建、支付、取消和完成都会改变状态,而且不是任意两个状态之间都能直接跳转。

订单主状态与取消分支
待支付创建订单
已支付支付成功
已完成确认收货
已取消待支付状态下取消或超时关闭

合法迁移

  • 待支付 → 已支付:支付成功。
  • 待支付 → 已取消:用户主动取消或超时关闭。
  • 已支付 → 已完成:履约完成并确认收货。

非法迁移

  • 已取消订单不能再次支付。
  • 已完成订单不能回到待支付。
  • 同一支付通知重复到达不能重复改变状态。
状态用例要同时验证三个部分:能否执行操作、状态是否正确变化、重复或非法操作是否被拒绝。
07

把正常流程和异常流程连起来

按真实路径执行
同一个提交动作,会走向三类业务路径
基本流

成功创建订单

备选流

修改后继续提交

异常流

安全失败并恢复

基本流

选择商品 → 填写地址 → 使用优惠券 → 提交订单 → 创建成功。

备选流

不使用优惠券、修改购买数量、切换地址后仍能正确提交。

异常流

库存不足、优惠券失效、接口超时或重复提交时,系统安全失败并给出下一步。

异常之后还要继续检查

  • 用户能否修改数据后重新提交。
  • 请求超时后再次提交会不会产生重复订单。
  • 失败操作有没有错误扣减库存或占用优惠券。
  • 页面提示是否告诉用户问题和处理方式。
08

把测试点写成别人能执行的用例

条件、动作、结果
一条用例标题先把条件、动作和结果说清楚
条件库存少于购买数量
动作提交订单
结果失败且不扣库存

用例标题统一使用“当……时,……”

“当”后面写清触发条件,“时”后面写操作或系统应该表现出的结果。例如:当库存少于购买数量时,提交订单失败。

一组可以直接执行的商城下单用例

优先级用例标题前置条件关键预期
P0当库存等于购买数量且地址有效时,订单创建成功库存 3;购买 3 件;地址有效只创建一笔订单,库存变为 0,金额正确
P0当库存少于购买数量时,提交订单失败库存 2;购买 3 件提示库存不足,不创建订单、不扣库存
P0当连续点击两次提交时,仅创建一笔订单库存充足;地址有效两个请求对应同一业务结果,只扣减一次库存
P1当订单金额正好为 100 元时,满减券生效100 元订单;满 100 减 20 券实付 80 元,优惠明细正确
P1当订单金额为 99.99 元时,满减券不可用99.99 元订单;满 100 减 20 券提示未达到门槛,实付金额不变
P1当手机号少于 11 位时,订单无法提交手机号 10 位定位手机号错误,其他地址内容保留
P1当创建订单接口超时后重试时,不会生成重复订单首次请求结果未知查询或重试后仍只有一笔订单
P1当优惠券已过期时,订单按原价创建库存和地址有效;券已过期明确提示不可用,金额按原价计算
P2当备注为空时,订单可以正常创建未填写备注订单成功,备注保存为空
P2当备注达到最大长度时,内容完整保存备注达到允许上限不截断、不溢出,订单成功
一条用例只验证一个主要目标。预期结果不要只写“提示正确”,要写出页面、接口和关键数据应该发生或不应该发生的变化。
09

检查优先级、覆盖和可执行性

写完不是结束
优先级来自风险,不来自用例编号
P0核心交易与资金数据

立即阻断发布

P1主要规则与常见异常

本轮应完成

P2低频体验与弱影响场景

结合时间安排

优先级是否准确

  • P0:交易中断、资金错误、重复订单和核心数据损坏。
  • P1:主要业务规则、常见异常和重要边界。
  • P2:低频输入、非核心体验和弱影响场景。
  • 不要为了满足固定比例而调整真实风险等级。

是否覆盖所有测试点

  • 每条需求规则至少有一条对应验证。
  • 有效、无效和边界数据都有覆盖。
  • 关键条件组合没有遗漏。
  • 合法与非法状态迁移都有覆盖。
  • 异常后数据一致性和恢复路径已检查。

这组 10 条用例的分布

P0 核心风险3 条 / 30%
P1 主要规则5 条 / 50%
P2 低频体验2 条 / 20%

比例用于观察用例结构,不是必须达到的配额。业务风险变化后,用例比例也应该跟着变化。

提交评审前,按五道检查逐项过滤
01规则

都映射到用例

02数据

有效、无效、边界

03组合

关键条件不遗漏

04状态

合法与非法流转

05表达

别人可以直接执行

10

独立完成一轮用例设计

交付可执行结果

练习:新增“会员积分抵扣”规则

  1. 补充规则:100 积分抵扣 1 元,每单最多抵扣订单金额的 20%。
  2. 列出需要向产品确认的问题和可能的业务风险。
  3. 分别使用等价类、边界值和判定表提取测试数据。
  4. 补充积分冻结、扣减、退回涉及的状态变化。
  5. 按“当……时,……”格式编写不少于 12 条用例。
  6. 标记优先级,并说明每条 P0 用例阻断发布的理由。
  7. 建立测试点与用例的对应关系,确认没有遗漏。

需求已拆清

  • 对象和规则明确
  • 边界和异常明确
  • 状态变化明确
  • 数据影响明确

方法选得对

  • 输入用等价类
  • 数值用边界值
  • 组合用判定表
  • 流转用状态迁移

用例可交付

  • 标题通俗可执行
  • 前置数据明确
  • 预期结果可验证
  • 优先级有依据

下一步:测试设计方法地图

掌握常见业务用例设计后,你可以继续把更多方法放进同一张地图,根据问题类型选择工具,而不是机械套用固定模板。

核心方法等价类 · 边界值 · 判定表
复杂组合因果图 · Pairwise · 分类树
动态发现错误推测 · 探索性测试
开始学习测试设计方法地图

掌握基础方法后,继续使用测试设计方法地图,根据不同业务风险选择更合适的设计技术。

继续学习测试设计方法地图