- 从未失败的检查是不可靠的——故意破坏它,以确认它确实会失败。
- 在后果发生的层面进行检查(例如,渲染后的页面,而非仅源代码),因为简单的检查会遗漏失败。
- 可靠性不等于有效性:测量结果可能一致,但测量的内容有误;测试在不相关变换下的不变性。
- 测试数据若已知假设则缺乏说服力;应使用早于问题产生的材料,以避免确认偏误。
- 设计实验以区分效应与其模仿物,而不仅仅是检测效应。
- 沉默含义模糊:没有错误并不代表成功;需要明确的成功信号(例如,状态码201、存储记录)。
- 依据主张进行断言(例如,文档中的句子),而非依据行为,因为行为可能正确而主张已偏离。
- 验证不可变产物(部署URL、提交记录),而非可能指向缓存或旧版本的友好别名。
- 让工具拒绝静默成功:偏好能在未匹配模式时报错的编辑器,并对批量更改断言匹配计数。
- 保持人工参与——唯一没有固定语言形式的工具能发现自动化检查遗漏的问题。