一种测试区块链软件的方法及装置与流程

文档序号:18899721发布日期:2019-10-18 21:46阅读:131来源:国知局
一种测试区块链软件的方法及装置与流程

本申请涉及区块链技术领域,尤其涉及一种测试区块链软件的方法及装置。



背景技术:

区块链软件会不定时地进行升级,在开发者获得升级之后的区块链软件之后,需要对升级后的区块链软件进行测试,以确保升级后的区块链软件的可用性。

现有的测试区块链软件,一般是将区块链软件部署在测试环境的模拟区块链节点中,将测试数据写入模拟区块链节点中,验证该区块链软件能否在测试环境中正常运行,如果可以正常运行,则表示测试成功。但是这种测试方法仅对区块链软件的能否在测试环境中正常运行进行测试,测试结果可靠性低。



技术实现要素:

本申请实施例提供一种测试区块链软件的方法及装置,用于提高测试区块链软件的结果的可靠性。

第一方面,提供一种测试区块链软件的方法,包括:

在测试环境中运行待测试版本区块链软件;其中,所述测试环境中设置有各个模拟区块链节点;

将历史上链数据同步到运行所述待测试版本区块链软件的各个模拟区块链节点中;其中,所述历史上链数据包括多个历史版本区块链软件依次迭代更新产生的上链数据,所述多个历史版本区块链软件是指在所述待测试版本区块链软件之前发布的所有版本的区块链软件;

将待测试版本区块链软件的测试数据集合写入运行所述待测试版本区块链软件的对应模拟区块链节点中;

若写入的所述待测试版本区块链软件的测试数据集合验证成功,确定所述待测试版本区块链软件测试成功。

在一种可能的实施方式中,在测试环境中运行待测试版本区块链软件之前,针对多个历史版本区块链软件,按照发布顺序,对每一个历史版本区块链软件,执行如下步骤:

在测试环境中运行历史版本区块链软件;

将在运行前一个历史版本区块链软件的测试环境中产生的上链数据同步到运行该历史版本区块链软件的各个模拟区块链节点中;其中,所述前一个历史版本区块链软件是指相对于该历史版本区块链软件的前一个版本区块链软件;

将历史版本区块链软件的测试数据集合写入运行该历史版本区块链软件的对应模拟区块链节点中;

若写入的测试数据集合验证成功,确定该历史版本区块链软件测试成功;

将运行历史版本区块链软件的测试环境产生的上链数据确定为历史上链数据。

在一种可能的实施方式中,在将待测试版本区块链软件的测试数据集合写入运行所述待测试版本区块链软件的对应模拟区块链节点中之前,包括:

根据所述待测试版本区块链软件所关联的服务协议类型,生成与所述服务协议类型匹配的待测试版本区块链软件的测试数据集合。

在一种可能的实施方式中,将待测试版本区块链软件的测试数据集合写入运行所述待测试版本区块链软件的对应模拟区块链节点中,包括:

针对待测试版本区块链软件中待测试的每个功能点,根据该功能点,将待测试版本区块链软件的测试数据集合中部分测试数据写入与该功能点关联的模拟区块链节点中。

在一种可能的实施方式中,在根据该功能点,将待测试版本区块链软件的测试数据集合中部分测试数据写入与该功能点关联的模拟区块链节点中之后,包括:

通过该功能点关联的模拟区块链节点的接口查询所述部分测试数据,如果查询到所述部分测试数据,则确定所述待测试版本区块链软件的该功能点验证成功;

若确定所述待测试版本区块链软件功能点中待测试的每个功能点验证成功,则确定所述待测试版本区块链软件的测试数据集合验证成功。

第二方面,提供一种测试区块链软件的装置,包括:

部署模块,用于在测试环境中运行待测试版本区块链软件;其中,所述测试环境中设置有各个模拟区块链节点;

同步模块,用于将历史上链数据同步到运行所述待测试版本区块链软件的各个模拟区块链节点中;其中,所述历史上链数据包括多个历史版本区块链软件依次迭代更新产生的上链数据,所述多个历史版本区块链软件是指在所述待测试版本区块链软件之前发布的所有版本的区块链软件;

写入模块,用于将待测试版本区块链软件的测试数据集合写入运行所述待测试版本区块链软件的对应模拟区块链节点中;

确定模块,用于若写入的所述待测试版本区块链软件的测试数据集合验证成功,确定所述待测试版本区块链软件测试成功。

在一种可能的实施方式中,所述部署模块,还用于在测试环境中运行待测试版本区块链软件之前,针对多个历史版本区块链软件,按照发布顺序,对每一个历史版本区块链软件,在测试环境中运行历史版本区块链软件;

所述同步模块,还用于将在运行前一个历史版本区块链软件的测试环境中产生的上链数据同步到运行该历史版本区块链软件的各个模拟区块链节点中;其中,所述前一个历史版本区块链软件是指相对于该历史版本区块链软件的前一个版本区块链软件;

所述写入模块,还用于将历史版本区块链软件的测试数据集合写入运行该历史版本区块链软件的对应模拟区块链节点中;

所述确定模块,还用于若写入的测试数据集合验证成功,确定该历史版本区块链软件测试成功,以及将运行历史版本区块链软件的测试环境产生的上链数据确定为历史上链数据。

