区块链应用程序测试入门指南

发布于:2021-01-30 10:15:20

0

68

0

区块链 应用程序 入门指南

2017年的最后几个月,一些媒体每天都在谈论比特币和其他加密货币。这些已经存在多年的货币突然出现了大幅增长。例如,比特币的价格从2017年1月的略低于750美元增长到2017年10月中旬的5856.10美元。

这种巨大的增长使它成为一个主要的话题。因此,随着这些新货币更多地进入公共领域,加密货币背后的技术也开始受到关注。这种技术就是区块链。

区块链应用正在被世界上一些最大的行业所采用。由于区块链应用的性质,它进一步支持了测试人员和测试员的重要性,未来该领域将受到更高的重视和追捧。所以作为测试人员,想知道这项新技术将如何影响您的日常工作、新机会和当前技能集是正确的。

为了测试区块链应用程序,您需要学习哪些新工具,以及需要哪些技能来测试它们?

在这里,我将概述什么是区块链技术,以及我们作为测试人员如何为测试区块链应用程序做好准备。

什么是区块链?

区块链是一种同时存在于多个位置的数据结构。你只能添加到区块链中。不允许删除或更新。区块链中的数据是分散的,这意味着现有区块链的副本在网络中的每台机器上。

区块链的增加可以在该网络中的每台计算机上看到,并且交易通过加密方式与之前的交易相关联。因此,进行欺诈性交易是非常困难的。要做到这一点,就必须有人将他们的历史改写到时间的开始,这是极其繁重的资源。

为了更新区块链中的每台机器,这些机器必须同步以拥有共同的历史记录。尽管由于这种同步操作,所有机器最终都将拥有相同的数据,但只有较新的事务才会更频繁地同步。

对于要添加的新交易,决策取决于区块链中的大多数参与者。一旦交易的身份验证被验证,新的区块就会被添加到区块链中。

它是用来做什么的?

目前,区块链由于其高度安全的结构,主要用于金融和汽车行业。正如我前面提到的,这也是支撑比特币和以太坊等加密货币的技术。

并非所有的区块链技术都是开源的。可以有像银行系统中使用的私有区块链。

您可以对构建在区块链上的应用程序执行哪些类型的测试和技术?

在开发软件项目的不同阶段可以执行许多不同类型的测试。以下是几种类型的测试,可用于确保区块链应用程序的高水平测试覆盖率和质量。

单元测试

单元测试有助于开发人员确保他们的代码在最低级别和最小的功能部分正确执行。这应该始终是第一道防线,以确保应用程序在开发过程中尽早捕获大多数bug。

集成测试

集成测试有助于开发人员和测试工程师确保他们的代码在不同组件之间进行通信,也可能在内部和外部系统(如数据库)之间进行通信。

用户界面

用户界面(UI)测试从最终用户的角度揭示了应用程序的工作方式。重要的是要确保您执行UI测试,以确保他们的体验是积极的,或者当应用程序性能不好时,他们至少能从应用程序获得正确的反馈。

应用程序接口

应用程序编程接口(API)测试使您确信您已经验证了应用程序从外部API接收到的响应,并确保API请求的格式正确且得到正确处理。

对于区块链应用程序,还有一种与api类似的技术,允许您对api采用相同的测试实践。这些被称为智能合约。

什么是智能合约?

智能合约是区块链中验证技术的重要组成部分。智能合约是一套“可编程结构形式的规则,在满足预定义条件时能够自动执行”。例如,一个先决条件可能是,试图附加到特定分类账的交易将进行额外的验证或通过一组不同的验证更健壮。

尽管智能合约非常类似于API,即它具有公共函数,任何在区块链网络上注册的人都可以调用,但它不能调用外部web API。

那么,为什么我认为测试人员在测试区块链应用程序时对其他类型的系统极其重要呢?只是因为一旦合同被部署到区块链上,它就永远不会被改变。因此,您必须非常有信心所执行的测试是高质量的,并且应该涵盖的所有内容都已涵盖。

如果在生产中发现缺陷,则必须创建和部署新版本的契约。现有联系人的新版本不能简单地获取传入的现有数据;您必须使用新合同手动初始化以前的数据。

更新契约和回滚更新也是不可行的选择;这增加了开发的复杂性,意味着在应用程序进入生产之前对其实施和运行单元测试和集成测试的重要性可以为您节省纠正缺陷的大量时间和金钱。

区块链应用程序的测试人员需要什么技能?

尽管区块链应用在软件开发中相对较新,但我认为测试人员不需要采用新的技能来测试这类技术。

我在下面强调的一些技能是优秀测试人员的自然技能,或者只是您在测试职业生涯早期学习的技能,这些技能随着您在该领域的经验而增长。

批判性思维

批判性地分析、思考和解决问题的能力是测试人员永恒的技能,在测试区块链应用程序时将更受追捧。

测试人员会考虑这样的问题:如果x、y和z没有完成,事务还会执行吗?如果网络中有大量事务等待确认,会发生什么情况?在这些情况下,向用户提供了哪些反馈?这应该是给用户的反馈吗?或者这个反馈是否暴露了任何安全风险?

如果开始一个新项目,另一件要考虑的事情是质疑区块链是否是最适合您使用的技术。这是一个新的闪亮玩具,所以每个人都会想采用它,但它可能不适合你想要实现的目标。

要记住的是法规遵从性问题;例如,您不应该存储健康或犯罪记录,因为不允许删除。所以,当未成年人的犯罪记录可以被抹去时,你就不能用这项技术来抹去。

测试设计技术

在ISTQB-BCS基础软件测试教学大纲中,我们将向您介绍测试设计技术。即使知道测试设计技术的基础知识,比如边界值分析和等价划分,也能确保您不断地思考和检查应用程序的输入和输出。

要考虑的问题可能是:当您输入的值在可接受值的边界之内、边界上和边界之外时,应用程序将如何操作?交易会完成吗?如果不是,将返回什么类型的错误?对于返回的类型,此错误代码是否正确?它应该还什么吗?

自动化

所有语言的强大自动化技能,无论是用于较低级别的单元、中级集成,还是API或高级UI测试,都是可以转移到测试区块链应用程序的良好技能。有必要建立一个坚实的基础的自动化测试,以确保大多数问题都在开发的早期发现。

手动UI测试

如果建立了自动化测试的坚实基础,测试人员可以专注于通过手动探索性测试更容易发现的离群点问题。

能够独立工作,调查应用程序的不同领域,努力寻找薄弱环节,并且能够成功地重现这些都是优秀测试人员需要的技能。尽管全世界都在寻求自动化来执行许多重复而艰巨的任务,但手工测试技能仍然需要磨练和提高。

快速学习新工具

随着新技术的曝光,测试这项技术的工具也将不断增加。你需要学会如何快速使用这些新工具,并判断哪种工具最适合你所要完成的任务。

证明自己的未来,为区块链做好准备

希望到目前为止,你对区块链技术有了更好的理解,不再认为它像你第一次想到的那样可怕。

我确信如果你是一个测试人员,你已经具备了我上面概述的技能的基础。我的建议是,在测试区块链应用程序时,进一步深入到您感兴趣的领域,并可能尝试在您最弱的领域进行改进,以便为您提供提高技能的最佳机会。