Hasty Briefsbeta

双语

Ten ways a check passes while the thing it checks is broken

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