前端知库

属性测试和示例测试应该怎样搭配?

用不变量和生成数据覆盖输入空间,同时保留易读的示例测试表达具体业务场景。

参考答案

示例测试回答“这个具体输入应该得到什么结果”;属性测试回答“对一大类输入,某个不变量始终成立”。例如排序后的长度不变、编码再解码保持等价、缓存容量不超过上限。

属性必须准确表达业务不变量,否则生成更多数据只会放大错误假设。生成器要覆盖边界、空值、Unicode、异常和极端规模;失败时要保留最小化后的反例,方便复现和修复。

两者应互补:示例测试让读者快速理解行为,属性测试发现未想到的组合。属性测试不能替代端到端、无障碍和视觉测试,也不能证明所有外部系统行为正确。