面向区块链的软件测试方法

论文摘要:

区块链技术提供了一种非常创新和安全的在线交易管理方式。被誉为互联 之后最伟大的发明之一,它已经风靡数字世界,正在扰乱许多行业。在过去几年中,这项技术已经获得了极大的重要性,其应用领域已经发展成为一个更广泛的背景。基于块链的应用程序的大量采用已大幅增加,现在有大量此类应用程序可供使用。因此,基于块链的软件开发也以惊人的速度增长。

技术介绍:

区块链技术为软件开发提供了一种全新的方法。它的去中心化特性以及节点的匿名特性进一步增加了测试过程的复杂性。传统的软件测试方法可能不再有效。块链的不可变性进一步暗示,如果bug进入生产系统,它可能需要代码的完整修订。因此,使用正确的测试技术和方法在这种情况下变得更为关键。

影响测试级别的主要因素是,该实现是基于Etherum之类的公共平台,还是为组织或组织联盟构建的定制平台。在私有块链的情况下,模拟所有场景并在内部测试它们比较容易。由于私有锁链在受控环境中运行,传统的测试方法可以证明是方便的。由于定制了功能,可以设计详细的测试策略。

当实现在公共平台上时,复杂性会提升。在公共的区块链实现中,可以参与的节点没有上限,节点可以以特别的方式加入和离开,可能难以达成共识,降低事务的速度,可能出现硬分叉和更多的问题。可视化和设计覆盖所有方面的测试策略和测试用例变得非常困难。

由于面向区块链的软件项目使用本质上分布的区块链技术,所以测试是孤立进行的,并且需要对能够有效地模拟块链的对象进行适当的模拟。比特币是第一个也是最流行的数字加密货币。它是一个面向区块链的软件,并受到了广泛关注。其技术特征之一是,即使 络中存在不可靠的参与者,也能够在没有集中管理机制的情况下实现可靠的事务,并且该特征通过块链技术的发明而获得。

在我们的论文中,我们计划创建一个完整的软件测试生命周期来测试像比特币这样的BOS项目。与当前的方法不同,这些方法只侧重于测试特定的关键功能,如智能合约和双花。我们提出了一个新的软件测试生命周期,它将从各个角度测试软件。该测试生命周期有四个阶段,如图1所示。

图 1 我们提出的BOS测试生命周期

第一阶段:系统概述

我们的BOS测试生命周期的第一阶段是系统概述阶段。我们建议测试人员应尽早参与SDLC,以便他们更好地了解所涉及的所有组件,以及哪个团队对哪个组件负责。然后生成组件映射。此组件映射包含整个系统的所有组件和子组件,包括所有接口。它可以很好地了解系统的整体运行情况。

从这个完整的组件映射中,生成一个系统组件映射,其中包含与区块链技术相关的所有组件的入围名单。入围的组件再次映射到组件图中,这定义了测试的范围。一旦定义了测试的范围,整个团队就清楚地知道要测试什么以及哪个团队负责哪个组件。第一阶段的输出是确定测试范围的系统组成图。

第二阶段:测试设计

在第二阶段中,需要针对区块链设计详细的级别测试策略。我们确定了需要在系统中检查的关键组件。我们正在使用一个名为Hyper Ledger Composer的模型来测试面向块链的软件。它有自己的建模语言。第二阶段的输出将是详细的水平测试策略。

第三阶段:测试计划

在这个阶段,我们得到了一个低级别的视图,即每种形式的测试如何进行,并决定估计每个级别的测试次数以及覆盖量。我们检查系统可用性,或者我们可以说测试环境可用性。如果系统不可用,则需要计划其他测试策略。替代测试策略涉及设置私有区块链以进行测试。

必须对覆盖率和将要执行的测试数量进行估计,必须确定测试数量、测试工具和自动化。考虑每个级别的测试及其测试方法和工具并最终确定。表1给出了每个测试阶段/级别的示例以及它推荐的方法和工具。表2给出了在每个测试阶段或测试级别执行的测试量的估计。

在第二阶段中设计的用例被映射到上面提到的测试中。这确保我们覆盖了所有测试场景,并且包括了用户场景中包含的所有用户需求。第三阶段的输出是最终的测试策略和测试用例的文档。

表 1 测试级别及方法和工具

表 2 测试级别及测试量

第四阶段:测试执行和结果验证

第四阶段是面向区块链软件测试生命周期的最后阶段。它涉及使用来自阶段3的文档化的方法和工具在每个测试级别执行所有测试。执行可以理想地通过剪贴自动化,剪贴遵循在适当的框架上的测试驱动开发方法。

在这个阶段需要重点关注的各种关键活动是低级验证,以及块、智能契约和事务的验证,我们还需要测试系统中使用的所有第三方接口,以及用户界面和功能流。然后,需要对业务结果进行整合、分析和验证。必须有一个bug 告,列出所有缺陷标识,以及详细的测试 告,说明已通过和失败的测试执行。

第四阶段的输出是测试结果和缺陷 告,发送给团队进行进一步处理。可以执行此循环,直到系统按预期工作,并且在测试期间没有发现严重错误。

结论:

我们专注于最先进的面向区块链的软件开发问题。我们通过阅读大量博客和文章,了解了面向区块链的软件测试中存在的问题。基于分析结果,我们提出了面向块链的软件工程的新方向,着重于大型团队之间的协作、测试活动和创建智能契约的专门工具。我们还提倡从测试生命周期开始就需要有一个专门的软件测试人员,从而需要新的专业角色,并且还建议通过测试模块链的关键特征以及整个系统来增强安全性和可靠性。

致谢

此文由南京大学软件学院2018级硕士巫浩然翻译转述。

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2018年11月6日
下一篇 2018年11月6日

相关推荐