

对于模块化区块链,测试过程更为复杂,因为有更多的节点类型和可能的设置。
原文来源:Celestia
原文作者:Nhu Viet Nguyen
原文标题:Intro to testing modular blockchain software
编译:录觉麟,GWEI Research
生产网络中的简单错误和常见问题是威胁去中心化区块链弹性的问题。考虑到众多用户和应用程序都依赖这些区块链,这个问题尤为重要。我们希望强调一个在讨论中被忽视,而且更重要的是,在确保区块链稳定性方面被低估利用的关键组成部分。
这篇文章将讨论测试区块链的重要性以及有效测试它们的策略。
TL;DR
测试区块链网络对于确保其安全性、可靠性和长期稳定性至关重要。测试确保如果网络没有按预期运行,问题会在部署之前被识别和解决。
对于模块化区块链,测试过程更为复杂,因为有更多的节点类型和可能的设置。
每种节点类型都必须单独测试,然后作为整个网络的一部分进行测试。由于每种节点类型都可以进行定制,因此测试过程还必须包括定制的测试。
区块链的测试策略 在进行测试过程时要记住的事项 所有团队,Celestia Labs也不例外,在软件开发的每个方面都有有限的人力资源。由于区块链开发节奏很快,测试被认为是相对于发布新功能的较低优先级。即使在测试时间有限制的情况下,团队应该记住,如果他们遵循简单的指导原则,测试可以是有效的:
与任何软件测试一样,区块链的测试过程应该既包括功能测试,也包括非功能测试。功能测试侧重于检查单个模块及其与其他模块的相互作用。另一方面,非功能测试评估网络的性能、安全性和可扩展性,以确保一个健壮且可靠的区块链系统。
以下策略可用于有效地测试区块链:

1.单元测试
单元测试涉及对每个模块单独进行测试,以确保其正确运行。在这种情况下,一个模块的示例是celestia-node的头部,它封装了如何在网络中的不同节点之间传播头部的信息。它对区块链至关重要,因为它允许对每个模块的定制进行测试。
这种测试策略有助于在模块集成到网络之前发现任何问题。对于模块化区块链与模块化软件设计相结合的情况,隔离测试每个组件是非常有益的。
2.集成测试
集成测试对于区块链至关重要,以确保模块之间的交互如预期一样。这种测试策略涉及将模块与其他模块一起进行测试,以确保它们之间的互操作性。
一个模块与模块测试的例子是一个节点与另一个节点进行测试。在Celestia的情况下,我们通常会测试一个轻节点从一个单一的桥节点同步和抽样。它们都是从一个代码库编写的,但打包方式不同。
集成测试有助于发现模块之间交互和网络中的任何问题。
在这个测试级别中,通常需要准备一个同一台机器上的小型节点网络来进行测试。
3.系统测试
系统测试涉及测试整个网络,以确保其符合必要的要求。这种测试策略涉及测试网络的性能、可扩展性和安全性。系统测试有助于发现网络整体功能和性能方面的问题。
在系统测试中,通常使用较大的节点网络来模拟真实环境。这种测试策略有助于发现由于网络的去中心化特性而可能出现的问题。
Celestia在系统级别发现的一个很好的例子是在提交交易或DA节点进行简单余额检查过程中出现的密钥不匹配问题。在PayForBlob功能的负载测试期间发现了这个功能性错误。系统测试通常会揭示那些单元/集成测试无法发现的问题,尽管测试场景简单,有时与测试计划的测试目标无关。
另一个例子是在系统发布测试中发现的误报,其中DA节点正常运行,但经过严格审查后发现实际上并未运行。
此外,系统测试还有助于确保网络能够处理大量的交易和用户。
系统测试是区块链测试过程的关键部分。它有助于确保网络按预期运行,并在部署之前识别和解决任何问题。通过在系统级别测试区块链,我们可以确保它们被社区成功采用和使用。
这种测试级别被认为是最昂贵的,不应该像单元/集成测试那样具有相同的覆盖范围。对于模块化设计的区块链来说尤其如此,因为在设计系统测试时需要考虑更多的上下文。
我们将在本系列的第二部分更详细地介绍这个测试级别。
随着区块链的不断发展,测试也必须发展。新的测试策略和框架将出现,现有的策略和框架将得到改进。测试过程将变得更加自动化和简化,从而减少测试时间和成本。
随着区块链的广泛应用,标准化测试框架的需求将变得越来越明显。标准化框架将帮助测试扩展到更多类型的网络和用例。如果你喜欢这篇介绍性文章,我们将在第二部分解释Celestia Labs如何使用一个名为Testground的工具进行大规模网络测试。