普通软件出 bug 可以发版热修复,智能合约不行:代码部署后字节码不可更改,合约里锁着的是真金白银,且攻击者和你看到的是同一份源码。历史上单笔损失上亿美元的事故,很多事后复盘都是「某个组合场景没测到」。因此合约开发的时间分配通常是写代码 30%、测试与审计 70%。
一套合格的测试要回答四个问题:
- 正常路径:每个函数在合法输入下返回正确结果、状态正确变化。
- 权限边界:非 owner / 非授权角色调用管理函数是否必然 revert。
- 边界数值:0、1、极大值、精度截断、首次操作(份额为 0 时的除法)是否正确。
- 失败路径:错误信息是否准确、失败时状态是否整体回滚没有脏数据。

把每一条 require / revert 都对应至少一个「应当失败」的测试用例,这是审计师检查测试质量时最先看的点。