在一种可能的实施方式中,所述装置包括生成模块,其中:

所述生成模块,用于在将待测试版本区块链软件的测试数据集合写入运行所述待测试版本区块链软件的对应模拟区块链节点中之前,根据所述待测试版本区块链软件所关联的服务协议类型,生成与所述服务协议类型匹配的待测试版本区块链软件的测试数据集合。

在一种可能的实施方式中,所述写入模块具体用于:

针对待测试版本区块链软件中待测试的每个功能点,根据该功能点,将待测试版本区块链软件的测试数据集合中部分测试数据写入与该功能点关联的模拟区块链节点中。

在一种可能的实施方式中,所述装置还包括验证模块,其中:

所述验证模块,用于在根据该功能点,将待测试版本区块链软件的测试数据集合中部分测试数据写入与该功能点关联的模拟区块链节点中之后,通过该功能点关联的模拟区块链节点的接口查询所述部分测试数据,如果查询到所述部分测试数据,则确定所述待测试版本区块链软件的该功能点验证成功;以及,

若确定所述待测试版本区块链软件功能点中待测试的每个功能点验证成功,则确定所述待测试版本区块链软件的测试数据集合验证成功。

第三方面,提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现第一方面及一种可能的实施方式中任一所述的方法。

第四方面,提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机指令,当所述计算机指令在计算机上运行时,使得计算机执行如第一方面及一种可能的实施方式中任一所述的方法。

本申请实施例中,在测试环境中运行待测试版本区块链软件之后,会将在该待测试版本区块链软件之前发布的所有历史版本区块链软件产生的历史上链数据同步到测试环境中的各个模拟区块链节点中,再将待测试版本区块链软件对应的测试数据集合写入各个模拟区块链节点中,由于是在同步历史上链数据之后,再将测试数据集写入测试环境中,不仅对待测试版本区块链软件在测试环境中能否正常运行进行测试,还对待测试版本区块链软件与历史上链数据能否兼容性进行了测试,对待测试版本区块链软件进行了更加全面的测试,提高了区块链软件测试结果的可靠性。且,本申请实施例中的测试待测试版本区块链软件的方法无需测试人员的手动干预,相对可以提高测试区块链软件的效率。且,由于历史上链数据包括了之前所有历史版本区块链软件产生的上链数据,因此,可以测试待测试版本区块链软件与所有历史版本产生的数据的兼容性,快速且高效地完成对待测试版本区块链软件的追溯验证。

附图说明

图1为本申请实施例提供的一种测试区块链软件的方法的应用场景示意图;

图2为本申请实施例提供的一种主链与测试链的结构示意图;

图3为本申请实施例提供的一种生成历史上链数据的方法的流程图;

图4为本申请实施例提供的一种测试区块链软件的方法的流程示意图;

图5为本申请实施例提供的在测试区块链软件过程中测试数据集合的走向示意图;

图6为本申请实施例提供的一种测试区块链软件的装置的结构图;

图7为本申请实施例提供的一种计算机设备的结构图。

具体实施方式

为了更好的理解本申请实施例提供的技术方案,下面将结合说明书附图以及具体的实施方式进行详细的说明。

为了便于本领域技术人员更好地理解本申请的技术方案,下面对本申请涉及的专有名词进行说明。

区块链软件:用于提供区块链服务的软件模块,该区块链软件可以理解为一个客户端,在区块链上各个区块链节点都运行有该区块链软件。区块链软件通常定义了区块链服务的架构、区块链服务的服务协议类型、区块链服务中存储数据的方式、区块链中生成区块的方式、区块链中的智能合约的创建、智能合约的注销方式等。随着区块链的数据的不断增加,开发者可能会不断升级区块链软件。升级后的区块链软件相较于前一个版本的区块链软件会进行优化调整功能点、按照需求进行更改功能点,或新增功能点等。

上链数据:是指该数据已被区块链的各个区块链节点认同,写入到区块链上的数据。区块链对应的使用业务场景不同,上链数据的具体内容也不同。区块链软件所采用的服务协议类型不同,上链数据的具体格式也可能会不同。

历史上链数据:是指待测试的区块链软件之前的所有版本的区块链软件生成的上链数据。

主链:是指区块链软件在各个区块链节点运行过程中,产生的真实的交易数据所形成的数据链。

测试链,又可以称为侧链,测试链与主链的数据相同,与主链之间相互隔离,互不影响。

测试用例:测试用例(testcase)是为某个特殊目标而编制的一组测试输入、执行条件以及预期结果,以便测试某个程序路径或核实是否满足某个特定需求。

测试数据:是指专门生成的用于测试区块链软件的功能点的数据,测试数据实质可以理解为交易数据。测试数据可以通过测试实例生成。对于不同版本的区块链软件,测试数据的格式可能不同。

测试数据集合:是由多组测试数据组合而成,多组测试数据中每组测试数据表示一笔交易。

未花费的交易输出(unspenttransactionoutputs,utxo):是区块链中的交易生成和验证的一个核心概念。交易构成了一组链式结构,所有合法的交易都可以追溯到前面的一个或多个交易的输出。

下面对本申请的设计思想进行说明。

