CN113268408B - 一种面向开放许可链的自动化测试方法 - Google Patents
一种面向开放许可链的自动化测试方法 Download PDFInfo
- Publication number
- CN113268408B CN113268408B CN202011573839.6A CN202011573839A CN113268408B CN 113268408 B CN113268408 B CN 113268408B CN 202011573839 A CN202011573839 A CN 202011573839A CN 113268408 B CN113268408 B CN 113268408B
- Authority
- CN
- China
- Prior art keywords
- slave node
- node
- chain
- test
- test task
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000012360 testing method Methods 0.000 title claims abstract description 322
- 238000001514 detection method Methods 0.000 claims description 59
- 238000007689 inspection Methods 0.000 claims description 29
- 238000013475 authorization Methods 0.000 claims description 18
- 238000012797 qualification Methods 0.000 claims description 9
- 238000012546 transfer Methods 0.000 claims description 9
- 238000012550 audit Methods 0.000 claims description 6
- 230000001360 synchronised effect Effects 0.000 claims description 3
- 230000001960 triggered effect Effects 0.000 claims description 3
- 238000012423 maintenance Methods 0.000 abstract description 4
- 238000000034 method Methods 0.000 abstract description 3
- 230000003993 interaction Effects 0.000 abstract description 2
- 230000000007 visual effect Effects 0.000 abstract description 2
- 230000009286 beneficial effect Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000010998 test method Methods 0.000 description 2
- 230000001174 ascending effect Effects 0.000 description 1
- 230000002596 correlated effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3684—Test management for test design, e.g. generating new test cases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3688—Test management for test execution, e.g. scheduling of test suites
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q10/00—Administration; Management
- G06Q10/10—Office automation; Time management
- G06Q10/103—Workflow collaboration or project management
Abstract
本发明涉及一种面向开放许可链的自动化测试方法,应用于面向开放许可链的自动化测试系统,包括测试任务控制模块、开放许可链客户端;从动节点同步了所述开放许可链中的所有数据;主控节点管理所有从动节点的部署和启动;开放许可链客户端提供一个向开放许可链提交交易请求的可视化交互界面;测试任务控制模块用于设定测试场景,指定测试任务,并生成开放许可链的测试报告;针对三种测试场景设定新从动节点入链测试任务,超级测试任务,以及交易功能测试任务,实现对开放许可链的自动化测试,在保障测试场景完整性的同时,减少了测试维护成本并提高测试效率。
Description
技术领域
本发明涉及区块链自动化测试方法,为一种面向开放许可链的自动化测试方法。
背景技术
随着互联网的发展以及科技的进步,区块链技术以其去中心化、安全、可靠的特点,在各行各业的应用越来越广泛;开放许可链是一种节点具有许可加入特性的区块链,不同于传统的软件系统,开放许可链上的历史账本数据通常和节点强相关。开放许可链的维护和升级比较复杂,需要保证历史数据的一致性,以及系统的稳定性,包括:新的节点能否成功添加并维持相同的hash参与共识,以及达到升级高度后,新的节点特性是否完美继承;目前针对开放许可链的测试大都是通过手动测试的方法,存在测试效率低,耗时长,且测试场景不规范,测试用例不完整等问题。而自动化测试的执行效率高,维护成本低且可以通过代码覆盖率检验测试用例的有效性,所以一种高效、稳定且可靠的面向开放许可链的自动化测试方法具有种重要的意义。
发明内容
有鉴于此,本发明提供一种解决或部分解决上述问题的一种面向开放许可链的自动化测试方法。
为达到上述技术方案的效果,本发明的技术方案为:一种面向开放许可链的自动化测试方法,包含以下步骤:
面向开放许可链的自动化测试方法应用于一个面向开放许可链的自动化测试系统,面向开放许可链的自动化测试系统用于对开放许可链的测试场景进行测试;
开放许可链是指节点需要通过身份认证获得许可才可以加入的区块链;
面向开放许可链的自动化测试系统包括测试任务控制模块、开放许可链客户端;
从动节点是具有存储空间,并与网络进行连接,通过身份认证获得许可权限后才可以加入开放许可区块链的节点;
从动节点用于同步开放许可链中的账本数据和智能合约;
开放许可区块链中已经存在的从动节点为已有的从动节点;
需要新加入到开放许可区块链中的从动节点为新从动节点;
主控节点是开放许可链中的用于管理所有从动节点的部署和启动的节点,开放许可链中只有一个主控节点;
主控节点中设置有区块同步机制;区块同步机制驱动新从动节点完成开放许可链的数据同步;
开放许可链客户端与从动节点进行连接,开放许可链客户端可以向从动节点广播交易请求;交易请求包括许可授权交易、取消授权交易、转账交易以及智能合约调用功能;
从动节点接收到广播的交易请求后,触发智能合约用以完成交易请求,并将交易请求的数据更新到开放许可链中的区块里;
测试任务控制模块用于设定开放许可链的测试场景,指定开放许可链的测试任务,并生成开放许可链的测试报告;
测试任务控制模块与开放许可链的主控节点进行连接,测试任务控制模块通过主控节点将测试任务发送到所有的从动节点中,从动节点接收到测试任务后执行测试任务,并将测试结果发送至主控节点,主控节点收集到测试结果后,将测试结果发送至测试任务控制模块,测试任务控制模块对测试结果进行分析,生成开放许可链的测试报告;
测试任务控制模块的测试场景包括三种场景:新从动节点入链测试场景、历史数据继承测试场景、交易功能测试场景;
新从动节点入链测试场景是针对新从动节点加入开放许可链时进行测试的场景;
历史数据继承测试场景是针对开放许可链升级后的数据是否被正常继承,以及智能合约调用功能是否能够正常执行的测试场景;
交易功能测试场景是针对开放许可链升级后的交易功能进行测试的场景;交易功能包括许可授权交易功能、取消授权交易功能、转账交易功能以及智能合约调用功能;
测试任务控制模块为三种测试场景分别设定测试任务,为新从动节点入链测试场景设定新从动节点入链测试任务,为历史数据继承测试场景设定超级测试任务,为交易功能测试场景设定交易功能测试任务;
新从动节点入链测试任务用于对加入到开放许可链中的新从动节点进行自动化测试,保证加入到开放许可链中的新从动节点的区块高度、区块默克尔树根哈希值以及新的区块生成逻辑与已有的从动节点的区块高度、区块默克尔树根哈希值以及新的区块生成逻辑保持一致,具体步骤为:
新从动节点入链测试任务中设置有新从动节点入链申请审核机制、新从动节点预检机制、区块同步检测机制;
新从动节点入链申请审核机制对新从动节点的入链申请进行审核;
新从动节点预检机制对新从动节点的存储空间、网络连接和运算能力进行检测;
区块同步检测机制用于检测新从动节点在进行区块同步后的区块高度、区块默克尔树根哈希值是否与开放许可链中已有的从动节点中的区块高度、区块默克尔树根哈希值保持一致;
当有新从动节点需要添加到开放许可链中时,新从动节点向主控节点提交入链申请,主控节点接收到入链申请后,通知测试任务控制模块触发新从动节点入链申请审核机制,新从动节点入链申请审核机制对新从动节点的入链申请进行审核,审核通过后,向主控节点发送新从动节点入链申请审核通过指令,主控节点接收到新从动节点入链申请审核通过指令后,将新从动节点加入到主控节点的新从动节点预检控制列表中;
当新从动节点加入到主控节点的新从动节点预检控制列表中时,主控节点向测试任务控制模块发送新从动节点预检指令,测试任务控制模块接收到主控节点的新从动节点预检指令后触发新从动节点预检机制;
新从动节点预检机制对新从动节点的存储空间、网络连接和运算能力进行检测,生成新从动节点的存储空间、网络连接和运算能力的预检报告A;
新从动节点预检机制中设置有新从动节点预检合格标准,当新从动节点的存储空间、网络连接和运算能力的预检报告A中,有存储空间、网络连接和运算能力中的任意一项不满足新从动节点预检合格标准时,测试任务控制模块向主控节点发送新从动节点预检失败指令和新从动节点预检失败报告B,主控节点接收到新从动节点预检失败指令和新从动节点预检失败报告B后拒绝新从动节点加入到开放许可链中,输出并存储新从动节点预检失败报告B,供面向开放许可链的自动化测试系统的用户查看;
当新从动节点的存储空间、网络连接和运算能力的预检报告A满足新从动节点预检合格标准时,测试任务控制模块向主控节点发送新从动节点预检成功指令和新从动节点预检成功报告C;主控节点接收到新从动节点预检成功指令和新从动节点预检成功报告C后,将新从动节点存储到主控节点的新从动节点同步列表中;
新从动节点同步列表是用于存储等待进行数据同步的新从动节点的列表;
当主控节点的新从动节点同步列表中的新从动节点数量大于零时,触发主控节点的区块同步机制;
区块同步机制为主控节点的新从动节点同步列表中的新从动节点进行数据同步,主控节点从高度为0的区块开始,将开放许可链中已有区块同步至新从动节点中;当区块同步机制完成时,触发测试任务控制模块中的区块同步检测机制;
区块同步检测机制对完成区块同步的新从动节点的区块高度、区块默克尔树根哈希值进行检测,并判断新从动节点的区块高度、区块默克尔树根哈希值是否与开放许可链中已有的从动节点的区块高度、区块默克尔树根哈希值保持一致;
当区块同步检测机制检测到新从动节点的区块高度和区块默克尔树根哈希值与开放许可链中已有的从动节点的区块高度和区块默克尔树根哈希值不一致时,测试任务控制模块向主控节点发送一条区块同步失败指令;主控节点拒绝新从动节点加入到开放许可链中;
当区块同步检测机制检测到新从动节点的区块高度和区块默克尔树根哈希值与开放许可链中已有的从动节点的区块高度和区块默克尔树根哈希值一致时,测试任务控制模块向开放许可链中的新从动节点和已有的从动节点广播一条测试交易请求,开放许可链中的新从动节点和已有的从动节点分别为测试交易请求生成新的区块;
测试交易请求是专门用于测试开放许可链中的从动节点的交易功能的请求;
区块同步检测机制比较新从动节点中的新区块的默克尔树根哈希值与已有的从动节点中的新区块的默克尔树根哈希值;
当新从动节点中的新区块的默克尔树根哈希值与已有的从动节点中的新区块的默克尔树根哈希值不一致时,测试任务控制模块向主控节点发送一条区块同步失败指令;
主控节点拒绝新从动节点加入到开放许可链中;
当区块同步检测机制检测到新从动节点的新区块的默克尔树根哈希值与已有的从动节点的新区块的默克尔树根哈希值一致时,测试任务控制模块向主控节点发送一条区块同步成功指令;
主控节点将新从动节点加入到开放许可链中;新从动节点入链测试任务完成;
开放许可链升级之后,超级测试任务用于测试开放许可链中升级后的账本数据和智能合约是否被正常继承,以及智能合约调用功能是否能够正常执行;
超级测试任务的步骤为:
测试任务控制模块保存开放许可链升级之前的从动节点中的二进制文件,以及开放许可链升级之后的从动节点中的二进制文件;
开放许可链升级之前的从动节点中的二进制文件为未升级的二进制文件;
开放许可链升级之后的从动节点中的二进制文件为升级后的二进制文件;
测试任务控制模块首先利用未升级的二进制文件生成一个测试集群,部署智能合约,修改智能合约状态,测试集群触发从动节点的升级;
当从动节点的升级完成一半时,暂停从动节点的升级,并保存当前的从动节点的账本数据和智能合约的数据;
定义当前的从动节点的账本数据和智能合约的数据为第一历史数据;
然后未升级的二进制文件替换为升级后的二进制文件,再次启动测试集群,装载旧的智能合约、查询智能合约的历史,调用智能合约的历史,记录当前的从动节点的账本数据和智能合约的数据;
定义当前的从动节点的账本数据和智能合约的数据为第二历史数据;
将第一历史数据与第二历史数据进行比较,当第一历史数据与第二历史数据不一致表示超级测试任务失败,测试任务控制模块生成超级测试任务失败报告一;
当第一历史数据与第二历史数据一致时,触发从动节点的继续升级,使从动节点的升级全部完成,测试任务控制模块再一次查询智能合约的历史,调用智能合约的历史,记录当前的从动节点的账本数据和智能合约的数据;
定义当前的从动节点的账本数据和智能合约的数据为第三历史数据;
将第三历史数据与第一历史数据和第二历史数据进行比较,当第三历史数据与第一历史数据和第二历史数据存在不同时,表示超级测试任务失败,测试任务控制模块生成超级测试任务失败报告二;
当第三历史数据与第一历史数据和第二历史数据完全相同时,表示超级测试任务成功,测试任务控制模块生成超级测试任务成功报告一;
交易功能测试任务用于测试开放许可链升级后且通过超级测试任务后所有的交易功能是否被支持;
交易功能包括许可授权交易功能、取消授权交易功能、转账交易功能以及智能合约调用功能;
交易功能测试任务的具体步骤为:
测试任务控制模块自动触发开放许可链中支持的所有类型的智能合约调用功能和交易功能,测试任务控制模块收集所有智能合约调用功能和交易功能的结果,作为实际交易结果;
测试任务控制模块为自动触发的所有智能合约调用功能和交易功能设置预期交易结果;
测试任务控制模块将实际交易结果与预期交易结果进行比较,当实际交易结果与预期交易结果一致时,表示交易功能测试任务成功,测试任务控制模块生成交易功能测试任务成功报告;
当实际交易结果与预期交易结果存在不一致时,表示交易功能测试任务失败,测试任务控制模块生成交易功能测试任务失败报告;
具体实施方式
为了使本发明所要解决的技术问题、技术方案及有益效果更加清楚明白,以下结合实施例,对本发明进行详细的说明。应当说明的是,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明,能实现同样功能的产品属于等同替换和改进,均包含在本发明的保护范围之内。具体方法如下:
实施例1: 下面将对一种面向开放许可链的自动化测试方法的应用场景举例如下:
面向开放许可链的自动化测试方法应用于一个面向开放许可链的自动化测试系统,面向开放许可链的自动化测试系统用于对开放许可链的测试场景进行测试;
开放许可链是指节点需要通过身份认证获得许可才可以加入的区块链;
面向开放许可链的自动化测试系统包括测试任务控制模块、开放许可链客户端;
从动节点是具有存储空间,并与网络进行连接,通过身份认证获得许可权限后才可以加入开放许可区块链的节点;
从动节点用于同步开放许可链中的账本数据和智能合约;
开放许可区块链中已经存在的从动节点为已有的从动节点;
需要新加入到开放许可区块链中的从动节点为新从动节点;
主控节点是开放许可链中的用于管理所有从动节点的部署和启动的节点,开放许可链中只有一个主控节点;
主控节点中设置有区块同步机制;区块同步机制驱动新从动节点完成开放许可链的数据同步;
开放许可链客户端与从动节点进行连接,开放许可链客户端可以向从动节点广播交易请求;交易请求包括许可授权交易、取消授权交易、转账交易以及智能合约调用请求;
从动节点接收到广播的交易请求后,触发智能合约用以完成交易请求,并将交易请求的数据更新到开放许可链中的区块里;
测试任务控制模块用于设定开放许可链的测试场景,指定开放许可链的测试任务,并生成开放许可链的测试报告;
测试任务控制模块与开放许可链的主控节点进行连接,测试任务控制模块通过主控节点将测试任务发送到所有的从动节点中,从动节点接收到测试任务后执行测试任务,并将测试结果发送至主控节点,主控节点收集到测试结果后,将测试结果发送至测试任务控制模块,测试任务控制模块对测试结果进行分析,生成开放许可链的测试报告;
测试任务控制模块的测试场景包括三种场景:新从动节点入链测试场景、历史数据继承测试场景、交易功能测试场景;
新从动节点入链测试场景是针对新从动节点加入开放许可链时进行测试的场景;
历史数据继承测试场景是针对开放许可链升级后的数据是否被正常继承,以及智能合约调用功能是否能够正常执行的测试场景;
交易功能测试场景是针对开放许可链升级后的交易功能进行测试的场景;交易功能包括许可授权交易功能、取消授权交易功能、转账交易功能以及智能合约调用功能;
测试任务控制模块为三种测试场景分别设定测试任务,为新从动节点入链测试场景设定新从动节点入链测试任务,为历史数据继承测试场景设定超级测试任务,为交易功能测试场景设定交易功能测试任务;
新从动节点入链测试任务用于对加入到开放许可链中的新从动节点进行自动化测试,保证加入到开放许可链中的新从动节点的区块高度、区块默克尔树根哈希值以及新的区块生成逻辑与已有的从动节点的区块高度、区块默克尔树根哈希值以及新的区块生成逻辑保持一致,具体步骤为:
新从动节点入链测试任务中设置有新从动节点入链申请审核机制、新从动节点预检机制、区块同步检测机制;
新从动节点入链申请审核机制对新从动节点的入链申请进行审核;
新从动节点预检机制对新从动节点的存储空间、网络连接和运算能力进行检测;
区块同步检测机制用于检测新从动节点在进行区块同步后的区块高度、区块默克尔树根哈希值是否与开放许可链中已有的从动节点中的区块高度、区块默克尔树根哈希值保持一致;
当有新从动节点需要添加到开放许可链中时,新从动节点向主控节点提交入链申请,主控节点接收到入链申请后,通知测试任务控制模块触发新从动节点入链申请审核机制,新从动节点入链申请审核机制对新从动节点的入链申请进行审核,审核通过后,向主控节点发送新从动节点入链申请审核通过指令,主控节点接收到新从动节点入链申请审核通过指令后,将新从动节点加入到主控节点的新从动节点预检控制列表中;
当新从动节点加入到主控节点的新从动节点预检控制列表中时,主控节点向测试任务控制模块发送新从动节点预检指令,测试任务控制模块接收到主控节点的新从动节点预检指令后触发新从动节点预检机制;
新从动节点预检机制对新从动节点的存储空间、网络连接和运算能力进行检测,生成新从动节点的存储空间、网络连接和运算能力的预检报告A;
新从动节点预检机制中设置有新从动节点预检合格标准,当新从动节点的存储空间、网络连接和运算能力的预检报告A中,有存储空间、网络连接和运算能力中的任意一项不满足新从动节点预检合格标准时,测试任务控制模块向主控节点发送新从动节点预检失败指令和新从动节点预检失败报告B,主控节点接收到新从动节点预检失败指令和新从动节点预检失败报告B后拒绝新从动节点加入到开放许可链中,输出并存储新从动节点预检失败报告B,供面向开放许可链的自动化测试系统的用户查看;
当新从动节点的存储空间、网络连接和运算能力的预检报告A满足新从动节点预检合格标准时,测试任务控制模块向主控节点发送新从动节点预检成功指令和新从动节点预检成功报告C;主控节点接收到新从动节点预检成功指令和新从动节点预检成功报告C后,将新从动节点存储到主控节点的新从动节点同步列表中;
新从动节点同步列表是用于存储等待进行数据同步的新从动节点的列表;
当主控节点的新从动节点同步列表中的新从动节点数量大于零时,触发主控节点的区块同步机制;
区块同步机制为主控节点的新从动节点同步列表中的新从动节点进行数据同步,主控节点从高度为0的区块开始,将开放许可链中已有区块同步至新从动节点中;当区块同步机制完成时,触发测试任务控制模块中的区块同步检测机制;
区块同步检测机制对完成区块同步的新从动节点的区块高度、区块默克尔树根哈希值进行检测,并判断新从动节点的区块高度、区块默克尔树根哈希值是否与开放许可链中已有的从动节点的区块高度、区块默克尔树根哈希值保持一致;
当区块同步检测机制检测到新从动节点的区块高度和区块默克尔树根哈希值与开放许可链中已有的从动节点的区块高度和区块默克尔树根哈希值不一致时,测试任务控制模块向主控节点发送一条区块同步失败指令;主控节点拒绝新从动节点加入到开放许可链中;
当区块同步检测机制检测到新从动节点的区块高度和区块默克尔树根哈希值与开放许可链中已有的从动节点的区块高度和区块默克尔树根哈希值一致时,测试任务控制模块向开放许可链中的新从动节点和已有的从动节点广播一条测试交易请求,开放许可链中的新从动节点和已有的从动节点分别为测试交易请求生成新的区块;
测试交易请求是专门用于测试开放许可链中的从动节点的交易功能的请求;
区块同步检测机制比较新从动节点中的新区块的默克尔树根哈希值与已有的从动节点中的新区块的默克尔树根哈希值;
当新从动节点中的新区块的默克尔树根哈希值与已有的从动节点中的新区块的默克尔树根哈希值不一致时,测试任务控制模块向主控节点发送一条区块同步失败指令;
主控节点拒绝新从动节点加入到开放许可链中;
当区块同步检测机制检测到新从动节点的新区块的默克尔树根哈希值与已有的从动节点的新区块的默克尔树根哈希值一致时,测试任务控制模块向主控节点发送一条区块同步成功指令;
主控节点将新从动节点加入到开放许可链中;新从动节点入链测试任务完成;
开放许可链升级之后,超级测试任务用于测试开放许可链中升级后的账本数据和智能合约是否被正常继承,以及智能合约调用功能是否能够正常执行;
超级测试任务的步骤为:
测试任务控制模块保存开放许可链升级之前的从动节点中的二进制文件,以及开放许可链升级之后的从动节点中的二进制文件;
开放许可链升级之前的从动节点中的二进制文件为未升级的二进制文件;
开放许可链升级之后的从动节点中的二进制文件为升级后的二进制文件;
测试任务控制模块首先利用未升级的二进制文件生成一个测试集群,部署智能合约,修改智能合约状态,测试集群触发从动节点的升级;
当从动节点的升级完成一半时,暂停从动节点的升级,并保存当前的从动节点的账本数据和智能合约的数据;
定义当前的从动节点的账本数据和智能合约的数据为第一历史数据;
然后未升级的二进制文件替换为升级后的二进制文件,再次启动测试集群,装载旧的智能合约、查询智能合约的历史,调用智能合约的历史,记录当前的从动节点的账本数据和智能合约的数据;
定义当前的从动节点的账本数据和智能合约的数据为第二历史数据;
将第一历史数据与第二历史数据进行比较,当第一历史数据与第二历史数据不一致表示超级测试任务失败,测试任务控制模块生成超级测试任务失败报告一;
当第一历史数据与第二历史数据一致时,触发从动节点的继续升级,使从动节点的升级全部完成,测试任务控制模块再一次查询智能合约的历史,调用智能合约的历史,记录当前的从动节点的账本数据和智能合约的数据;
定义当前的从动节点的账本数据和智能合约的数据为第三历史数据;
将第三历史数据与第一历史数据和第二历史数据进行比较,当第三历史数据与第一历史数据和第二历史数据存在不同时,表示超级测试任务失败,测试任务控制模块生成超级测试任务失败报告二;
当第三历史数据与第一历史数据和第二历史数据完全相同时,表示超级测试任务成功,测试任务控制模块生成超级测试任务成功报告一;
交易功能测试任务用于测试开放许可链升级后且通过超级测试任务后所有的交易功能是否被支持;
交易功能包括许可授权交易功能、取消授权交易功能、转账交易功能以及智能合约调用功能;
交易功能测试任务的具体步骤为:
测试任务控制模块自动触发开放许可链中支持的所有类型的智能合约调用功能和交易功能,测试任务控制模块收集所有智能合约调用功能和交易功能的结果,作为实际交易结果;
测试任务控制模块为自动触发的所有智能合约调用功能和交易功能设置预期交易结果;
测试任务控制模块将实际交易结果与预期交易结果进行比较,当实际交易结果与预期交易结果一致时,表示交易功能测试任务成功,测试任务控制模块生成交易功能测试任务成功报告;
当实际交易结果与预期交易结果存在不一致时,表示交易功能测试任务失败,测试任务控制模块生成交易功能测试任务失败报告;
本发明的有益成果为:本发明提供了一种面向开放许可链的自动化测试方法,应用于面向开放许可链的自动化测试系统,包括:从动节点、主控节点、测试任务控制模块、开放许可链客户端;从动节点同步了所述开放许可链中的所有数据,包括账本数据、交易列表和智能合约;主控节点管理所有从动节点的部署、启动;开放许可链客户端提供一个向开放许可链提交交易请求的可视化交互界面;测试任务控制模块是面向开放许可链的自动化测试系统的核心模块,用于设定测试场景,指定测试任务,并生成开放许可链的测试报告;针对三种测试场景分别设定新从动节点入链测试任务,超级测试任务,以及交易功能测试任务,实现对开放许可链的自动化测试,在保障测试场景完整性的同时,减少了测试维护成本并提高测试效率。
以上仅为本发明之较佳实施例,并非用以限定本发明的权利要求保护范围。 同时以上说明,对于相关技术领域的技术人员应可以理解及实施,因此其他基于本发明所揭示内容所完成的等同改变,均应包含在本权利要求书的涵盖范围内。
Claims (1)
1.一种面向开放许可链的自动化测试方法,其特征在于,所述面向开放许可链的自动化测试方法包含以下步骤:
所述面向开放许可链的自动化测试方法应用于一个面向开放许可链的自动化测试系统,所述面向开放许可链的自动化测试系统用于对开放许可链的测试场景进行测试;
所述开放许可链是指节点需要通过身份认证获得许可才可以加入的区块链;
所述面向开放许可链的自动化测试系统包括测试任务控制模块、开放许可链客户端;
从动节点是具有存储空间,并与网络进行连接,通过身份认证获得许可权限后才可以加入所述开放许可链的节点;
所述从动节点用于同步所述开放许可链中的账本数据和智能合约;
所述开放许可链中已经存在的从动节点为已有的从动节点;
需要新加入到所述开放许可链中的从动节点为新从动节点;
主控节点是所述开放许可链中的用于管理所有从动节点的部署和启动的节点,所述开放许可链中只有一个主控节点;
所述主控节点中设置有区块同步机制;所述区块同步机制驱动新从动节点完成所述开放许可链的数据同步;
所述开放许可链客户端与所述从动节点进行连接,所述开放许可链客户端可以向所述从动节点广播交易请求;所述交易请求包括许可授权交易请求、取消授权交易请求、转账交易请求以及智能合约调用请求;
所述从动节点接收到广播的交易请求后,触发智能合约用以完成交易请求,并将交易请求的数据更新到所述开放许可链中的区块里;
所述测试任务控制模块用于设定开放许可链的测试场景,指定开放许可链的测试任务,并生成开放许可链的测试报告;
所述测试任务控制模块与所述开放许可链的主控节点进行连接,所述测试任务控制模块通过所述主控节点将测试任务发送到所有的从动节点中,从动节点接收到测试任务后执行测试任务,并将测试结果发送至所述主控节点,主控节点收集到测试结果后,将测试结果发送至所述测试任务控制模块,所述测试任务控制模块对测试结果进行分析,生成开放许可链的测试报告;
所述测试任务控制模块的测试场景包括三种场景:新从动节点入链测试场景、历史数据继承测试场景、交易功能测试场景;
所述新从动节点入链测试场景是针对新从动节点加入所述开放许可链时进行测试的场景;
所述历史数据继承测试场景是针对所述开放许可链升级后的数据是否被正常继承,以及智能合约调用功能是否能够正常执行的测试场景;
所述交易功能测试场景是针对所述开放许可链升级后的交易功能进行测试的场景;所述交易功能包括许可授权交易功能、取消授权交易功能、转账交易功能以及智能合约调用功能;
所述测试任务控制模块为三种测试场景分别设定测试任务,为新从动节点入链测试场景设定新从动节点入链测试任务,为历史数据继承测试场景设定超级测试任务,为交易功能测试场景设定交易功能测试任务;
所述新从动节点入链测试任务用于对加入到所述开放许可链中的新从动节点进行自动化测试,保证加入到所述开放许可链中的新从动节点的区块高度、区块默克尔树根哈希值以及新的区块生成逻辑与已有的从动节点的区块高度、区块默克尔树根哈希值以及新的区块生成逻辑保持一致,具体步骤为:
所述新从动节点入链测试任务中设置有新从动节点入链申请审核机制、新从动节点预检机制、区块同步检测机制;
所述新从动节点入链申请审核机制对新从动节点要加入所述开放许可链的申请进行审核;
所述新从动节点预检机制对新从动节点的存储空间、网络连接和运算能力进行检测;
所述区块同步检测机制用于检测新从动节点在进行区块同步后的区块高度、区块默克尔树根哈希值是否与所述开放许可链中已有的从动节点中的区块高度、区块默克尔树根哈希值保持一致;
当有新从动节点需要添加到所述开放许可链中时,新从动节点向所述主控节点提交入链申请,所述主控节点接收到入链申请后,通知测试任务控制模块触发新从动节点入链申请审核机制,新从动节点入链申请审核机制对新从动节点的入链申请进行审核,审核通过后,向所述主控节点发送新从动节点入链申请审核通过指令,所述主控节点接收到新从动节点入链申请审核通过指令后,将新从动节点加入到所述主控节点的新从动节点预检控制列表中;
当新从动节点加入到所述主控节点的新从动节点预检控制列表中时,所述主控节点向所述测试任务控制模块发送新从动节点预检指令,所述测试任务控制模块接收到所述主控节点的新从动节点预检指令后触发新从动节点预检机制;
所述新从动节点预检机制对新从动节点的存储空间、网络连接和运算能力进行检测,生成新从动节点的存储空间、网络连接和运算能力的预检报告A;
所述新从动节点预检机制中设置有新从动节点预检合格标准,当新从动节点的存储空间、网络连接和运算能力的预检报告A中,有存储空间、网络连接和运算能力中的任意一项不满足新从动节点预检合格标准时,所述测试任务控制模块向所述主控节点发送新从动节点预检失败指令和新从动节点预检失败报告B,所述主控节点接收到新从动节点预检失败指令和新从动节点预检失败报告B后拒绝新从动节点加入到所述开放许可链中,输出并存储新从动节点预检失败报告B,供所述面向开放许可链的自动化测试系统的用户查看;
当新从动节点的存储空间、网络连接和运算能力的预检报告A满足新从动节点预检合格标准时,所述测试任务控制模块向所述主控节点发送新从动节点预检成功指令和新从动节点预检成功报告C;所述主控节点接收到新从动节点预检成功指令和新从动节点预检成功报告C后,将新从动节点存储到所述主控节点的新从动节点同步列表中;
所述新从动节点同步列表是用于存储等待进行数据同步的新从动节点的列表;
当所述主控节点的新从动节点同步列表中的新从动节点数量大于零时,触发所述主控节点的区块同步机制;
所述区块同步机制为所述主控节点的新从动节点同步列表中的新从动节点进行数据同步,所述主控节点从高度为0的区块开始,将所述开放许可链中已有区块同步至新从动节点中;当所述区块同步机制完成时,触发所述测试任务控制模块中的区块同步检测机制;
所述区块同步检测机制对完成区块同步的新从动节点的区块高度、区块默克尔树根哈希值进行检测,并判断新从动节点的区块高度、区块默克尔树根哈希值是否与所述开放许可链中已有的从动节点的区块高度、区块默克尔树根哈希值保持一致;
当所述区块同步检测机制检测到新从动节点的区块高度和区块默克尔树根哈希值与所述开放许可链中已有的从动节点的区块高度和区块默克尔树根哈希值不一致时,所述测试任务控制模块向所述主控节点发送一条区块同步失败指令;所述主控节点拒绝新从动节点加入到所述开放许可链中;
当所述区块同步检测机制检测到新从动节点的区块高度和区块默克尔树根哈希值与所述开放许可链中已有的从动节点的区块高度和区块默克尔树根哈希值一致时,所述测试任务控制模块向所述开放许可链中的新从动节点和已有的从动节点广播一条测试交易请求,所述开放许可链中的新从动节点和已有的从动节点分别为测试交易请求生成新的区块;
所述测试交易请求是专门用于测试所述开放许可链中的从动节点的交易功能的请求;
所述区块同步检测机制比较新从动节点中的新区块的默克尔树根哈希值与已有的从动节点中的新区块的默克尔树根哈希值;
当新从动节点中的新区块的默克尔树根哈希值与已有的从动节点中的新区块的默克尔树根哈希值不一致时,所述测试任务控制模块向所述主控节点发送一条区块同步失败指令;
所述主控节点拒绝新从动节点加入到所述开放许可链中;
当所述区块同步检测机制检测到新从动节点的新区块的默克尔树根哈希值与已有的从动节点的新区块的默克尔树根哈希值一致时,所述测试任务控制模块向所述主控节点发送一条区块同步成功指令;
所述主控节点将新从动节点加入到所述开放许可链中;所述新从动节点入链测试任务完成;
所述开放许可链升级之后,所述超级测试任务用于测试所述开放许可链中升级后的账本数据和智能合约是否被正常继承,以及智能合约调用功能是否能够正常执行;
所述超级测试任务的步骤为:
所述测试任务控制模块保存所述开放许可链升级之前的从动节点中的二进制文件,以及所述开放许可链升级之后的从动节点中的二进制文件;
所述开放许可链升级之前的从动节点中的二进制文件为未升级的二进制文件;
所述开放许可链升级之后的从动节点中的二进制文件为升级后的二进制文件;
所述测试任务控制模块首先利用未升级的二进制文件生成一个测试集群,部署智能合约,修改智能合约状态,测试集群触发从动节点的升级;
当从动节点的升级完成一半时,暂停从动节点的升级,并保存当前的从动节点的账本数据和智能合约的数据;
定义当前的从动节点的账本数据和智能合约的数据为第一历史数据;
然后未升级的二进制文件替换为升级后的二进制文件,再次启动测试集群,装载旧的智能合约、查询智能合约的历史,调用智能合约的历史,记录当前的从动节点的账本数据和智能合约的数据;
定义当前的从动节点的账本数据和智能合约的数据为第二历史数据;
将第一历史数据与第二历史数据进行比较,当第一历史数据与第二历史数据不一致表示所述超级测试任务失败,所述测试任务控制模块生成超级测试任务失败报告一;
当第一历史数据与第二历史数据一致时,触发从动节点的继续升级,使从动节点的升级全部完成,所述测试任务控制模块再一次查询智能合约的历史,调用智能合约的历史,记录当前的从动节点的账本数据和智能合约的数据;
定义当前的从动节点的账本数据和智能合约的数据为第三历史数据;
将第三历史数据与第一历史数据和第二历史数据进行比较,当第三历史数据与第一历史数据和第二历史数据存在不同时,表示所述超级测试任务失败,所述测试任务控制模块生成超级测试任务失败报告二;
当第三历史数据与第一历史数据和第二历史数据完全相同时,表示所述超级测试任务成功,所述测试任务控制模块生成超级测试任务成功报告一;
所述交易功能测试任务用于测试所述开放许可链升级后且通过所述超级测试任务后所有的交易功能是否被支持;
所述交易功能包括许可授权交易功能、取消授权交易功能、转账交易功能以及智能合约调用功能;
所述交易功能测试任务的具体步骤为:
所述测试任务控制模块自动触发所述开放许可链中支持的所有类型的智能合约调用功能和交易功能,所述测试任务控制模块收集所有智能合约调用功能和交易功能的结果,作为实际交易结果;
所述测试任务控制模块为自动触发的所有智能合约调用功能和交易功能设置预期交易结果;
所述测试任务控制模块将实际交易结果与预期交易结果进行比较,当实际交易结果与预期交易结果一致时,表示所述交易功能测试任务成功,所述测试任务控制模块生成交易功能测试任务成功报告;
当实际交易结果与预期交易结果存在不一致时,表示所述交易功能测试任务失败,所述测试任务控制模块生成交易功能测试任务失败报告。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011573839.6A CN113268408B (zh) | 2020-12-28 | 2020-12-28 | 一种面向开放许可链的自动化测试方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011573839.6A CN113268408B (zh) | 2020-12-28 | 2020-12-28 | 一种面向开放许可链的自动化测试方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113268408A CN113268408A (zh) | 2021-08-17 |
CN113268408B true CN113268408B (zh) | 2023-11-28 |
Family
ID=77227851
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011573839.6A Active CN113268408B (zh) | 2020-12-28 | 2020-12-28 | 一种面向开放许可链的自动化测试方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113268408B (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109218079A (zh) * | 2018-08-16 | 2019-01-15 | 北京京东尚科信息技术有限公司 | 一种区块链网络、部署方法及存储介质 |
KR20190104793A (ko) * | 2018-03-02 | 2019-09-11 | 주식회사 아이콘루프 | 스마트 계약 시스템에서 블록체인을 생성하고 무결성을 검증하는 방법 |
KR102025837B1 (ko) * | 2018-11-15 | 2019-09-26 | 주식회사 트라이앵글랩 | 블록체인 네트워크 및 이를 활용한 스마트컨트랙트가 적용된 출입통제 시스템 |
CN110515827A (zh) * | 2019-07-05 | 2019-11-29 | 中国平安财产保险股份有限公司 | 自动化测试方法、装置、计算机设备及存储介质 |
CN111970370A (zh) * | 2020-08-26 | 2020-11-20 | 电子科技大学 | 基于面向通信设备体系的多层区块链协议拓展系统及方法 |
WO2020238606A1 (zh) * | 2019-05-24 | 2020-12-03 | 阿里巴巴集团控股有限公司 | 业务认证及副证申请的处理方法、装置、系统及电子设备 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2019094797A1 (en) * | 2017-11-10 | 2019-05-16 | Digital Asset (Switzerland) GmbH | Method and apparatus for execution of atomic transactions |
US11038771B2 (en) * | 2019-04-26 | 2021-06-15 | Salesforce.Com, Inc. | Systems, methods, and apparatuses for implementing a metadata driven rules engine on blockchain using distributed ledger technology (DLT) |
US11569996B2 (en) * | 2019-05-31 | 2023-01-31 | International Business Machines Corporation | Anonymous rating structure for database |
-
2020
- 2020-12-28 CN CN202011573839.6A patent/CN113268408B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20190104793A (ko) * | 2018-03-02 | 2019-09-11 | 주식회사 아이콘루프 | 스마트 계약 시스템에서 블록체인을 생성하고 무결성을 검증하는 방법 |
CN109218079A (zh) * | 2018-08-16 | 2019-01-15 | 北京京东尚科信息技术有限公司 | 一种区块链网络、部署方法及存储介质 |
KR102025837B1 (ko) * | 2018-11-15 | 2019-09-26 | 주식회사 트라이앵글랩 | 블록체인 네트워크 및 이를 활용한 스마트컨트랙트가 적용된 출입통제 시스템 |
WO2020238606A1 (zh) * | 2019-05-24 | 2020-12-03 | 阿里巴巴集团控股有限公司 | 业务认证及副证申请的处理方法、装置、系统及电子设备 |
CN110515827A (zh) * | 2019-07-05 | 2019-11-29 | 中国平安财产保险股份有限公司 | 自动化测试方法、装置、计算机设备及存储介质 |
CN111970370A (zh) * | 2020-08-26 | 2020-11-20 | 电子科技大学 | 基于面向通信设备体系的多层区块链协议拓展系统及方法 |
Non-Patent Citations (5)
Title |
---|
A Data Storage Method Based on Blockchain for Decentralization DNS;Jingqiang Liu;《2018 IEEE Third International Conference on Data Science in Cyberspace (DSC)》;1-6 * |
Yu Xiong.Electronic evidence preservation model based on blockchain.《ICCSP '19: Proceedings of the 3rd International Conference on Cryptography》.2019,1–5. * |
区块链共识协议的信誉激励方案;Sascha Senger;《中国优秀硕士学位论文全文数据库 (信息科技辑)》;I138-972 * |
区块链数据交易系统的设计与实现;邵晓蓓;《中国优秀硕士学位论文全文数据库 (信息科技辑)》;I138-562 * |
基于Hyperledger Fabric的区块链应用系统云服务化;史文斌;《万方》;1-56 * |
Also Published As
Publication number | Publication date |
---|---|
CN113268408A (zh) | 2021-08-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106909411B (zh) | 一种文件更新方法及装置 | |
CN108710681B (zh) | 文件获取方法、装置、设备及存储介质 | |
CN106991035A (zh) | 一种基于微服务架构的主机监控系统 | |
CN106936835A (zh) | 设备接入的方法及系统 | |
US20110296390A1 (en) | Systems and methods for generating machine state verification using number of installed package objects | |
US20160378458A1 (en) | Method and device for system application installation package, and terminal | |
US20220129256A1 (en) | Android penetration method and device for implementing silent installation based on accessibility services | |
CN101526984A (zh) | 一种修复漏洞的方法及装置 | |
CN110063042B (zh) | 一种数据库故障的响应方法及其终端 | |
CN113204530B (zh) | 分布式文件系统的数据写入方法、装置、设备以及介质 | |
CN104765652B (zh) | 一种数据备份和数据恢复方法及装置 | |
CN110545207B (zh) | 一种同步自动化的智能dns系统及配置方法 | |
CN110222535A (zh) | 区块链配置文件的处理装置、方法及存储介质 | |
CN113268408B (zh) | 一种面向开放许可链的自动化测试方法 | |
CN112561506B (zh) | 基于虚拟货币的直播数据处理方法、系统、设备及介质 | |
CN116070294B (zh) | 一种权限管理方法、系统、装置、服务器及存储介质 | |
CN114070856B (zh) | 数据处理方法、装置、系统、运维审计设备和存储介质 | |
CN110677469B (zh) | 一种证券灾备系统及灾备实现方法 | |
CN112685063A (zh) | 特征库更新方法、装置、网络设备及可读存储介质 | |
CN106354830A (zh) | 一种数据库集群节点间数据同步的方法及装置 | |
CN114442947B (zh) | 跨域桶删除方法、系统、终端及存储介质 | |
CN116400935B (zh) | 一种应用安装系统及方法 | |
CN111209539A (zh) | 基于ambari心跳机制实现license检测功能的方法 | |
CN115203051A (zh) | 软件流水线自动检测方法及其装置、设备、介质、产品 | |
CN116644058A (zh) | 基于关系型数据库管理系统的数据库的创建方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
CB02 | Change of applicant information | ||
CB02 | Change of applicant information |
Address after: 200120 building C3, No. 101 Eshan Road, China (Shanghai) pilot Free Trade Zone, Pudong New Area, Shanghai Applicant after: Shanghai Lingshuzhonghe Information Technology Co.,Ltd. Address before: C3, 101 Eshan Road, Pudong New Area, Shanghai, 200120 Applicant before: NENG LIAN TECH. LTD. |
|
GR01 | Patent grant | ||
GR01 | Patent grant |