- 核心思想:把所有可能输入划分成“有效类”和“无效类”。只需从每一类里挑代表值测试。
- 例子:年龄输入 1–120 合法。
- 有效类:20, 35, 100
- 无效类:-5, 0, 130
👉 优点:减少用例数量,但覆盖常见情况。
- 核心思想:错误最容易发生在边界附近。
- 例子:输入范围 1–100
- 边界值:1, 100
- 临近值:0, 2, 99, 101
👉 常和等价类一起用,防止“临门一脚出 bug”。
- 核心思想:通过逻辑关系(if-then)分析输入条件与输出的对应关系。
- 例子:输入条件 A、B 决定输出 X。
👉 适用于复杂逻辑组合,能系统化生成用例。
- 核心思想:当输入条件很多且组合复杂时,用判定表列出各种组合及期望输出。
- 例子:会员等级 × 是否有优惠券 × 是否节日 → 最终折扣。
👉 很适合业务规则、合同逻辑。
- 核心思想:系统往往有不同状态(登录/未登录、草稿/已提交),输入可能让它转移到另一状态。
- 方法:画状态机图,用例覆盖 有效转移、无效转移。
👉 适合工作流、协议栈、UI 界面。
- 核心思想:以用户的使用场景为主线,设计一整串操作步骤,测试系统是否符合预期。
- 例子:电商下单 → 加购物车 → 支付 → 生成订单 → 发货。
👉 模拟真实用户体验,常用于系统测试和验收测试。
- 核心思想:靠经验“拍脑袋”,去尝试那些开发最容易出错的点。
- 例子:输入空字符串、特殊字符、SQL 注入语句。
👉 经验越多,越能发现奇葩 bug。
- 核心思想:随机输入各种数据或操作,看系统是否崩溃。
👉 常用于容错性和鲁棒性检查,尤其是 UI 应用。