目前,对区块链软件进行测试时,在测试环境中运行待测试版本区块链软件,并在运行待测试版本区块链软件的测试环境中写入测试数据集合,如果测试数据集合能验证成功,确定该待测试版本区块链软件运行正常。

本申请发明人通过对现有技术进行分析,本申请发明人发现现有这种测试区块链软件的方式与测试其它类型软件的方式相类似,即仅对区块链软件的运行过程进行测试,发明人发现现有这种测试方法忽略了区块链软件的特殊性。区块链中的上链数据具有不可篡改性,当区块链软件升级时,区块链软件的改动可能会影响历史上链数据,因此,发明人发现对区块链软件进行测试时,需要考虑区块链软件与历史上链数据的兼容性。

鉴于此,发明人设计了一种测试区块链软件的方法,该方法在对待测试版本区块链软件进行测试时,不仅会对待测试版本区块链软件在测试环境中的运行过程进行测试,还会对待测试版本区块链软件与历史上链数据的兼容性进行测试,提高测试结果的可靠性。

发明人进一步考虑,要对该待测试版本区块链软件与历史上链数据的兼容性进行测试,如果直接在主链上对待测试版本区块链软件进行测试,一旦待测试版本区块链软件异常,就会导致整个主链的异常,给各个区块链节点所对应的用户带来不可挽回的损失,因此发明人进一步提高构造历史上链数据的方法,根据历史版本区块链软件,在测试环境中构造历史上链数据,利用构造的历史上链数据对区块链软件的兼容性进行测试,在保证测试结果的可靠性的同时,还能尽量降低区块链软件的测试成本。

发明人进一步考虑,如果要构造历史上链数据,必然需要大量的测试数据。如果由测试人员手动向测试环境录入测试数据等,效率较低,且测试人员可能会遗漏或者输错某些测试数据,进而导致历史上链数据中的数据准确率低,因此发明人考虑到可以自动生成相应的测试数据集合,可以提高测试效率,且能避免手动录入出错的情况。

发明人进一步考虑,在测试过程中,如果在各个模拟区块链节点上都输入相应的测试数据,对每个模拟区块链节点都进行测试,测试周期相对较长,发明人发现可以根据待测试版本区块链软件新增的功能点,在与新增的功能点对应的模拟区块链节点上写入部分测试数据,有针对性地对与新增的功能点对应的模拟区块链节点进行测试,进一步可以提高测试的效率。

在介绍完本申请实施例的设计思想之后,下面对本申请实施例的技术方案能够适用的应用场景做一些简单介绍,需要说明的是,以下介绍的应用场景仅用于说明本申请实施例而非限定。在具体实施过程中,可以根据实际需要灵活地应用本申请实施例提供的技术方案。

请参照图1,图1为本申请实施例的一种测试区块链软件的应用场景的示意图。该应用场景中包括测试环境110、版本管理服务器140和测试区块链软件的装置150。

测试环境110中可以设置有多个模拟区块链节点,模拟区块链节点的数量可以是任意的,图1中是以测试环境110中包括第一模拟区块链节点120和第二模拟区块链节点130为例进行说明。每个模拟区块链节点相当于运行区块链软件的客户端。每个模拟区块链节点可以通过终端设备来实现,例如在多个终端设备中每个终端设备上运行区块链软件,终端设备例如个人计算机等。模拟区块链节点也可以通过云服务器中的服务来实现,例如,在云服务器中的服务上运行区块链软件,该服务就等效一个区块链节点。

第一模拟区块链节点120包括存储器121、处理器122和接口123。其中,存储器121可以用于存储程序指令,该程序指令被处理器122执行时,可以实现本申请实施例中第一模拟区块链节点120的功能,接口123可以实现与测试区块链软件的装置150实现通信。第二模拟区块链节点130包括存储器131、处理器132和接口133。存储器131可以用于存储程序指令,被处理器132执行时,可以实现本申请实施例中第二模拟区块链节点130的功能,接口133可以与测试区块链软件的装置150实现通信。

测试区块链软件的装置150可以通过服务器来实现,也可以通过软件模块来实现,本文具体限制测试区块链软件的装置150。测试区块链软件的装置150包括存储器151、处理器152和接口153。存储器151中存储有程序指令,处理器152执行该程序指令时,能够实现本申请实施例中测试区块链软件的装置150的功能,测试区块链软件的装置150可以通过接口153与测试环境110中各个模拟区块链节点进行通信,通过接口153也可以实现与版本管理服务器140进行通信。

版本管理服务器140包括存储器141、处理器142和接口143,版本管理服务器140中存储有待测试版本区块链软件,以及在待测试版本区块链软件之前发布的多个历史版本区块链软件。版本管理服务器140中的处理器142通过接口143从开发者的编译平台中去获取各个版本的区块链软件,并根据各个区块软件的发布时间先后顺序,为各个区块链软件设置版本号。或者,可以由开发者将各个版本的区块链软件直接写入该版本管理服务器140中。应当说明的是,多个历史版本区块链软件和待测试版本区块链软件是针对同一个区块链服务而言的依次迭代更新所产生的软件。

图1中是以版本管理服务器140、测试区块链软件的装置150和测试环境110可以通过不同的服务器实现,版本管理服务器140、测试区块链软件的装置150和测试环境110三者也可以部署在同一云服务器中。应当说明的是,为了避免影响主链的运行,版本管理服务器140、测试区块链软件的装置150和测试环境110三者可以部署在相对隔离主链相的网络环境中,例如局域网中。

