CN116302958A - 区块链接口测试系统、方法、设备及可读存储介质 - Google Patents

区块链接口测试系统、方法、设备及可读存储介质 Download PDF

Info

Publication number
CN116302958A
CN116302958A CN202310073819.XA CN202310073819A CN116302958A CN 116302958 A CN116302958 A CN 116302958A CN 202310073819 A CN202310073819 A CN 202310073819A CN 116302958 A CN116302958 A CN 116302958A
Authority
CN
China
Prior art keywords
block
request
configuration
target
test
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.)
Pending
Application number
CN202310073819.XA
Other languages
English (en)
Inventor
梁增健
谢美春
黄嘉毅
杨晓师
李定一
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Guangzhou Ant Bit Block Chain Technology Co ltd
Original Assignee
Guangzhou Ant Bit Block Chain Technology Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Guangzhou Ant Bit Block Chain Technology Co ltd filed Critical Guangzhou Ant Bit Block Chain Technology Co ltd
Priority to CN202310073819.XA priority Critical patent/CN116302958A/zh
Publication of CN116302958A publication Critical patent/CN116302958A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3684Test management for test design, e.g. generating new test cases
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3688Test management for test execution, e.g. scheduling of test suites
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本申请提供一种区块链接口测试系统、方法、设备及可读存储介质,本申请提供的区块链接口测试系统为一个可以独立运行程序,无需依赖工作环境,可以适用于不同的系统环境;可以一键式自动化完成对区块链接口的性能测试,无需进行二次请求和确认动作,简化了区块链接口测试的流程,可以更快地完成对区块链接口的性能测试,能更好的契合区块链异步接口测试流程的需求,除此之外,还能够提升区块链接口测试的性能,可以根据应用场景需要配置不同的文件,通用性较强,记录区块链接口性能测试过程中产生的过程数据和最终生成的测试结果报告。

Description

