无效等价类的设计要点
等价类划分把输入域切成有效与无效两大类:无效等价类验证系统在非法输入下的防御行为——报错是否明确、兜底是否符合设计、数据是否被污染。设计要点是「每条无效类单独成用例」:多条非法输入混在一起时,第一个校验失败就会短路后面的检查,剩下的防御逻辑等于没测。无效类也要覆盖设计上的容错约定,例如空白串被自动裁剪属于明确行为而非缺陷。
设计要点
- 每类无效输入单独一条用例,不与其他无效输入组合。
- 断言错误码、提示文案与数据未被写入三层。
- 特殊值归入独立无效类:空、null、超长、格式错、负数。
- 区分「拒绝」与「容错」设计:自动裁剪或取默认值是约定,断言按约定写。
- 无效类用例编号与设计清单对应,评审时逐条核对。
基本信息
| 对应方法 | 等价类划分的无效侧:一类非法输入就是一个等价类 |
|---|---|
| 用例数量 | 每个无效类至少一条用例,宁可多不可并 |
| 断言层次 | 报错内容、错误码、数据状态三处 |
| 常见无效类 | 类型错、空值、超限、越界、格式错、特殊字符 |
| 与边界配合 | 边界两侧的越界值既属于边界值也属于无效类 |
无效类核对表(示例)
| 无效类 | 示例 | 断言要点 |
|---|---|---|
| 类型错 | 「abc」作为年龄输入 | 报错且原值不被写入 |
| 空值 | null、空白串 | 拒绝或提示必填,不落默认值 |
| 超限 | 超长文本、超过上限的数值 | 给出上限提示并阻断提交 |
| 越界与特殊 | 负数、全角符号 | 范围校验与编码处理正确 |
成对设计示意
成对设计示意
有效类:18~60 的整数 -> 期望接受
无效类 A:非数字「abc」 -> 期望提示格式错误
无效类 B:17(下界外一档) -> 期望提示范围错误
无效类 C:61(上界外一档) -> 期望提示范围错误
无效类 D:空值 -> 期望提示必填
# 每条独立成用例:短路问题不复存在多条无效输入混在一条用例里,执行时只看到首个报错,后置校验可能被跳过。
无效类不止「看到报错」:还要核对异常路径没有把数据写脏——校验失败的请求不应留下任何半成品记录。
服务端与前端双重校验都要测:前端拦住不代表接口安全,绕过前端直连接口的无效输入才是防线深处。