智能合约是不变的程序:一旦部署了合约,就无法更改它。这使用户可以确保不会改变其资金运作的规则。但是,相同的功能使创建安全的智能合约极为复杂。如果您创建的合同带有错误或漏洞,那么合同就永远存在。这就是为什么测试对于智能合约比传统应用程序更为重要的原因。 相关:什么是智能合约?初学者指南 为什么需要测试 首先,让我们澄清一下测试可以解决哪些问题。为此,我们指出错误和漏洞之间的以下区别: →如果问题导致计划中的方案无法运行,则说明存在错误。 →如果问题导致计划外的方案运行,则为漏洞。 测试不能防止漏洞。从定义上讲,漏洞是计划外的,因??此您无法在测试阶段将其考虑在内。要解决漏洞,您需要其他工具和操作,这些工具和操作将在本文末尾进行介绍。 测试可以帮助我们确保所有计划的方案都按预期运行。换句话说,测试有助于防止错误。这个事实有几个重要的后果: 经验法则:每条业务逻辑都必须有相应的测试。如果您有业务逻辑场景,则将其包含在代码中,这意味着您需要对其进行测试。最重要的方案必须经过最彻底的测试。大多数用户将运行的场景或实现关键功能的场景需要额外注意。测试发现了愚蠢的错误。即使是经验丰富的开发人员也会犯愚蠢的错误,这很危险。测试对边缘情况非常有用。如果用户尝试购买零代币怎么办?如果用户数达到限制,该怎么办?必须考虑这些情况,为此任务的最佳解决方案是使用测试。您需要为您的项目提供详细的规范才能创建测试。让我们更详细地讨论这一点。规格 如果您不知道计划什么,就无法测试计划的方案。因此,您需要创建一个规范。 这似乎很明显,但是许多区块链团队都违反了这一规则。他们写白皮书,然后立即写代码。这可能并且经常确实导致所需功能的错误实现。在某个时候,团队甚至可以得出这样的结论:他们自己不了解他们希望系统如何运行。而且,期望的功能可能不是自洽的,因此是无法实现的。 因此,规范是必须的。这使我们得出了一个有趣的观察结果:当您开始测试代码时,您不仅会得到测试。您必须改善整个开发过程。您的工作比您最初预期的要多,但您也将从中受益。 测试工具 测试是知识的一个单独的分支,因此我不会在一篇文章中介绍它。但是,我将首先列出必要的工具。 为了轻松,正确地测试智能合约,您需要一个测试框架。我的同事建议使用以下其中一种:松露,Embark或Etherlime。 另外,您将需要测量测试覆盖率。测试覆盖率是测试覆盖的代码的百分比,因此100%的覆盖率表示每个字节码指令都经过测试。但是,这是一种理想的情况,而不是真实的情况。实际上,此数字将始终低于100,具体取决于您创建的测试数量。以下是一些用于测试测试覆盖率的最受欢迎的工具:solidity-coverage和@ 0x / sol-coverage。 相关:区块链中使用的编程语言,解释了 扩大环境 因此,如果测试覆盖率为95%,并且我对所有关键功能都进行了测试,那么我可以认为我的代码是安全的,对吗?但是正确的答案是:“错!”测试只是必要的安全程序之一。看一下这个图: 当您开始编写代码时,首先需要使用短毛绒使代码清晰易读。然后,您需要进行测试以确保所有计划的方案都能正常工作。然后,您运行安全工具以查找标准且易于检测的漏洞。从代码中删除它们之后,可以继续对代码进行外部审核。在开发的每个阶段,代码设计对于安全性和可用性都至关重要。 所有这些步骤都有其复杂性,但是这些超出了本文的范围。 本文表达的观点,想法仅代表作者个人,不一定反映或代表Cointelegraph的观点。 伊万·伊万尼茨基(Ivan Ivanitskiy)是SmartDec的首席分析官,还是Basic Block播客的共同主持人。他是应用程序安全性,区块链和智能合约方面的专家。伊万(Ivan)对比特币充满热情,并对智能合约充满好奇。 —- 原文链接:https://cointelegraph.com/news/smart-contract-testing-for-dummies 原文作者:Cointelegraph By Ivan Ivanitskiy 编译者/作者:wanbizu AI 玩币族申明:玩币族作为开放的资讯翻译/分享平台,所提供的所有资讯仅代表作者个人观点,与玩币族平台立场无关,且不构成任何投资理财建议。文章版权归原作者所有。 |
傻瓜智能合约测试
2020-04-10 wanbizu AI 来源:区块链网络
LOADING...
相关阅读:
- 区块链游戏文摘7月27日至8月2日2020-08-02
- LINK公牛的目标价格为10美元,因为每日LINK交易量猛增82%2020-08-02
- Uniswap的“ Tendies”令牌飞涨,创下记录量2020-08-02
- 新闻TRON,Cardano,IOST,Youtube和DEX暴跌11%后,比特币仍未恢复2020-08-02
- 中国仲裁员表示加密镇压并不意味着禁止BTC2020-08-02