上述需要进行通信的测试环境110、版本管理服务器140和测试区块链软件的装置150三者之间可以通过一个或者多个网络进行通信连接,当然,上述需要通信的设备并不限于图1中相连的设备,在任意设备有通信需求时,均可以通过上述网络进行通信。该网络可以是有线网络,也可以是无线网络,例如无线网络可以是移动蜂窝网络,或者可以是无线保真(wireless-fidelity,wifi)网络,当然还可以是其他可能的网络,本申请实施例对此不做限制。

下面对测试环境110、版本管理服务器140和测试区块链软件的装置150三者之间的交互过程进行示例性说明。

测试区块链软件的装置150获取历史上链数据,从版本管理服务器140中获取待测试版本区块链,在获取待测试版本区块链软件之后,将待测试版本区块链软件部署在测试环境110中,在测试环境110中各个模拟区块链节点上运行待测试版本区块链软件。再将历史上链数据同步到测试环境110中。在测试环境110中写入待测试版本区块链软件的测试数据集合,如果验证测试数据集合成功,则表示待测试版本区块链软件能够运行正常,且能够与历史上链数据兼容,测试区块链软件的装置150确定待测试版本区块链软件测试成功。

在确定待测试版本区块链软件测试成功之后,可以将待测试版本区块链软件上主链,实现对区块链软件的升级,便于开发者不断优化区块链服务。

本申请实施例中的测试方法,不仅会对待测试版本区块链软件的运行情况进行测试,还会对待测试版本区块链软件与历史上链数据的兼容性进行测试,提高了测试结果的可靠性。

当然,本申请实施例提供的方法并不限用于图1所示的应用场景中,还可以用于其他可能的应用场景,本申请实施例并不进行限制。对于图1所示的应用场景的各个设备所能实现的功能将在后续的方法实施例中一并进行描述,在此先不过多赘述。

在图1论述的应用场景的基础上,为进一步说明本申请实施例提供的技术方案,下面结合附图以及具体实施方式对此进行详细的说明。虽然本申请实施例提供了如下述实施例或附图所示的方法操作步骤,但基于常规或者无需创造性的劳动在所述方法中可以包括更多或者更少的操作步骤。在逻辑上不存在必要因果关系的步骤中,这些步骤的执行顺序不限于本申请实施例提供的执行顺序。所述方法在实际的处理过程中或者装置执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行。

如前文论述的内容,测试区块链软件的装置150对待测试版本区块链软件进行测试之前,需要先获取历史上链数据,下面对测试区块链软件的装置150获取历史上链数据的方式进行说明。

方式一:

测试区块链软件的装置150从测试链中获取历史上链数据。

具体的,测试链与主链的数据相同,主链运行在各个区块链节点中,测试链运行在测试网中,测试区块链软件的装置150可以被提前授权,可以从测试网中获取测试链,该测试链包括多个历史版本区块链软件产生的上链数据,测试区块链软件的装置150可以将该测试链作为历史上链数据。

例如,请参照图2,图2中是主链和测试链的一种示意,主链和测试链的构成一模一样,待测试版本区块链软件为第四个版本,也就是说,待测试版本区块链软件之前存在3个版本区块链软件。各个区块链节点在运行第一历史版本区块链软件时,产生了图2中的区块1和区块2,第一历史版本区块链软件后更新为第二历史版本区块链软件,运行第二历史版本区块链软件时,产生了图2中的区块链3和区块4。第二历史版本区块链软件后更新为第三历史版本区块链软件后,产生了区块5。测试区块链软件的装置150直接从测试网中获取测试链,将该测试链确定为历史上链数据。

本申请实施例中,直接以测试链作为历史上链数据,相对可以减少测试区块链软件的装置150在获取历史上链数据过程中的处理量。

方式二:

测试区块链软件的装置150根据多个历史版本区块链软件,构造历史上链数据。

具体的,测试区块链软件的装置150针对多个历史版本区块链软件,按照发布顺序,对每一个历史版本区块链软件,执行图3所示的步骤。下面结合图3对构造历史上链数据的过程进行介绍。

s301,测试区块链软件的装置150获取历史版本区块链软件。

具体的,版本管理服务器140存储有各个版本的区块链软件。测试区块链软件的装置150在需要构造历史上链数据时,可以向版本管理服务器140请求历史版本区块链软件,版本管理服务器140将历史版本区块链软件发送给测试区块链软件的装置150,相当于测试区块链软件的装置150获取历史版本区块链软件。或者,测试区块链软件的装置150在确定需要对该历史版本区块链软件进行处理之后,根据历史版本区块链软件的版本号,直接访问版本管理服务器140,获取与该版本号对应的该历史版本区块链软件。

s302~s303,部署历史版本区块链软件。

测试区块链软件的装置150在获取历史版本区块链软件之后,执行s302以及s303,将历史版本区块链软件部署在第一模拟区块链节点120和第二模拟区块链节点130中。