区块链接口测试系统、方法、设备及可读存储介质
技术领域
本申请涉及接口测试技术领域,尤其涉及一种区块链接口测试系统、方法、设备及可读存储介质。
背景技术
系统性能是软件系统应用的一个关键指标,由于软件系统使用场景不同,其性能指标要求也不尽相同。根据“请求-响应”模型,系统性能指单位时间内系统接口可以正确处理的请求数。业内一般用两个参数来表示系统的性能指标:针对“写”操作接口的TPS指标和针对“读”操作接口的QPS指标。除此之外,由于区块链网络对数据的处理是异步的,因此业内新增了一个CTPS指标用于标识区块链网络系统处理数据的性能。
软件性能测试是求得系统性能指标的直接方法,也是软件系统质量保障的重要一环。软件性能测试通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试,模拟生产运行的业务压力或用户使用场景来确定系统的性能指标是否满足性能要求,检验软件系统性能是否符合性能指标。在实际应用过程中,通常是将区块链技术与实际场景结合,但不同的场景对性能要求不一样,例如,如银行结算场景要求TPS指标较高,而奢侈品溯源的场景要求QPS指标较高。因此,区块链网络平台的性能测试是必要的,这将直接决定该区块链网络平台是否能满足实际场景的需求。但是目前的接口测试方案难以满足区块链异步接口性能测试的要求。
发明内容
本申请旨在至少能解决上述的技术缺陷之一,有鉴于此,本申请提供了一种区块链接口测试系统、方法、设备及可读存储介质,用于解决现有技术中难以对区块链接口性能进行测试的技术缺陷。
一种区块链接口测试系统,该系统包括:启动器、配置读取器、请求发生器、阈值检测器以及响应处理器;
其中,
所述启动器启动后发出启动信号,为区块链接口测试系统进行初始化操作,并同时往区块链网络目标节点发送请求,其中,所述请求为请求获取当前网络中的区块高度并将该区块缓存在内存中,同时将该区块标记为初始区块;
所述配置读取器从预设的存储路径读取目标配置文件,其中所述目标配置文件用于为所述启动器、所述请求发生器、所述阈值检测器以及所述响应处理器提供配置参数;
所述请求发生器接收到所述区块链接口测试系统的启动信号后,发生初始化,并在初始化过程中进行连接池化,同时将各个协程进行并行处理;
所述阈值检测器负责对协程组进行完工阈值配置以及对区块链网络进行完工阈值配置;
所述响应处理器为所述区块链目标网络节点的区块数据进行解析并生成所述区块链目标网络节点的测试报告。
优选地,所述目标配置文件包括:
节点连接信息、所述区块链接口测试系统工作限制信息、所述区块链网络阈值信息、所述区块链基础接口配置信息以及测试用例的配置信息。
优选地,所述请求发生器在初始化过程中进行连接池化的过程,包括:
构建一个目标对象池;
将所述目标对象池的容量初始化为预设的阈值;
判断是否存在需要使用对象的请求;
若需要使用对象,则创建目标对象并将请求使用所述目标对象的请求对应的网址进行绑定;
判断所述目标对象池中的对象数量是否超过所述预设的阈值;
若所述目标对象池中的对象数量超过所述预设的阈值,则将所述目标对象池中超过所述预设的阈值的其余对象进行回收。
优选地,所述请求发生器将各个协程进行并行处理的过程,包括:
在目标测试用例进入待执行队列时,所述请求发生器将所述目标测试用例配置中的并发协程数的参数初始化成相应数量的目标协程;
将所有目标协程进行并发执行,其中,每个所述目标协程的执行流程一致;
记录所有协程的请求的响应结果作为所述目标测试用例的测试报告数据佐证,其中,每个请求的响应结果包括请求时间、响应时间、响应结果。
优选地,所述阈值检测器对协程组进行完工阈值配置的过程,包括:
收集各个协程组内每次请求的反馈结果,其中,各个协程组内每次请求的反馈结果包括区块链网络表示请求成功、请求失败以及请求超时三类结果的原文回应;
将所有反馈结果的总数与测试用例配置中设定的并发协程数和每个协程需要完成的请求数的乘积对比;
依据各个协程组内每次请求的反馈结果与测试用例配置中设定的并发协程数和每个协程需要完成的请求数的乘积的对比结果,判断是否能进入下一个测试用例流程;
若反馈结果总数小于测试用例配置中设定的并发协程数和每个协程需要完成的请求数的乘积,则确定当前测试用例流程未完成,继续等待剩余响应结果;
若反馈结果总数等于测试用例配置中设定的并发协程数和每个协程需要完成的请求数的乘积,则确定当前测试用例流程已完成,则将协程组的完工阈值配置为测试用例配置中设定的并发协程数与每个协程需要完成的请求数的乘积。
优选地,所述阈值检测器对区块链网络进行完工阈值配置的过程,包括:
在所有协程组流程完成后,根据配置项系统工作限制中的等待区块产生的时间参数确定延时等待时间;
在延时等待结束后,从初始区块高度开始逐个获取后续区块;
统计区块中的交易数量;
依据区块中的交易数量,记录在区块中的交易数据的状态为成功处理的数据;
依据区块中的交易数据的状态为成功处理的数据,来判断是否存在零交易区块;
若确定存在零交易区块,则确定区块链的所有数据已完成,并将区块链网络的完工阈值配置为遇见零交易区块。
一种区块链接口测试方法,应用于前述介绍的区块链接口测试系统,该系统包括:启动器、配置读取器、请求发生器、阈值检测器以及响应处理器;
其中,
启动所述启动器以发出启动信号,为区块链接口测试系统进行初始化操作,并同时往区块链网络目标节点发送请求,其中,所述请求为请求获取当前网络中的区块高度并将该区块缓存在内存中,同时将该区块标记为初始区块;
调用所述配置读取器从预设的存储路径读取目标配置文件,其中所述目标配置文件用于为所述启动器、所述请求发生器、所述阈值检测器以及所述响应处理器提供配置参数;
调用所述请求发生器接收到所述区块链接口测试系统的启动信号后,发生初始化,并在初始化过程中进行连接池化,同时将各个协程进行并行处理;
调用所述阈值检测器负责对协程组进行完工阈值配置以及对区块链网络进行完工阈值配置;
调用所述响应处理器为所述区块链目标网络节点的区块数据进行解析并生成所述区块链目标网络节点的测试报告。
优选地,所述目标配置文件包括:
节点连接信息、所述区块链接口测试系统工作限制信息、所述区块链网络阈值信息、所述区块链基础接口配置信息以及测试用例的配置信息。
一种区块链接口测试设备,包括:一个或多个处理器,以及存储器;
所述存储器中存储有计算机可读指令,所述计算机可读指令被所述一个或多个处理器执行时,实现如前述介绍中任一项所述区块链接口测试方法的步骤。
一种可读存储介质,所述可读存储介质中存储有计算机可读指令,所述计算机可读指令被一个或多个处理器执行时,使得一个或多个处理器实现如前述介绍中任一项所述区块链接口测试方法的步骤。
从以上介绍的技术方案可以看出,当需要对区块链的接口性能进行测试时,本申请实施例可以提供一种区块链接口测试系统,该测试系统可以包括:启动器、配置读取器、请求发生器、阈值检测器以及响应处理器;其中,所述启动器可以在启动后发出启动信号,为区块链接口测试系统进行初始化操作,并同时可以往区块链网络目标节点发送请求,其中,所述请求可以为请求获取当前网络中的区块高度并将该区块缓存在内存中,同时将该区块标记为初始区块;所述配置读取器可以从预设的存储路径读取目标配置文件,其中所述目标配置文件可以用于为所述启动器、所述请求发生器、所述阈值检测器以及所述响应处理器提供配置参数;所述请求发生器在接收到所述区块链接口测试系统的启动信号后,可以发生初始化,并可以在初始化过程中进行连接池化,同时可以将各个协程进行并行处理;所述阈值检测器可以负责对协程组进行完工阈值配置以及对区块链网络进行完工阈值配置;所述响应处理器可以为所述区块链目标网络节点的区块数据进行解析并生成所述区块链目标网络节点的测试报告。
本申请实施例提供的测试系统为一个可以独立运行程序,无需依赖工作环境,可以适用于不同的系统环境;可以一键式自动化完成对区块链接口的性能测试,无需进行二次请求和确认动作,简化了区块链接口测试的流程,可以更快地完成对区块链接口的性能测试,能更好的契合区块链异步接口测试流程的需求,除此之外,还能够提升区块链接口测试的性能,可以根据应用场景需要配置不同的文件,通用性较强,记录区块链接口性能测试过程中产生的过程数据和最终生成的测试结果报告。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其它的附图。
图1为本申请实施例提供的一种实现区块链接口测试的系统架构示意图;
图2为本申请实施例示例的一种HTTP对象连接池化过程示意图;
图3为本申请实施例示例的一种测试用例的协程组完成阈值配置以及区块链网络完成阈值配置示意图;
图4为本申请实施例公开的一种区块链接口测试设备的硬件结构框图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
在实际应用过程中,常用的性能测试工具为Apache JMeter工具。Apache JMeter工具是基于Java开发的压力测试工具,用于对软件做压力测试。Apache JMeter工具最初被设计用于Web应用测试,但后来扩展到了其他测试领域,可用于测试静态和动态资源,如静态文件、Java小服务程序、CGI脚本、Java对象、数据库和FTP服务器等等。
Apache JMeter工具可对服务器、网络或对象模拟巨大的负载,在不同压力类别下测试它们的强度和分析整体性能。
另外,Apache JMeter工具能够对应用程序做功能或者回归测试,通过创建带有断言的脚本来验证程序是否返回了期望结果。为了最大限度的灵活性,Apache JMeter工具允许使用正则表达式创建断言。
Apache JMeter工具的工作流程如下:
(1)创建测试计划:Apache JMeter工具中的计划是集合的概念,需要在计划下创建用例。
(2)配置测试用例:通过可视化窗口配置用例,包含并发线程数、延迟时间、响应断言逻辑等参数,测试用例主要解决了“如何请求接口”和“接口响应数据如何处理”的问题。用例执行逻辑为依次执行。每个用例会依据响应断言判定该用例是否通过。
(3)启动测试程序:可以一次性启动计划下所有用例,也可以针对某个用例单独启动测试程序。
(4)完成测试并输出结果:以表格的方式输出测试结果。
但是Apache JMeter工具也存在一些不足,例如,Apache JMeter工具仅适用于同步接口的测试而不适用于区块链网络的异步接口。
区块链网络由于其固有的共识算法、数据同步等带来的时间差,每次请求均不能得到实时处理,因此区块链网络提供的多数为异步接口。在这样的情况下,Apache JMeter工具需要发起两轮请求才能完成测试任务:第一轮请求先将要处理的数据发送到区块链网络,待区块链网络形成区块后,再发起第二轮请求获取数据处理结果。总的来说,ApacheJMeter工具不适合异步接口性能测试。
其次,Apache JMeter工具使用Java语言构建,需要耗费大量硬件资源,致使硬件资源利用性价比不高。在Java中,通常借助于共享内存(全局变量)作为线程间通信的媒介,使用共享内存来进行通信常会遇到线程不安全问题,所以我们经常需要进行大量的额外处理,方式包括加锁(同步化)、使用原子类、使用volatile提升可见性等等,这都会带来额外的非计算业务上的硬件损耗。
鉴于目前大部分的区块链接口测试方案难以适应复杂多变的业务需求,为此,本申请人研究了一种区块链接口测试方案,该区块链接口测试方案无需依赖工作环境,可以适用于不同的系统环境;可以一键式自动化完成对区块链接口的性能测试,无需进行二次请求和确认动作,简化了区块链接口测试的流程,可以更快地完成对区块链接口的性能测试,能更好的契合区块链异步接口测试流程的需求,除此之外,还能够提升区块链接口测试的性能,可以根据应用场景需要配置不同的文件,通用性较强,记录区块链接口性能测试过程中产生的过程数据和最终生成的测试结果报告。
本申请实施例提供的方法可以用于众多通用或专用的计算装置环境或配置中。例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、多处理器装置、包括以上任何装置或设备的分布式计算环境等等。
本申请实施例提供一种区块链接口测试方案,该测试方法可以应用于各种接口测试系统中,亦可以应用在各种计算机终端或是智能终端中,其执行主体可以为计算机终端或是智能终端的处理器或服务器。
下面结合图1,介绍本申请实施例给出的可以实现区块链接口性能测试的一种可选系统架构,如图1所示,该系统架构可以包括:启动器、配置读取器、请求发生器、阈值检测器以及响应处理器。
其中,
所述启动器可以在启动后发出启动信号,为区块链接口测试系统进行初始化操作,并同时可以往区块链网络目标节点发送请求。
本质上,一个启动器相当于一个程序系统的主入口,因此,所述启动器可以相当于所述区块链接口测试系统的主入口。
所述启动器启动之后,可以启动所述区块链接口测试系统。
其中,所述请求可以为请求获取当前网络中的区块高度并将该区块缓存在内存中,同时将该区块标记为初始区块,将该区块标记为初始区块,可以有助于后续读取区块数据时,确认区块数据是否已经被处理完。
所述配置读取器可以从预设的存储路径读取目标配置文件。
其中,
所述目标配置文件可以用于为所述启动器、所述请求发生器、所述阈值检测器以及所述响应处理器提供配置参数。
所述启动器、所述请求发生器、所述阈值检测器以及所述响应处理器可以依据所述配置读取器提供的目标配置文件来配置各自所需要配置的参数。
在实际应用过程中,区块链接口测试系统其他组件的工作都依赖配置信息,基于此,所述配置读取器可以从指定路径读取yaml配置文件,按所述区块链接口测试系统的其他组件的需要供给区块链接口测试系统的各个组件使用。
其中,
所述配置读取器读取的配置文件中可以包含以下配置项目:
(1)节点连接信息:可以包括节点的访问IP地址和端口号。
(2)系统工作限制:可以包括节点接口的访问超时时间和等待区块产生的时间。
(3)区块链网络阈值:可以包括判定区块链网络完成交易数据处理的阈值指标。
(4)基础接口配置:可以包括设置基础接口的访问方式,包括接口名称、HTTP请求方式、请求URL、请求体参数、响应结果取值方式。基础接口配置允许有多个。
(5)测试用例配置:区块链接口测试系统可以将依据该配置项对节点发起请求,配置内容包括用例名称、并发协程数、每个协程需要完成的请求数、每秒请求发送速率。
所述请求发生器可以在接收到所述区块链接口测试系统的启动信号后,开始进行初始化,并在初始化过程中进行连接池化,同时将各个协程进行并行处理。
在实际应用过程中,请求发生器是区块链接口测试系统的核心组件,请求发生器主要负责将预设的网络请求按照既定的规则发出。
请求发生器有两个比较核心的操作流程,可以包括将连接池化以及对协程进行并行处理。
其中,
所述请求发生器在初始化过程中进行连接池化的过程,可以包括如下几个步骤:
步骤S101,构建一个目标对象池。
具体地,当区块链中的区块有请求使用对象的需求时,本申请实施例可以构建一个目标对象池用来保存对象。
在实际应用过程中,对象池模式管理一个可代替对象的集合。组件从池中借出对象,用它来完成一些任务并当任务完成时归还该对象。被归还的对象接着满足请求,不管是同一个组件还是其他组件的请求。
对象池模式可以管理那些代表的现实资源或者通过重用来分摊昂贵初始化代价的对象。
对象池模式(The Object Pool Pattern)是单例模式的一个变种,它提供了获取一系列相同对象实例的入口。
当需要对象来代表一组可替代资源的时候就变的很有用,每个对象每次可以被一个组件使用。
步骤S102,将所述目标对象池的容量初始化为预设的阈值。
具体地,在实际应用过程中,目标对象池的容量是有限的,因此,在构建所述目标对象池之后,可以将所述目标对象池的容量初始化为预设的阈值。
其中,
所述预设的阈值可以参考区块链接口测试系统的使用场景来设置。
例如,可以将所述预设的阈值设置为5000。
在实际过程中,当启动器接收到区块链接口测试系统的启动信号后,请求发生器会立即被初始化,请求发生器在初始化过程中可以使用Golang开源框架github.com/valyala/fasthttp将所述目标对象池初始化上限为5000的HTTP对象池。
步骤S103,判断是否存在需要使用对象的请求。
具体地,创建了所述目标对象池之后,只有在有需要使用对象时才会需要创建对象。
例如,
在实际应用过程中,HTTP对象在使用时才会创建,且在创建对象之后,才会将所创建的对象与所请求的网址进行绑定,这是一种一对多的绑定关系,即一个网址可以绑定多个对象。
例如,
当确定需要使用HTTP对象时,才会创建所需要使用的HTTP对象,并将所创建的HTTP对象与所请求的URL进行绑定,其中,一个URL可以绑定多个HTTP对象。
因此,若确定需要使用对象,则可以执行步骤S104。
步骤S104,创建目标对象并将请求使用所述目标对象的请求对应的网址进行绑定。
具体地,由上述介绍可知,本申请可以确定是否有需要使用对象的需求,若确定有需要使用对象,则可以根据使用对象的需求来创建目标对象并将请求使用所述目标对象的请求对应的网址进行绑定。
以便可以根据所述目标对象的请求对应的网址来访问所述目标对象。
步骤S105,判断所述目标对象池中的对象数量是否超过所述预设的阈值。
具体地,由上述介绍可知,每个对象池是有固定的容量的,在实际应用过程中,说创建的对象呗使用完之后会再次放回对象池中,若对象池中的对象过多,则可以会导致系统崩溃,则需要对多余的对象进行回收。
由上述介绍可知,在构建所述目标对象池之后,为所述目标对象池的容量设置了阈值,因此,在创建了所述目标对象之后,可以及时判断所述目标对象池中的对象数量是否超过所述预设的阈值。
若所述目标对象池中的对象数量超过所述预设的阈值,则所述目标对象池可能无法容纳超过所述预设的阈值的部分对象,可能会导致区块链接口测试系统崩溃。因此,当确定所述目标对象池中的对象数量超过所述预设的阈值,则可以执行步骤S106。
步骤S106,将所述目标对象池中超过所述预设的阈值的其余对象进行回收。
具体地,由上述介绍可知,当对象用完后会被放入对象池中,在实际应用过程中,只有超过对象池的上限值的对象才会被垃圾回收器回收。
因此,若确定所述目标对象池中的对象数量超过所述预设的阈值,则可以将所述目标对象池中超过所述预设的阈值的其余对象进行回收。
例如,Golang语言内会创建垃圾回收机制对超过对象池的上限值的对象进行回收。
例如,图2示例了一种HTTP对象连接池化过程示意图。
如图2所示,测试用例A中的各个协程请求使用对象之后,本申请可以根据各个协程的请求,创建多个HTTP对象放进HTTP对象池,当各个协程需要用对象时,可以从HTTP对象池中取用对象。当测试用例A中各个协程用完各个HTTP对象之后,可以将用完的HTTP对象再次放进HTTP对象池中。
当测试用例B的各个协程需要使用对象时,可以再根据目前HTTP对象池中的对象数量来创建足够测试用例B的各个协程所需要用到的对象,原先放在HTTP对象池中的对象可以供测试用例B复用。而当测试用例B的各个协程用完对象之后,同样会将用完的对象再放进HTTP对象池。
所述请求发生器将各个协程进行并行处理的过程,可以包括如下:
步骤S201,在目标测试用例进入待执行队列时,所述请求发生器将所述目标测试用例配置中的并发协程数的参数初始化成相应数量的目标协程。
具体地,在实际应用过程中,当某个测试用例进入待执行队列时,会按照测试用例配置中的并发协程数参数初始化相应数量的协程,如上图2中的协程组所示。
因此,在目标测试用例进入待执行队列时,所述请求发生器将所述目标测试用例配置中的并发协程数的参数初始化成相应数量的目标协程。
例如,
如上述图2中,测试用例A中有N个协程,当测试用例A进入待执行队列时,所述请求发生器将测试用例A配置中的并发协程数的参数初始化成N个协程。
步骤S202,将所有目标协程进行并发执行。
具体地,由上述介绍可知,在目标测试用例进入待执行队列时,所述请求发生器将所述目标测试用例配置中的并发协程数的参数初始化成相应数量的目标协程。
在创建了各个所述目标协程之后,本申请可以将所有目标协程进行并发执行,其中,每个所述目标协程的执行流程可以设置为一致,以此达到并发请求的目的。
步骤S203,记录所有协程的请求的响应结果作为所述目标测试用例的测试报告数据佐证。
具体地,由上述介绍可知,在目标测试用例进入待执行队列时,所述请求发生器将所述目标测试用例配置中的并发协程数的参数初始化成相应数量的目标协程。并在创建了各个所述目标协程之后,本申请可以将所有目标协程进行并发执行。
将所有所述目标协程进行并发执行之后,为了更好监控各个目标协程的执行情况,可以记录所有协程的请求的响应结果作为所述目标测试用例的测试报告数据佐证。
其中,每个请求的响应结果可以包括请求时间、响应时间、响应结果。
在实际应用过程中,区块链接口测试系统的阈值检测器主要负责接口测试流程中的两个工作,其中,阈值检测器与请求发生器同时进行工作。
其中,
所述阈值检测器可以负责对协程组进行完工阈值配置以及对区块链网络进行完工阈值配置。
其中,所述阈值检测器对协程组进行完工阈值配置的过程,包括:
步骤S301,收集各个协程组内每次请求的反馈结果。
具体地,在实际应用过程中,每个协程组内各协程会因网络波动、资源抢夺等情况影响导致完成时间不一致,阈值检测器可以通过收集协程组内每次请求的反馈结果,以便可以用来判断是否能进入下一个测试用例流程。
因此,当测试用例的协程组并发执行之后,所述阈值检测器可以收集各个协程组内每次请求的反馈结果。以便可以实时监控各个协程是否完成相应的工作。
其中,各个协程组内每次请求的反馈结果包括区块链网络表示请求成功、请求失败以及请求超时三类结果的原文回应。
步骤S302,将所有反馈结果的总数与测试用例配置中设定的并发协程数和每个协程需要完成的请求数的乘积对比。
具体地,由上述介绍可知,本申请实施例可以收集各个协程组内每次请求的反馈结果。
各个协程组内每次请求的反馈结果可以反馈各个协程组内的每次请求是否请求成功、请求超时等。
在收集到所有的反馈结果之后,可以将所有反馈结果的总数与测试用例配置中设定的并发协程数和每个协程需要完成的请求数的乘积对比,以便可以判断当前的测试用例的流程是否已经完成。
步骤S303,依据各个协程组内每次请求的反馈结果与测试用例配置中设定的并发协程数和每个协程需要完成的请求数的乘积的对比结果,判断是否进入下一个测试用例流程。
具体地,由上述介绍可知,本申请实施例可以收集各个协程组内每次请求的反馈结果。
各个协程组内每次请求的反馈结果可以反馈各个协程每次请求的相关状态。
在收集各个协程组内每次请求的反馈结果之后,可以依据各个协程组内每次请求的反馈结果与测试用例配置中设定的并发协程数和每个协程需要完成的请求数的乘积的对比结果,判断是否进入下一个测试用例流程。
在实际应用过程中,阈值检测器可以将所有反馈结果的总数与测试用例配置中设定的并发协程数和每个协程需要完成的请求数的乘积进行对比,以确认其反馈结果的状态是否为已经完成当前的测试用例对应的流程。
若反馈结果总数小于测试用例配置中设定的并发协程数和每个协程需要完成的请求数的乘积,则说明当前的测试用例的流程仍未完成,则可以执行步骤S304;
若反馈结果总数等于测试用例配置中设定的并发协程数和每个协程需要完成的请求数的乘积,则说明当前的测试用例的流程已经完成,可以进入下一个测试用例流程,则可以执行步骤S305。
步骤S304,确定当前测试用例流程未完成,继续等待剩余响应结果。
具体地,由上述介绍可知,本申请实施例可以将所有反馈结果的总数与测试用例配置中设定的并发协程数和每个协程需要完成的请求数的乘积对比,以确认其反馈结果的状态是否为已经完成当前的测试用例对应的流程,若反馈结果总数小于测试用例配置中设定的并发协程数和每个协程需要完成的请求数的乘积,则说明仍有一些请求的反馈结果还没收集到,则说明当前的测试用例的流程仍未完成,则可以确定当前测试用例流程未完成,继续等待剩余响应结果。
步骤S305,确定当前测试用例流程已完成,则将协程组的完工阈值配置为测试用例配置中设定的并发协程数与每个协程需要完成的请求数的乘积。
具体地,由上述介绍可知,本申请实施例提供的阈值检测器将所有反馈结果的总数与测试用例配置中设定的并发协程数和每个协程需要完成的请求数的乘积进行对比,以确认其反馈结果的状态是否为已经完成当前的测试用例对应的流程,并判断是否能进入下一个测试用例流程。
在实际应用过程中,当反馈结果的总数等于测试用例配置中设定的并发协程数与每个协程需要完成的请求数的乘积,则说明当前测试用例的流程一全部完成,当前测试用例的流程完成之后,才能进入下一个测试用例流程。
因此,在确定能进入下一个测试用例流程,则说明当前测试用例的流程已经完成,则可以将协程组的完工阈值配置为测试用例配置中设定的并发协程数与每个协程需要完成的请求数的乘积。
例如,图3示例了一种测试用例的协程组完成阈值配置以及区块链网络完成阈值配置示意图。
如图3所示,
当测试用例A的协程组中各个协程组已经完成相应的工作之后,本申请实施例可以设置测试用例A的完工阈值,并确认可以进入测试用例B的流程。
所述阈值检测器对区块链网络进行完工阈值配置的过程,可以包括如下:
步骤S401,在所有协程组流程完成后,根据配置项系统工作限制中的等待区块产生的时间参数确定延时等待时间。
具体地,在实际应用过程中,当所有的测试用例的所有协程组流程完成后,需要根据配置项系统工作限制中的等待区块产生的时间参数做延时等待,在延时等待的这段时间不对区块链网络发送任何请求,以便区块链网络可以将所有性能都用于处理请求数据。
因此,在所有协程组流程完成后,根据配置项系统工作限制中的等待区块产生的时间参数确定延时等待时间,以便可以根据延时等待时间来暂停相关的请求。
步骤S402,在延时等待结束后,从初始区块高度开始逐个获取后续区块。
具体地,由上述介绍可知,本申请可以在所有协程组流程完成后,根据配置项系统工作限制中的等待区块产生的时间参数确定延时等待时间,以便可以根据延时等待时间来暂停相关的请求。
在实际应用过程中,在延时等待结束后,本申请可以从初始区块高度开始逐个获取后续区块,以便可以统计区块中的交易数量。
步骤S403,统计区块中的交易数量。
具体地,由上述介绍可知,在延时等待结束后,本申请可以从初始区块高度开始逐个获取后续区块,在获取所有的区块后,为了确定各个区块的交易数据,本申请还可以统计区块中的交易数量,以便可以了解各个区块的交易数据。
步骤S404,依据区块中的交易数量,记录在区块中的交易数据的状态为成功处理的数据。
具体地,由于区块链特性,记录在区块中的交易数据都是成功处理的数据。
由上述介绍可知,在延时等待结束后,本申请可以从初始区块高度开始逐个获取后续区块,并在获取所有的区块后,统计区块中的交易数量。
进一步地,在确定区块中的交易数量之后,可以依据区块中的交易数量,记录在区块中的交易数据的状态为成功处理的数据,以便可以依据区块中的交易数据的状态为成功处理的数据,来判断是否存在零交易区块。
步骤S405,依据区块中的交易数据的状态为成功处理的数据,来判断是否存在零交易区块。
具体地,由于区块链特性,记录在区块中的交易数据都是成功处理的数据。
由于区块链确认交易数据的方式是产生区块,所以遇见0交易区块,则意味着区块链上的数据处理完结,即本轮测试的所有数据都处理完毕。
因此,若确定存在零交易区块,则可以执行步骤S406。
步骤S406,确定区块链的所有数据已完成,并将区块链网络的完工阈值配置为遇见零交易区块。
具体地,由上述介绍可知,由于区块链确认交易数据的方式是产生区块,所以当遇见零交易区块,则说明区块链上的数据已处理完结,区块网络中的当前时刻的本轮测试的所有数据都处理完毕。
因此,若确定存在零交易区块,则可以确定区块链的所有数据已完成,并将区块链网络的完工阈值配置为遇见零交易区块。
进一步地,还可以记录区块中的交易数据的状态为成功处理的数据的总数量,以便可以通过区块中的交易数据的状态为成功处理的数据的总数量来计算最终的测试报告中的“正确率”的指标。
例如,如图3所示,
当测试用例A的协程组中各个协程组已经完成相应的工作之后,本申请实施例可以设置测试用例A的完工阈值,并确认可以进入测试用例B的流程。
并在测试用例B的流程同样完成之后,等待延迟时间结束之后,对区块链网络进行完工阈值配置。
所述响应处理器可以为所述区块链目标网络节点的区块数据进行解析并生成所述区块链目标网络节点的测试报告。
在实际应用过程中,区块数据解析的目的统计成功处理交易数量;测试报告则是根据相关数据计算结果来展现。
测试报告按每个测试用例输出,报告内容包括TPS、CTPS、正确率、最小延迟时间、平均延迟时间、最大延迟时间。各测试指标的计算方式如下:
(1)TPS:(协程数×每个协程需要完成的请求数)/(0交易区块生成时间-第一笔交易发送时间)
(2)CTPS:(协程数×每个协程需要完成的请求数)/(0交易区块生成时间-第一笔交易响应时间)
(3)正确率:成功交易梳理数量/(协程数×每个协程需要完成的请求数)
(4)最小延迟时间:min(每次请求响应时间)
(5)平均延迟时间:所有请求响应时间之和/(协程数×每个协程需要完成的请求数)
(6)最大延迟时间:max(每次请求响应时间)
从上述介绍的技术方案可以看出,本申请实施例提供的测试系统为一个可以独立运行程序,无需依赖工作环境,可以适用于不同的系统环境;可以一键式自动化完成对区块链接口的性能测试,无需进行二次请求和确认动作,简化了区块链接口测试的流程,可以更快地完成对区块链接口的性能测试,能更好的契合区块链异步接口测试流程的需求,除此之外,还能够提升区块链接口测试的性能,可以根据应用场景需要配置不同的文件,通用性较强,记录区块链接口性能测试过程中产生的过程数据和最终生成的测试结果报告。
进一步地,本申请还包括一种区块链接口测试方法,该方法可以应用于前述介绍的区块链接口测试系统,该区块接口测试方法的实施步骤可以包括如下:
步骤S501,启动所述启动器以发出启动信号,为区块链接口测试系统进行初始化操作,并同时往区块链网络目标节点发送请求,其中,所述请求为请求获取当前网络中的区块高度并将该区块缓存在内存中,同时将该区块标记为初始区块。
步骤S502,调用所述配置读取器从预设的存储路径读取目标配置文件,其中所述目标配置文件用于为所述启动器、所述请求发生器、所述阈值检测器以及所述响应处理器提供配置参数。
步骤S503,调用所述请求发生器接收到所述区块链接口测试系统的启动信号后,发生初始化,并在初始化过程中进行连接池化,同时将各个协程进行并行处理;
步骤S504,调用所述阈值检测器负责对协程组进行完工阈值配置以及对区块链网络进行完工阈值配置。
步骤S505,调用所述响应处理器为所述区块链目标网络节点的区块数据进行解析并生成所述区块链目标网络节点的测试报告。
其中,区块链接口测试方法具体处理流程,可以参照前文区块链接口测试系统部分相关介绍,此处不再赘述。
本申请实施例提供的区块链接口测试方法及系统均可应用于区块链接口测试设备,如终端:手机、电脑等。可选的,图4示出了区块链接口测试设备的硬件结构框图,参照图4,区块链接口测试设备的硬件结构可以包括:至少一个处理器1,至少一个通信接口2,至少一个存储器3和至少一个通信总线4。
在本申请实施例中,处理器1、通信接口2、存储器3、通信总线4的数量为至少一个,且处理器1、通信接口2、存储器3通过通信总线4完成相互间的通信。
处理器1可能是一个中央处理器CPU,或者是特定集成电路ASIC(ApplicationSpecific Integrated Circuit),或者是被配置成实施本申请实施例的一个或多个集成电路等;
存储器3可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatilememory)等,例如至少一个磁盘存储器;
其中,存储器存储有程序,处理器可调用存储器存储的程序,所述程序用于:实现前述终端区块链接口测试方案中的各个处理流程。
本申请实施例还提供一种可读存储介质,该存储介质可存储有适于处理器执行的程序,所述程序用于:实现前述终端在区块链接口测试方案中的各个处理流程。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本申请。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。各个实施例之间可以相互组合。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

