区块链测试自动化 - 如何提高开发速度和代码质量,第 1 部分

2025-11-08 01:03:05 6阅读

今天我们将讨论软件测试区块链中的重要性,概述自动化测试的好处,并解释如何参与我们开源项目的质量保证。这是两部分博客文章的第一部分。

许多区块链项目在达到初始生产状态后都无法存活很长时间。对于大多数人来说,缺乏适当的软件测试是他们消亡的主要原因之一。据估计,仅去年一年,就有超过个价值十亿美元的加密货币因代码错误而丢失。你可能听说过DAO 的代码漏洞,它允许攻击者从基于以太坊的智能合约中榨取 360 万 ETH(当时价值 7000 万美元)。另一个臭名昭著的案例是Parity bug,它导致超过 1.5 亿美元的永久冻结。即使是比特币本身也不能免受黑客攻击。去年年底,在代码中发现的一个错误允许恶意个人通过双重输入人为地增加比特币的供应量。如果错误没有被迅速识别和解决,它可能会对网络产生灾难性的影响。这只是冰山一角——有很多较小的事件是由没有经验或注意力不集中的开发人员引起的,它们没有成为头条新闻。

这告诉我们什么?在开发过程中,事情可能会很快出错,结果可能很糟糕。这就是为什么软件测试对于任何使用区块链技术的项目都如此重要,例如区块链平台、区块链应用程序或基于区块链的服务。

在本文中,我们将讨论我们在开发Lisk区块链应用平台时的软件测试经验和最佳实践。我们还将向您展示实施自动化测试如何改善我们的内部工作流程和代码可靠性。最后,我们将向您展示如何参与测试我们的开源软件。

这是一篇很长的博文,但我们已为您将其分解成小块。

第1部分:

1.区块链与Lisk简介

2.什么是软件测试?

3.测试区块链应用程序为传统软件测试增加了新的指标

为什么区块链开发者需要更加关注细节

5._自动化测试可以显着缩短发布过程

_ 不同类型的自动化测试 _

持续集成 (CI) 是自动化测试的最佳实践

_ 选择哪个 CI 平台? Travis CI vs CircleCI vs Jenkins

第2部分:

软件测试还不够——引入质量保证

_ 手动测试如何减缓我们的软件开发过程

我们如何在 Lightcurve 实施质量保证

_ 建立 QA 团队的结果 _

5.小时区块链网络QA测试流程

参与我们的开源自动化测试

如何开始为我们的 QA 做贡献

我们可以为您提供哪些 QA 工具?

区块链与 Lisk 简介

您可能已经在比特币等加密货币的背景下听说过区块链,但是是什么让这项新技术如此特别?区块链是一种分布式账本技术(DLT),是一种开放的分布式数据库,能够以高效、可验证的方式永久记录各方之间的交易。这些交易被打包成块,加密-签名并形成实际的链。存储在区块链中的数据无法更改或篡改,因为所有记录都是immutable。一旦数据被保存到账本中,它就会永远存在。区块链也是一个去中心化网络,这意味着没有中央机构对其进行控制。

对区块链感到兴奋很容易,但在它之上实际开发一个工作产品却非常困难。由于各种原因,包括所需的陡峭学习曲线,区块链开发人员似乎仍然是一种罕见的程序员。 Lisk 计划通过让每个开发人员都可以轻松地在 JavaScript

(https://lisk.io/products)中构建和部署

个区块链应用程序来正面解决这些问题。 Lightcurve 是一家位于德国柏林的区块链产品开发工作室和咨询公司。我们目前专注于开发 Lisk 的各个方面,包括产品、营销、社区和设计。

什么是软件测试?

基本上,软件测试被定义为一组活动,这些活动可以确保软件按预期运行并且没有错误。适当的软件测试过程将帮助您识别和防止错误,确保特定功能的实际实现符合要求并提高对代码的整体信心。

测试区块链应用程序为传统软件测试添加新指标

测试区块链应用程序与测试非区块链应用程序没有太大区别。但是,对于区块链,会涉及额外的测试指标,例如:

为什么区块链开发者需要更加关注细节

如果在集中式系统中引入了错误,则提供修复将相对简单。即使它损坏了一些数据,也更容易纠正。这是因为在大多数情况下,维护应用程序的公司可以完全控制数据。鉴于区块链是不可变的分类账,损坏的数据即使不是不可能纠正也非常困难。更复杂的是,需要与去中心化网络的所有参与者协调交付修复程序。使用 Lisk,我们必须与数百个节点运营商以及在我们的DPoS 共识算法中称为代表的区块生产者协调每次发布。考虑到所有这些情况,区块链应用程序中的错误后果可能比集中式软件中的更危险。

在开发中,事情可能很快出错,结果可能很糟糕。

自动化测试可以显着缩短发布流程

既然我们已经讨论了测试在区块链项目中的重要性,我们可以根据我们执行它们的方式来划分实际测试:

不同类型的自动化测试

我们可以区分几种类型的自动化测试,例如单元测试、集成测试和功能测试。但是,在一些现有的测试套件中,这些类型相互混淆,它们之间绝对没有区别。这使得测试套件特别不适用于任何事情。对于开发人员而言,了解不同类型的测试非常重要,因为每个测试都有其独特的作用。

对于复杂的应用程序,自动化测试可以将发布过程所需的时间从几个月或几年减少到几天甚至几小时。

持续集成是自动化测试的最佳实践

持续集成 (CI) 是一种软件开发实践,它依赖于将代码频繁集成到共享存储库中。每次团队成员对版本控制(例如 Git)提交一些代码更改时,都会触发构建和测试代码的自动化过程。鼓励开发人员在完成每个小任务(修复问题、实现功能)后提交他们的代码以及测试(单元、功能、集成)。自动构建系统从共享存储库中获取最新版本的代码,并在需要时应用更改。然后它会针对它执行所有计划的操作,例如执行测试。 CI 被认为是最佳实践,因为软件开发人员需要将他们所做的所有更改与开发团队其他成员所做的其余更改集成在一起。它有助于避免合并冲突、困难的错误或重复工作。这是因为 CI 强制将代码不断地合并到一个共享的版本控制分支中,从而使他们能够更早、更轻松地识别可能的问题。它还最大限度地减少了调试时间和代码审查所需的时间,使开发人员可以更专注于添加功能。

选择哪个平台?:Travis CI vs. CircleCI vs. Jenkins

当前可用的少数流行 CI 平台因功能和灵活性而异。其中一些是免费的。对于其他人,您需要付费。

如果您想更详细地比较 CI 平台,可以在Stackshare.io上进行很好的比较。

第 1 部分就是这样!查看演练的第 2 部分,了解质量保证的重要性、我们实施自动化测试的经验以及参与区块链 QA 测试的链接。

免责声明:由于无法甄别是否为投稿用户创作以及文章的准确性,本站尊重并保护知识产权,根据《信息网络传播权保护条例》,如我们转载的作品侵犯了您的权利,请您通知我们,请将本侵权页面网址发送邮件到qingge@88.com,深感抱歉,我们会做删除处理。