具体的,图3中是以测试环境110中包括第一模拟区块链节点120和第二模拟区块链节点130为例。无论有多少个模拟区块链节点,测试区块链软件的装置150会将该历史版本区块链软件部署到每个模拟区块链节点中。测试区块链软件的装置150可以是同步将该历史版本区块链软件部署多个模拟区块链节点130中,也可以是按照预设先后顺序依次将该历史版本区块链软件部署到各个模拟区块链节点中。也就是说,图3中的s302和s303的执行顺序可以是任意的,本文不做具体限制。

s304~s305,同步在运行前一个历史版本区块链软件的测试环境110中产生的上链数据。

在测试区块链软件的装置150会将历史版本区块链软件部署到测试环境110中的每个模拟区块链节点之后,每个模拟区块链节点都运行该历史版本区块链软件。测试区块链软件的装置150执行s304和s305,将前一个历史版本区块链软件的测试环境110中产生的上链数据同步到第一模拟区块链节点120和第二模拟区块链节点130中。

具体的,前一个历史版本区块链软件是指与该历史版本区块链软件发布顺序相邻,且在该历史版本区块链软件之前发布的区块链软件版本。在测试环境110运行前一个历史版本区块链软件时,测试区块链软件的装置150会将上前一个历史版本区块链软件在测试环境110中运行产生的上链数据同步到运行前一个历史版本区块链软件的各个模拟区块链节点中,并将在相应的模拟区块链节点中写入与前一个历史版本区块链软件对应的测试数据集,从而生成前一个历史版本区块链软件的测试环境110中产生的上链数据。测试区块链软件的装置150获取该在运行前一个历史版本区块链软件的测试环境110中产生的上链数据,并将其同步到第一模拟区块链节点120和第二模拟区块链节点130中。

其中,如果历史版本区块链软件为第一个历史版本区块链软件,也就是开发者最先发布的第一个区块链软件,该第一历史版本区块链软件不存在前一个历史版本区块链软件,因此,在对第一个历史版本区块链软件处理时,测试区块链软件的装置150无需执行s304和s305的步骤。

s306,向测试环境110中对应的模拟区块链节点请求写入与该历史版本区块链软件的测试数据集合。

具体的,为了便于模拟区块链节点提前准备接收测试数据,以及为了确保对应的模拟区块链节点处于正常状态,测试区块链软件的装置150可以向对应的模拟区块链节点发送请求,用于请求写入与该历史版本区块链软件的测试数据集合。其中,涉及到测试区块链软件的装置150需要确定到底向哪些模拟区块链节点发送请求,下面进行示例说明。

确定方法一:

确定该历史版本区块链软件相对于前一个历史版本区块链软件需要验证的功能点,并确定与该功能点关联的模拟区块链节点,并向与该功能点关联的模拟区块链节点发送请求。

如果需要验证的功能点关联多个模拟区块链节点,或者需要测试的功能点有多个,多个功能点关联多个模拟区块链节点,则测试区块链软件的装置150向多个模拟区块链节点分别请求写入测试数据集中的部分测试数据。

例如,该历史版本区块链软件相对于前一个历史版本区块链软件新增的功能为验证节点的验证机制改变,第一模拟区块链节点120为测试环境110中的验证节点,因此,测试区块链软件的装置150向第一模拟区块链节点120请求写入测试数据集合。

s307,接收第一写入反馈。

具体的,在相应的模拟区块链节点接收请求写入历史版本区块链软件的测试数据集合之后,如果确定该模拟区块链节点能够正常接收测试数据集合,则可以向测试区块链软件的装置150发送第一写入反馈,第一写入反馈用于表示该模拟区块链节点确认能够处理测试数据集合。

s308,将测试数据集合写入第一模拟区块链节点中。

具体的,测试区块链软件的装置150解析该历史版本区块链软件,生成与该历史版本区块链软件的服务协议类型匹配的测试用例,并通过测试用例生成与该历史版本区块链软件的测试数据集合。测试用例定义了测试数据集合的数据格式。由于不同历史版本区块链软件的服务协议类型可能不同,因此,不同历史版本区块链软件所对应的测试数据集合的格式也可能不同。

生成与该历史版本区块链软件的测试数据集合之后,将该历史版本区块链软件的测试数据集合写入相应的模拟区块链节点中。

应当说明的是,由于可能有多个历史版本区块链软件,不同历史版本区块链软件待测试的功能点可能涉及的模拟区块链节点不同,因此在对不同的历史版本区块链软件执行s306时,测试区块链软件的装置150将测试数据集合写入的模拟区块链节点可能也不相同。

具体的,测试区块链软件的装置150在向第一模拟区块链节点120请求写入测试数据集合之后,测试区块链软件的装置150将测试数据集合写入第一模拟区块链节点中。

s309,验证写入的待测试版本区块链软件的测试数据。

具体的,测试区块链软件的装置150在将测试数据集合写入第一模拟区块链节点120中之后,可以在第一模拟区块链节点120中查询测试数据集合,如果通过第一模拟区块链节点120的接口123中查询到测试数据集合,表示该测试数据集合验证成功。

如果测试区块链软件的装置150在将测试数据集合中的测试数据写入多个模拟区块链节点中,则测试区块链软件的装置150在验证测试数据集合时,需要通过各个模拟区块链节点分别查询对应的测试数据,如果能正常查询到相应的测试数据,则表示该测试数据验证成功。

