约束型输入与依赖参数
参数之间存在依赖与约束:A 必填则 B 必填、时间区间不可重叠、两个选项互斥。设计测试时先把约束形式化(范围、关联、互斥、时序),再生成两类用例——满足约束的典型与边界、违反约束的拒绝路径。违反约束的用例同样是有效用例:系统必须拒绝并给出明确提示。
基本信息
| 常见类型 | 范围、关联依赖、互斥、时序 |
|---|---|
| 形式化方式 | 约束写成规则清单,与需求编号对应 |
| 满足类用例 | 覆盖约束内的典型值与边界值 |
| 违反类用例 | 验证拒绝行为、提示信息与无副作用 |
| 验证层次 | 前端与接口两侧都要验证,前端不能替代接口 |
| 变更管理 | 约束变化时同步更新两类用例 |
约束示例
约束示例
开始时间 < 结束时间
结束时间 - 开始时间 ≤ 90 天
方案 A 与方案 B 互斥(不可同时选择)
# 违反类用例:倒置时间、91 天、同选 A/B
# 断言:拒绝 + 明确提示 + 数据无副作用约束类型与用例生成
| 类型 | 例子 | 用例设计 |
|---|---|---|
| 范围 | 金额不超过单笔上限 | 等于上限、上限加一 |
| 关联 | 选择方案 A 则字段 B 必填 | 补全 B、缺失 B |
| 互斥 | 两种支付方式不可同选 | 同时选择应被拒绝 |
| 时序 | 开始时间早于结束时间 | 倒序与相等时间的处理 |
典型使用场景
- 表单联动:必填、显示、禁用等联动规则验证。
- 排期系统:时间区间重叠与跨度上限校验。
- 支付配置:互斥选项同时选择的拒绝路径。
- 接口测试:绕过前端直接调接口验证服务端约束。
- 用例生成:把约束形式化成组合剪枝的输入。
- 缺陷复盘:约束类缺陷高发时,反查形式化是否缺失。
约束只停留在口头需求里,用例边界就会与实现不一致。
违反类用例断言三步:拒绝、提示、无副作用(数据未被修改)。
联动表单只测前端校验不够:接口侧约束容易被绕过。