Echidna 中基于属性的测试功能是使用 Hedgehog 实现的,Hedgehog 是 Jacob Stanley 开发的基于属性的测试库。Hedgehog 可以看作是基于 QuickCheck 的优化版。
https://github.com/crytic/building-secure-contracts/blob/master/program-analysis/echidna/basic/common-testing-approaches.md
https://github.com/crytic/echidna/blob/master/tests/solidity/basic/default.yaml
# 指定配置文件:--config echidna_config.yaml
# 测试模式:
# property 默认
# assertion
# overflow
# exploration 允许echidna在没有属性时运行
# optimization
testMode: "property"
需要手动编写属性,属性必须符合:
echidna_)echidna_ 开头的测试,如果属性返回 true,则判断属性通过;如果返回 false 或 revert,则判断属性失败echidna_revert_ 开头的测试,如果属性返回任何值(true 或 false)都判断为失败,如果返回 revert 则判断为通过基本原理