如果测试区块链软件的装置150验证测试数据集合成功,则执行步骤310,若验证成功,确定待测试版本区块链软件测试成功。如果测试区块链软件的装置150验证测试数据集合不成功,则测试区块链软件的装置150从第一个历史版本区块链软件重新开始s301至s310的过程。

在一种可能的实施例中,测试区块链软件的装置150生成每个历史版本区块链软件的测试报告。

具体的,在对每个历史版本区块链软件执行s301至s310的过程之后,会得到该历史版本区块链软件的测试结果,测试区块链软件的装置150可以获取该历史版本区块链软件的测试结果,生成与该历史版本区块链软件的测试报告,以便于后期排查测试不成功的原因。为了便于识别多个历史版本区块链软件的测试报告,测试区块链软件的装置150可以在相应的测试报告中携带该历史版本区块链软件的版本号。

在对多个历史版本区块链软件中每个历史版本区块链均执行上述s301到步骤310的方法,直到针对相对于待测试版本区块链软件的前一个历史版本区块链软件,执行s301至s310的方法之后,测试区块链软件的装置150获取得到历史上链数据。

作为一种实施例,s306和s307为可选的步骤,也就是说,测试区块链软件的装置150也可以不提前向模拟区块链节点请求写入。

在方式二中,由于是通过多个历史版本区块链软件,构造相应的上链数据,因此,使得历史上链数据的数据量可控,提高测试的灵活性,且无需依赖测试链,保证主链数据的安全。

在获得历史上链数据之后,测试区块链软件的装置150对待测试版本区块链软件进行测试。下面结合图4,对本申请实施例涉及的具体测试过程进行说明。

s401,获取待测试版本区块链软件。

具体的,如前文论述的内容,版本管理服务器140中存储有各个版本的区块链软件。测试区块链软件的装置150从版本管理服务器140获取待测试版本区块链软件。

s402~s403,部署待测试版本区块链软件。

具体的测试区块链软件的装置150在获取待测试版本区块链软件之后,执行s402和s403,将待测试版本区块链软件部署在第一模拟区块链节点120和第二模拟区块链节点130中。

s404~s405,同步历史上链数据。

在各个模拟区块链节点运行待测试版本区块链软件之后,测试区块链软件的装置150执行s404,将历史上链数据同步到第一模拟区块链节点120中和第二模拟区块链节点130中。

在一种可能的实施例中,为了保证各个模拟区块链节点提前准备接收历史上链数据,测试区块链软件的装置150在执行s404和s405之前,可以向测试环境110中各个模拟区块链节点请求同步历史上链数据,以提前告知各个模拟区块链节点,将有历史上链数据需要被同步至各个模拟区块链节点。

s406~s407,向相应的模拟区块链节点请求写入待测试版本区块链软件的测试数据集合。

具体的,测试区块链软件的装置150向第一模拟区块链节点120请求写入待测试版本区块链软件的部分测试数据,以及向第二模拟区块链节点130请求写入待测试版本区块链软件的部分测试数据。

其中,测试区块链软件的装置150向测试环境110中各个模拟区块链节点中请求写入待测试版本区块链软件的测试数据之前,测试区块链软件的装置150需要先确定到底将测试数据集合写入哪些模拟区块链节点中,才能向对应的模拟区块链节点请求写入测试数据。图4中是以测试区块链软件的装置150确定向第一模拟区块链模拟节点120和第二区块链模拟节点130中写入测试数据为例进行说明。测试区块链软件的装置150在确定将测试数据集合写入哪些模拟区块链节点的方式有多种,下面进行示例说明。

a1:

测试区块链软件的装置150提前根据待测试版本区块链软件可以将测试数据集合平均写入各个模拟区块链节点中,也就是说,测试区块链软件的装置150后续会将测试数据集合中的测试数据写入测试环境110中的各个模拟区块链节点中。

本申请实施例中,在每个模拟区块链节点中都写入部分测试数据,测试区块链软件的装置150分配测试数据较为方便,且能够完成对多测试环境110中各个模拟区块链节点中的测试。

a2:

根据待测试版本区块链中待测试的每个功能点,根据该功能点,确定待测试版本区块链软件中的测试数据集合中部分测试数据写入与该功能点关联的模拟区块链节点中。

具体的,测试区块链软件的装置150可以提前确定待测试版本区块链软件相对于该待测试版本区块链软件的前一个版本区块链软件新增的功能点,分析与各个新增的功能点关联的模拟区块链节点,后再将测试数据集合分别写入对应的模拟区块链节点中。

例如,测试区块链软件的装置150可以提前确定待测试版本区块链软件新增的功能点数据存储方式改变,待测试版本区块链软件涉及以领导(leader)节点(第一模拟区块链节点120为例)、和跟随(follower)节点(第二区块链模拟节点130为例)。测试区块链软件的装置150确定数据存储方式改变涉及区块链中的第一模拟区块链节点120和第二区块链模拟节点130,因此,测试区块链软件的装置150确定向第一模拟区块链节点120和第二区块链模拟节点130均需要写入测试数据。

本申请实施例中,测试区块链软件的装置150在写入测试数据时,根据新增的功能点,确定将测试数据集合分别写入与新增的功能点关联的模拟区块链节点中,对各个区块链节点有针对性地进行测试,可以便于提高后期对各个测试数据的验证过程的效率。

