你在这里。看看这个问题与其他知识怎样相连。
选择节点前往页面 · 展开后可留在地图中阅读
一个问题
为什么还要测试拒绝与失败?
只会成功的用例看不出权限放宽、错误吞掉和并发丢更新。
同一个报告的四个测试
| 输入条件 | 应观察什么 |
|---|---|
| 合法调用者、有效报告 | 读取成功,路径与内容正确 |
| 不存在的报告 | 可区分的不存在结果 |
| 只读调用者尝试修改 | 修改被拒绝,状态未变 |
| 两个写者使用同一旧版本 | 按声明的并发契约处理,不静默丢失更新 |
拒绝用例也不能单独成为证明:一个拒绝所有输入的实现,可以通过很多“坏输入应失败”的测试。所以需要接受与拒绝成对出现,并验证真实可观察状态。
测试本身也要接受挑战
故意破坏一个实现,例如返回双重挂载前缀、忽略版本或吞掉错误,测试应能抓到相应问题。这有助于发现“永远通过”的检查。
外部服务还需要独立集成测试;跨进程语义需要独立进程证据。不要把更小范围的 conformance 结果写成更大范围的部署保证。