Claims (10)

1.一种区块链接口测试系统,其特征在于,该系统包括:启动器、配置读取器、请求发生器、阈值检测器以及响应处理器;
其中,
所述启动器启动后发出启动信号,为区块链接口测试系统进行初始化操作,并同时往区块链网络目标节点发送请求,其中,所述请求为请求获取当前网络中的区块高度并将该区块缓存在内存中,同时将该区块标记为初始区块;
所述配置读取器从预设的存储路径读取目标配置文件,其中所述目标配置文件用于为所述启动器、所述请求发生器、所述阈值检测器以及所述响应处理器提供配置参数;
所述请求发生器接收到所述区块链接口测试系统的启动信号后,发生初始化,并在初始化过程中进行连接池化,同时将各个协程进行并行处理;
所述阈值检测器负责对协程组进行完工阈值配置以及对区块链网络进行完工阈值配置;
所述响应处理器为所述区块链目标网络节点的区块数据进行解析并生成所述区块链目标网络节点的测试报告。
2.根据权利要求1所述的系统,其特征在于,所述目标配置文件包括:
节点连接信息、所述区块链接口测试系统工作限制信息、所述区块链网络阈值信息、所述区块链基础接口配置信息以及测试用例的配置信息。
3.根据权利要求1所述的系统,其特征在于,所述请求发生器在初始化过程中进行连接池化的过程,包括:
构建一个目标对象池;
将所述目标对象池的容量初始化为预设的阈值;
判断是否存在需要使用对象的请求;
若需要使用对象,则创建目标对象并将请求使用所述目标对象的请求对应的网址进行绑定;
判断所述目标对象池中的对象数量是否超过所述预设的阈值;
若所述目标对象池中的对象数量超过所述预设的阈值,则将所述目标对象池中超过所述预设的阈值的其余对象进行回收。
4.根据权利要求1所述的系统,其特征在于,所述请求发生器将各个协程进行并行处理的过程,包括:
在目标测试用例进入待执行队列时,所述请求发生器将所述目标测试用例配置中的并发协程数的参数初始化成相应数量的目标协程;
将所有目标协程进行并发执行,其中,每个所述目标协程的执行流程一致;
记录所有协程的请求的响应结果作为所述目标测试用例的测试报告数据佐证,其中,每个请求的响应结果包括请求时间、响应时间、响应结果。
5.根据权利要求1所述的系统,其特征在于,所述阈值检测器对协程组进行完工阈值配置的过程,包括:
收集各个协程组内每次请求的反馈结果,其中,各个协程组内每次请求的反馈结果包括区块链网络表示请求成功、请求失败以及请求超时三类结果的原文回应;
将所有反馈结果的总数与测试用例配置中设定的并发协程数和每个协程需要完成的请求数的乘积对比;
依据各个协程组内每次请求的反馈结果与测试用例配置中设定的并发协程数和每个协程需要完成的请求数的乘积的对比结果,判断是否能进入下一个测试用例流程;
若反馈结果总数小于测试用例配置中设定的并发协程数和每个协程需要完成的请求数的乘积,则确定当前测试用例流程未完成,继续等待剩余响应结果;
若反馈结果总数等于测试用例配置中设定的并发协程数和每个协程需要完成的请求数的乘积,则确定当前测试用例流程已完成,则将协程组的完工阈值配置为测试用例配置中设定的并发协程数与每个协程需要完成的请求数的乘积。
6.根据权利要求1所述的系统,其特征在于,所述阈值检测器对区块链网络进行完工阈值配置的过程,包括:
在所有协程组流程完成后,根据配置项系统工作限制中的等待区块产生的时间参数确定延时等待时间;
在延时等待结束后,从初始区块高度开始逐个获取后续区块;
统计区块中的交易数量;
依据区块中的交易数量,记录在区块中的交易数据的状态为成功处理的数据;
依据区块中的交易数据的状态为成功处理的数据,来判断是否存在零交易区块;
若确定存在零交易区块,则确定区块链的所有数据已完成,并将区块链网络的完工阈值配置为遇见零交易区块。
7.一种区块链接口测试方法,其特征在于,应用于权利要求1-6所述的区块链接口测试系统,该系统包括:启动器、配置读取器、请求发生器、阈值检测器以及响应处理器;
其中,
启动所述启动器以发出启动信号,为区块链接口测试系统进行初始化操作,并同时往区块链网络目标节点发送请求,其中,所述请求为请求获取当前网络中的区块高度并将该区块缓存在内存中,同时将该区块标记为初始区块;
调用所述配置读取器从预设的存储路径读取目标配置文件,其中所述目标配置文件用于为所述启动器、所述请求发生器、所述阈值检测器以及所述响应处理器提供配置参数;
调用所述请求发生器接收到所述区块链接口测试系统的启动信号后,发生初始化,并在初始化过程中进行连接池化,同时将各个协程进行并行处理;
调用所述阈值检测器负责对协程组进行完工阈值配置以及对区块链网络进行完工阈值配置;
调用所述响应处理器为所述区块链目标网络节点的区块数据进行解析并生成所述区块链目标网络节点的测试报告。
8.根据权利要求7所述的方法,其特征在于,所述目标配置文件包括:
节点连接信息、所述区块链接口测试系统工作限制信息、所述区块链网络阈值信息、所述区块链基础接口配置信息以及测试用例的配置信息。
9.一种区块链接口测试设备,其特征在于,包括:一个或多个处理器,以及存储器;
所述存储器中存储有计算机可读指令,所述计算机可读指令被所述一个或多个处理器执行时,实现如权利要求7至8中任一项所述区块链接口测试方法的步骤。
10.一种可读存储介质,其特征在于:所述可读存储介质中存储有计算机可读指令,所述计算机可读指令被一个或多个处理器执行时,使得一个或多个处理器实现如权利要求7至8中任一项所述区块链接口测试方法的步骤。
CN202310073819.XA 2023-02-07 2023-02-07 区块链接口测试系统、方法、设备及可读存储介质 Pending CN116302958A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310073819.XA CN116302958A (zh) 2023-02-07 2023-02-07 区块链接口测试系统、方法、设备及可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310073819.XA CN116302958A (zh) 2023-02-07 2023-02-07 区块链接口测试系统、方法、设备及可读存储介质

