LOADING...
LOADING...
LOADING...
当前位置: 玩币族首页 > 区块链资产 > 傻瓜智能合约测试

傻瓜智能合约测试

2020-04-10 wanbizu AI 来源:区块链网络

智能合约是不变的程序:一旦部署了合约,就无法更改它。这使用户可以确保不会改变其资金运作的规则。但是,相同的功能使创建安全的智能合约极为复杂。如果您创建的合同带有错误或漏洞,那么合同就永远存在。这就是为什么测试对于智能合约比传统应用程序更为重要的原因。

相关:什么是智能合约?初学者指南

为什么需要测试

首先,让我们澄清一下测试可以解决哪些问题。为此,我们指出错误和漏洞之间的以下区别:

→如果问题导致计划中的方案无法运行,则说明存在错误。

→如果问题导致计划外的方案运行,则为漏洞。

测试不能防止漏洞。从定义上讲,漏洞是计划外的,因??此您无法在测试阶段将其考虑在内。要解决漏洞,您需要其他工具和操作,这些工具和操作将在本文末尾进行介绍。

测试可以帮助我们确保所有计划的方案都按预期运行。换句话说,测试有助于防止错误。这个事实有几个重要的后果:

经验法则:每条业务逻辑都必须有相应的测试。如果您有业务逻辑场景,则将其包含在代码中,这意味着您需要对其进行测试。最重要的方案必须经过最彻底的测试。大多数用户将运行的场景或实现关键功能的场景需要额外注意。测试发现了愚蠢的错误。即使是经验丰富的开发人员也会犯愚蠢的错误,这很危险。测试对边缘情况非常有用。如果用户尝试购买零代币怎么办?如果用户数达到限制,该怎么办?必须考虑这些情况,为此任务的最佳解决方案是使用测试。您需要为您的项目提供详细的规范才能创建测试。让我们更详细地讨论这一点。

规格

如果您不知道计划什么,就无法测试计划的方案。因此,您需要创建一个规范。

这似乎很明显,但是许多区块链团队都违反了这一规则。他们写白皮书,然后立即写代码。这可能并且经常确实导致所需功能的错误实现。在某个时候,团队甚至可以得出这样的结论:他们自己不了解他们希望系统如何运行。而且,期望的功能可能不是自洽的,因此是无法实现的。

因此,规范是必须的。这使我们得出了一个有趣的观察结果:当您开始测试代码时,您不仅会得到测试。您必须改善整个开发过程。您的工作比您最初预期的要多,但您也将从中受益。

测试工具

测试是知识的一个单独的分支,因此我不会在一篇文章中介绍它。但是,我将首先列出必要的工具。

为了轻松,正确地测试智能合约,您需要一个测试框架。我的同事建议使用以下其中一种:松露,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

玩币族申明:玩币族作为开放的资讯翻译/分享平台,所提供的所有资讯仅代表作者个人观点,与玩币族平台立场无关,且不构成任何投资理财建议。文章版权归原作者所有。

LOADING...
LOADING...