跳到主要内容
知识地图为什么还要测试拒绝与失败?ArcBlock 体系

你在这里。看看这个问题与其他知识怎样相连。

选择节点前往页面 · 展开后可留在地图中阅读

知识地图沿着连接,读懂一个问题
← AFS

一个问题

为什么还要测试拒绝与失败?

只会成功的用例看不出权限放宽、错误吞掉和并发丢更新。

同一个报告的四个测试

输入条件应观察什么
合法调用者、有效报告读取成功,路径与内容正确
不存在的报告可区分的不存在结果
只读调用者尝试修改修改被拒绝,状态未变
两个写者使用同一旧版本按声明的并发契约处理,不静默丢失更新

拒绝用例也不能单独成为证明:一个拒绝所有输入的实现,可以通过很多“坏输入应失败”的测试。所以需要接受与拒绝成对出现,并验证真实可观察状态。

测试本身也要接受挑战

故意破坏一个实现,例如返回双重挂载前缀、忽略版本或吞掉错误,测试应能抓到相应问题。这有助于发现“永远通过”的检查。

外部服务还需要独立集成测试;跨进程语义需要独立进程证据。不要把更小范围的 conformance 结果写成更大范围的部署保证。

检查一下理解

为什么还要测试拒绝与失败?

只会成功的用例看不出权限放宽、错误吞掉和并发丢更新。

沿着学习路径继续