Publications (1)

Publication Number Publication Date
CN116302958A true CN116302958A (zh) 2023-06-23

Family

ID=86798678

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310073819.XA Pending CN116302958A (zh) 2023-02-07 2023-02-07 区块链接口测试系统、方法、设备及可读存储介质

Country Status (1)

Country Link
CN (1) CN116302958A (zh)

Similar Documents

Publication Publication Date Title
CN107341098B (zh) 软件性能测试方法、平台、设备及存储介质
US10116534B2 (en) Systems and methods for WebSphere MQ performance metrics analysis
CN111897724B (zh) 一种适用于云平台的自动化测试方法及装置
CN104834602B (zh) 一种程序发布方法、装置和程序发布系统
CN103581247A (zh) 一种基于云计算环境的分布式Web测试方法
CN111147322A (zh) 5g核心网微服务架构的测试系统及方法
CN111522728A (zh) 自动化测试用例的生成方法、电子设备及可读存储介质
CN112115031A (zh) 集群状态监控方法及装置
CN112202647B (zh) 区块链网络中的测试方法、装置及测试设备
CN112732499B (zh) 一种基于微服务架构的测试方法、装置及计算机系统
CN116974874A (zh) 数据库的测试方法、装置、电子设备及可读存储介质
CN114564374A (zh) 算子性能评估方法、装置、电子设备及存储介质
CN115271736B (zh) 验证事务一致性的方法、装置、设备及存储介质
CN113127356A (zh) 压测方法、装置、电子设备及存储介质
CN105868956A (zh) 一种数据处理方法及装置
CN109344066A (zh) 一种浏览器页面的测试方法、系统及终端
CN114297042A (zh) 接口的压力性能测试方法、装置、设备及存储介质
CN116302958A (zh) 区块链接口测试系统、方法、设备及可读存储介质
CN114039878A (zh) 一种网络请求的处理方法、装置、电子设备及存储介质
CN111915275A (zh) 一种应用操作的流程管理方法、装置及系统
Kaushik et al. Micro Frontend Based Performance Improvement and Prediction for Microservices Using Machine Learning
CN112650679B (zh) 一种测试校验方法、装置及计算机系统
CN115174343B (zh) B/s架构页面巡检方法、装置和页面巡检系统
CN117389841B (zh) 加速器资源监控方法、装置、集群设备及存储介质
CN113742226A (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