s408~s409,接收写入反馈。

具体的,在请求相应的区块链模拟节点之后,第一模拟区块链节点120确定能够接收相应的测试数据,向测试区块链软件的装置150发送第二写入反馈,测试区块链软件的装置150接收到第二写入反馈。同样的,第二模拟区块链节点130确定能够接收相应的测试数据,向测试区块链软件的装置150发送第三写入反馈,接收第三写入反馈。第二写入反馈和第三写入反馈均用于表示对应的模拟区块链节点已准备接收相应的测试数据。

在一种可能的实施例中,测试区块链软件的装置150会根据待测试版本区块链软件的服务协议类型,生成与服务协议类型匹配的待测试版本区块链软件的测试数据。

具体的,区块链软件服务在不断升级的过程中,区块链软件的服务协议类型可能会相应地改变,因此,对于不同版本的区块链软件,构造的测试数据集可能并不完全相同。因此,测试区块链软件的装置150会根据该待测试版本区块链软件的服务协议类型,生成与该服务协议类型匹配的测试数据集。

在一种可能的实施例中,测试区块链软件的装置150可以根据该待测试版本区块链软件的服务协议类型,生成与该服务协议类型对应的测试用例,再通过测试用例生成对应的测试数据集合。

为了便于测试区块链软件的装置150识别待测试版本区块链软件对应的测试数据集合,在生成测试数据集合的同时,可以携带该测试数据集合对应的待测试版本区块链软件的版本号。

例如,一组测试数据包括目标地址,交易的哈希值、索引值、当前地址、解锁脚步和锁定脚步等。

具体的,第一模拟区块链节点120向第二模拟区块链节点130进行转账时,该笔交易的输出中包含锁定脚本,第二模拟区块链节点130要使用第一模拟区块链节点120转向第二模拟区块链节点130的资产时,需要在交易中输入相应的解锁脚步,形成一笔交易,也就是一组测试数据。

s410~s411,写入待测试版本区块链软件的测试数据集合。

具体的,测试区块链软件的装置150在接收写入反馈之后,确定相应的模拟区块链节点已准备接收相应的测试数据,因此,测试区块链软件的装置150将测试数据集合中的部分测试数据写入第一模拟区块链节点120中,以及测试区块链软件的装置150可以将待测试版本区块链的部分测试数据写入第二模拟区块链节点130中。

s412,验证写入的待测试版本区块链软件的测试数据集合。

具体的,测试区块链软件的装置150向第一模拟区块链节点120和第二模拟区块链节点中都写入了测试数据,因此需要对写入第一模拟区块链节点120中测试数据进行验证,以及对写入第二模拟区块了节点130中的测试数据进行验证。

进一步的,测试区块链软件的装置150通过各个功能点关联的模拟区块链节点的接口查询对应的测试数据,如果在该模拟区块链节点中能够查询到正确的测试数据,确定待测试版本区块链软件的功能点验证成功。直到确定待测试版本区块链软件的所有新增的功能点均验证成功。

例如在第一模拟区块链节点120写入了一笔交易数据(相当于测试数据),后期通过第一模拟区块链节点120的接口123能够查询都该交易,表示该交易数据写入成功。

s413,确定该待测试版本区块链软件测试成功。

具体的,测试区块链软件的装置150验证测试数据集合成功,确定该待测试版本区块链软件测试成功。

s414,确定该待测试版本区块链软件测试失败。

具体的,如果待测试版本区块链软件的某个功能点的测试数据失败,测试区块链软件的装置150确定待测试版本区块链软件测试失败。

应当说明的是,s413和s414为两种不同的情况,测试区块链软件的装置150执行其中的一种情况来执行。

作为一种实施例,s406至s409为可选的部分,也就是说,测试区块链软件的装置150无需提前请求相应的模拟区块链节点。

下面结合图5,对图3和图4结合的测试过程进行具体示例说明。图5中是以待测试版本区块链软件为第四个区块链软件版本为例,也就是说,待测试版本区块链软件之前包括第一历史版本区块链软件、第二历史版本区块链软件和第三历史版本区块链软件。

s501,将第一测试数据集合①写入运行第一历史版本区块链软件的测试环境中。

具体的,测试区块链软件的装置150先在测试环境110中部署第一历史版本区块链软件,第一测试数据集合①是测试区块链软件的装置150生成的,与第一历史版本区块链软件的服务协议类型匹配的测试数据。将第一测试数据集合①写入运行第一历史版本区块链软件的测试环境110中。再对写入的第一测试数据集①进行验证。

验证第一测试数据集合①成功之后,测试区块链软件的装置150从版本管理服务器140中拉取第二历史版本区块链软件,将第二历史版本区块链软件部署在测试环境110中。

s502,将第一测试数据集合①同步至运行第二历史版本区块链软件的测试环境110中。

s503,将第二测试数据集合②写入运行第二历史版本区块链软件的测试环境110中。

在将第二测试数据集合②写入测试环境110之后,对第二测试数据集合②进行验证。

验证第二测试数据集合②成功之后,测试区块链软件的装置150从版本管理服务器140中拉取第三历史版本区块链软件,将第三历史版本区块链软件部署在测试环境110中。

