一般来说,在为智能合同编写测试时,测试必须有多全面?另外,人们如何知道要测试什么(例如,测试应该针对的原始合同文件中函数中的哪一行)?
最后,通常应该如何设置测试(例如,创建一些虚拟常量或变量,然后通过调用一些参数并将这些参数输入原始契约文件中的某个函数来断言或期望这些虚拟常量或变量等于某个返回的值)?
任何帮助都是非常感谢的。谢谢。
发布于 2022-12-13 07:36:26
我认为,测试是智能合同开发中最重要的方面。当大量资金或关键数据的可信度处于危险状态时,没有什么比100%的测试覆盖范围更好。
我个人花费了90%的开发时间&测试&&审核我编写的智能合同。在实现稳固性代码&&契约功能时,只占了工作的10%。编写智能合同很容易,但要确保您的智能合同按预期工作是很困难的。
Truffle、Brownie && Hardhat将允许您编写和运行基本单元/集成测试,并检查代码覆盖率。您可以使用Js、Python或TypeSript编写测试,Solidity也是一个选项,但我不推荐它,您可能会遇到合同大小等问题。
注意:如果你想做高质量的工作,你需要100%的测试覆盖率。但是,您还需要学习如何进行模糊化(使用随机数据输入进行测试)。也可以使用像Mythx这样的安全分析工具或者免费版本的。
https://ethereum.stackexchange.com/questions/141119
复制相似问题