原文:Celestia
编译:GWEI Research
生产网络中的简单错误和常见问题是威胁去中心化区块链弹性的问题。考虑到众多用户和应用程序都依赖这些区块链,这个问题尤为重要。我们希望强调一个在讨论中被忽视,而且更重要的是,在确保区块链稳定性方面被低估利用的关键组成部分。
这篇文章将讨论测试区块链的重要性以及有效测试它们的策略。
TL;DR
区块链网络的健壮性涉及对节点类型、定制化和网络范围内的性能进行严格测试,以确保安全性和可靠性。 随着模块化区块链中节点设置的灵活性增加,加强维护网络安全性和可靠性的测试实践至关重要。 有效的测试策略包括单元测试、集成测试和系统测试。 测试模块化区块链的挑战包括复杂性、互操作性问题以及缺乏标准化框架。
测试区块链的重要性
测试区块链网络对于确保其安全性、可靠性和长期稳定性至关重要。测试确保如果网络没有按预期运行,问题会在部署之前被识别和解决。
对于模块化区块链,测试过程更为复杂,因为有更多的节点类型和可能的设置。
每种节点类型都必须单独测试,然后作为整个网络的一部分进行测试。由于每种节点类型都可以进行定制,因此测试过程还必须包括定制的测试。
区块链的测试策略 在进行测试过程时要记住的事项 所有团队,Celestia Labs也不例外,在软件开发的每个方面都有有限的人力资源。由于区块链开发节奏很快,测试被认为是相对于发布新功能的较低优先级。即使在测试时间有限制的情况下,团队应该记住,如果他们遵循简单的指导原则,测试可以是有效的:
穷尽测试是不可能的。你不能覆盖所有内容,但通过识别和优先测试高风险元素,你可以覆盖很多内容。尽早发现并修复错误。随着错误从规格到测试网到主网的传播,修复它们的成本逐渐增加。任何自动化都比没有好。在进行大型网络端到端测试时,自动化变得至关重要。在将软件发布给公众之前,在内部开发网上进行测试。确保软件在发布到测试网之前是稳定的,这样可以减少社区的工作量和挫败感。 手动测试总比没有测试好。虽然手动测试不是可扩展的长期解决方案,但它仍然对短期目标有用。你可以在以后引入自动化。
区块链测试金字塔
与任何软件测试一样,区块链的测试过程应该既包括功能测试,也包括非功能测试。功能测试侧重于检查单个模块及其与其他模块的相互作用。另一方面,非功能测试评估网络的性能、安全性和可扩展性,以确保一个健壮且可靠的区块链系统。
以下策略可用于有效地测试区块链:
1.单元测试
单元测试涉及对每个模块单独进行测试,以确保其正确运行。在这种情况下,一个模块的示例是celestia-node的头部,它封装了如何在网络中的不同节点之间传播头部的信息。它对区块链至关重要,因为它允许对每个模块的定制进行测试。
这种测试策略有助于在模块集成到网络之前发现任何问题。对于模块化区块链与模块化软件设计相结合的情况,隔离测试每个组件是非常有益的。
2.集成测试
集成测试对于区块链至关重要,以确保模块之间的交互如预期一样。这种测试策略涉及将模块与其他模块一起进行测试,以确保它们之间的互操作性。
一个模块与模块测试的例子是一个节点与另一个节点进行测试。在Celestia的情况下,我们通常会测试一个轻节点从一个单一的桥节点同步和抽样。它们都是从一个代码库编写的,但打包方式不同。
集成测试有助于发现模块之间交互和网络中的任何问题。
在这个测试级别中,通常需要准备一个同一台机器上的小型节点网络来进行测试。
3.系统测试
系统测试涉及测试整个网络,以确保其符合必要的要求。这种测试策略涉及测试网络的性能、可扩展性和安全性。系统测试有助于发现网络整体功能和性能方面的问题。
在系统测试中,通常使用较大的节点网络来模拟真实环境。这种测试策略有助于发现由于网络的去中心化特性而可能出现的问题。
Celestia在系统级别发现的一个很好的例子是在提交交易或DA节点进行简单余额检查过程中出现的密钥不匹配问题。在PayForBlob功能的负载测试期间发现了这个功能性错误。系统测试通常会揭示那些单元/集成测试无法发现的问题,尽管测试场景简单,有时与测试计划的测试目标无关。
另一个例子是在系统发布测试中发现的误报,其中DA节点正常运行,但经过严格审查后发现实际上并未运行。
此外,系统测试还有助于确保网络能够处理大量的交易和用户。
系统测试是区块链测试过程的关键部分。它有助于确保网络按预期运行,并在部署之前识别和解决任何问题。通过在系统级别测试区块链,我们可以确保它们被社区成功采用和使用。
这种测试级别被认为是最昂贵的,不应该像单元/集成测试那样具有相同的覆盖范围。对于模块化设计的区块链来说尤其如此,因为在设计系统测试时需要考虑更多的上下文。
我们将在本系列的第二部分更详细地介绍这个测试级别。
模块化区块链测试的未来
随着区块链的不断发展,测试也必须发展。新的测试策略和框架将出现,现有的策略和框架将得到改进。测试过程将变得更加自动化和简化,从而减少测试时间和成本。
随着区块链的广泛应用,标准化测试框架的需求将变得越来越明显。标准化框架将帮助测试扩展到更多类型的网络和用例。如果你喜欢这篇介绍性文章,我们将在第二部分解释Celestia Labs如何使用一个名为Testground的工具进行大规模网络测试。