s504,将第一测试数据集合①+第二测试数据集合②同步至运行第二历史版本区块链软件的测试环境中。

s505,将第三测试数据集合③写入运行第三历史版本区块链软件的测试环境中。

在将第三测试数据集合③写入测试环境110之后,对第三测试数据集合③进行验证。

验证第三测试数据集合③成功之后,测试区块链软件的装置150从版本管理服务器140中拉取待测试版本区块链软件,将待测试版本区块链软件部署在测试环境110中。

s506,将第一测试数据集合①+第二测试数据集合②+第三测试数据集合③同步至运行待测试版本区块链软件的测试环境110中。

s507,将第四测试数据集合④写入运行待测试历史版本区块链软件的测试环境110中。

具体的,在将对第四测试数据集合④写入运行待测试历史版本区块链软件的测试环境110中之后,第四测试数据集合④进行验证,验证第四测试数据集合成功之后,确定待测试版本区块链软件测试成功。

基于同一技术构思,本申请实施例还提供一种测试区块链软件的装置,该装置即为前文论述的测试区块链软件的装置150,请参照图6,该装置包括:

部署模块601,用于在测试环境中运行待测试版本区块链软件;其中,测试环境中设置有各个模拟区块链节点;

同步模块602,用于将历史上链数据同步到运行待测试版本区块链软件的各个模拟区块链节点中;其中,历史上链数据包括多个历史版本区块链软件依次迭代更新产生的上链数据,多个历史版本区块链软件是指在待测试版本区块链软件之前发布的所有版本的区块链软件;

写入模块603,用于将待测试版本区块链软件的测试数据集合写入运行待测试版本区块链软件的对应模拟区块链节点中;

确定模块604,用于若写入的待测试版本区块链软件的测试数据集合验证成功,确定待测试版本区块链软件测试成功。

在一种可能的实施例中,部署模块601,还用于在测试环境中运行待测试版本区块链软件之前,针对多个历史版本区块链软件,按照发布顺序,对每一个历史版本区块链软件,在测试环境中运行历史版本区块链软件;

同步模块602,还用于将在运行前一个历史版本区块链软件的测试环境中产生的上链数据同步到运行该历史版本区块链软件的各个模拟区块链节点中;其中,前一个历史版本区块链软件是指相对于该历史版本区块链软件的前一个版本区块链软件;

写入模块603,还用于将历史版本区块链软件的测试数据集合写入运行该历史版本区块链软件的对应模拟区块链节点中;

确定模块604,还用于若写入的测试数据集合验证成功,确定该历史版本区块链软件测试成功,以及将运行历史版本区块链软件的测试环境产生的上链数据确定为历史上链数据。

在一种可能的实施例中,装置包括生成模块605,其中:

生成模块605,用于在将待测试版本区块链软件的测试数据集合写入运行待测试版本区块链软件的对应模拟区块链节点中之前,根据待测试版本区块链软件所关联的服务协议类型,生成与服务协议类型匹配的待测试版本区块链软件的测试数据集合。

在一种可能的实施例中,写入模块603具体用于:

针对待测试版本区块链软件中待测试的每个功能点,根据该功能点,将待测试版本区块链软件的测试数据集合中部分测试数据写入与该功能点关联的模拟区块链节点中。

在一种可能的实施例中,装置还包括验证模块606,其中:

验证模块606,用于在根据该功能点,将待测试版本区块链软件的测试数据集合中部分测试数据写入与该功能点关联的模拟区块链节点中之后,通过该功能点关联的模拟区块链节点的接口查询部分测试数据,如果查询到部分测试数据,则确定待测试版本区块链软件的该功能点测试成功;以及,

若确定待测试版本区块链软件功能点中待测试的每个功能点验证成功,则确定待测试版本区块链软件的测试数据集合验证成功。

作为一种实施例,生成模块605和验证模块606是测试区块链软件的装置150中可选的模块。

基于同一技术构思,本申请实施例还提供一种计算机设备,该计算机设备可以是通过具有处理能力的设备来实现,例如服务器等。请参照图7,该计算机设备包括处理器701和存储器702,其中:

存储器702中存储有计算机程序;

处理器701执行该计算机程序时实现前文论述的测试区块链软件的方法。

图7中是以一个处理器701为例,但是实际上不限制处理器701的数量。

其中,存储器702可以是易失性存储器(volatilememory),例如随机存取存储器(random-accessmemory,ram),存储器702也可以是非易失性存储器(non-volatilememory),例如只读存储器,快闪存储器(flashmemory),硬盘(harddiskdrive,hdd)或固态硬盘(solid-statedrive,ssd)、或者存储器702是能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。存储器702可以是上述存储器的组合。

作为一种实施例,图6中的测试区块链软件的装置150的各个模块的功能可以通过图7中的处理器701来实现。

作为一种实施例,前文论述的测试区块链软件的装置150设置在该计算机设备中,也就是说,测试区块链软件的装置150为计算机设备的一部分。

基于同一技术构思,本申请实施例还一种计算机可读存储介质,该计算机可读存储介质存储有计算机指令,当所述计算机指令在计算机上运行时,使得计算机执行如前文论述的测试区块链软件的方法。

本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。

本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。

显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1