1. State Transition Testing 的 0-switch、1-switch、N-switch 覆盖的工程取舍?
状态转换测试中的 0-switch、1-switch、N-switch 覆盖各自的含义是什么?在工程上如何取舍?
- 0-switch/1-switch/N-switch 的定义
- 各覆盖级别的路径长度与成本
- 工程取舍依据
状态转换测试中,switch 指"连续迁移的次数"。0-switch 覆盖是"每个迁移至少执行一次"(即每个状态到目标状态的一次转换),是最基础的覆盖,用例数等于迁移数;1-switch 覆盖是"连续两条迁移的序列至少执行一次"(长度2的路径),能发现"连续迁移衔接不当"的缺陷;N-switch 覆盖是"连续 N 条迁移的序列至少执行一次",覆盖长度 N+1 的路径,路径数随 N 指数增长。工程取舍:0-switch 成本最低、覆盖最基本的行为正确性,适合大多数场景;当状态间存在复杂衔接、需要验证连续状态序列时用 1-switch;N-switch 仅用于状态机复杂、路径衔接风险高且安全的场景,因为它路径爆炸、用例成本极高。通常默认 0-switch,按风险升级到 1-switch,N-switch 需谨慎。
switch 覆盖度量的是"状态迁移路径"的粒度。0-switch 只验证每条迁移本身,1-switch 验证"迁移-迁移"的衔接,N-switch 验证更长序列。覆盖度越高,缺陷发现能力越强,但成本指数增长,因此工程上按状态机复杂度与风险分级选择,避免无谓的 N-switch 爆炸。