一种中间系统的压力测试系统及方法与流程

文档序号:12464166阅读:309来源:国知局
一种中间系统的压力测试系统及方法与流程

本发明涉及软件测试技术领域,尤其涉及一种中间系统的压力测试系统及方法。



背景技术:

随着社会经济的不断发展,支付活动的日益频繁,市场对于支付领域计算机系统的要求不断提高,主要表现在以下两个方面:1)开发、测试、上线的周期越来越短;2)系统支撑的业务量越来越大。

支付系统相关企业在应对以上两个要求时会发现,由于缺少自动化测试以及合适的测试环境,测试活动在很多方面成为整个工程活动的瓶颈。测试人员需要快速部署合适的测试环境,然而合适的测试环境往往难以搭建,例如:

1)与目标系统相关联的系统也在同步开发,当前仍是不可用或不稳定的版本,用不稳定的关联系统进行测试,测试结果的准确性很难保证。

2)与目标系统相关联的系统由于安全原因不允许被访问。

3)测试环境的总体系统资源远小于生产环境,在进行性能测试时,往往采用将系统资源集中在单一的目标系统上,而与目标系统相关联的外围系统没有足够的系统资源,导致系统间交互的过程中,外围系统成为整个测试环境的瓶颈,而无法准确获取目标系统的性能数据。

目前,测试环境虚拟化成为缩短产品研发周期的有效方法。环境虚拟化工具通过模拟接口、服务、数据行为、应用和基础设施来帮助开发团队进行早期的系统调试,帮助测试团队进行综合测试。

环境虚拟化工具可以模拟目标系统的关联系统(外围系统),接收目标系统的来账报文,对目标系统发出的请求给予合适的响应和回复。依靠环境虚拟化工具,测试人员不必再搭建与目标系统相关联的外围系统,减少了搭建环境的时间成本,减少了对物理环境的占用,降低了因不稳定的外围环境导致的测试结果不准确的可能性。

现有的环境虚拟化方法一(单机单进程)解决的是功能测试过程中的报文回挡,采用单机单进程对目标系统发出的报文给予合适的响应和回复。当进行性能测试时,这类环境虚拟化工具本身就会成为性能瓶颈。因为随着市场支付行为的日益频繁,单个支付系统的吞吐量峰值往往会达到每秒上千笔甚至上万笔业务,而这种环境虚拟化方法由于其单机单进程架构设计的局限性,程序在同一时刻仅能占用一颗CPU(如果是多线程CPU,同一时刻仅能占用一颗CPU中的一个线程),其处理能力非常有限,对于支付系统常见的报文类型,其每秒仅能处理几笔、几十笔报文,其吞吐量与每秒上千笔甚至上万笔的业务目标相去甚远。并且,这种环境虚拟化方法不能通过系统的纵向扩容(增加单机的CPU等系统资源)或横向扩容(增加并行处理的计算机数量)来提高吞吐量。

现有的环境虚拟化方法二(单机多进程)一定程度上解决了单机单进程架构的无法并发的局限性,其采用自身代码实现多进程的架构,对目标系统发出的报文给予并发的响应和回复。首先,这种多进程的架构往往不具备横向扩展能力,即如果单机的处理能力不足,无法通过单一主控系统管理多台并行处理的计算机来增加整个系统的处理能力。其次,这种采用自身代码实现的多进程架构程序不能精确、稳定地控制并发速度。

现有的环境虚拟化方法三(第三方性能测试工具)解决了单机多进程架构不具备横向扩展能力的问题,但现有的第三方性能测试工具目前只用来模拟支付系统测试中的报文发起方,而不能模拟报文的对手方反馈相应的回执报文。



技术实现要素:

为解决上述技术问题,本发明提供了一种中间系统的压力测试系统及方法。

本发明实施例一方面提供了一种中间系统的压力测试系统,所述压力测试系统包括:一主控压力机及与所述主控压力机连接的至少一台测试压力机;

所述主控压力机用于创建性能测试调度计划,以控制所述测试压力机对被测中间系统进行压力测试;

所述测试压力机用于根据所述性能测试调度计划模拟测试环境中的交易发起方,向被测中间系统批量发送交易请求报文,以使所述被测中间系统根据所述交易请求报文生成对应的报文;

所述测试压力机还用于根据所述性能测试调度计划模拟所述交易发起方的交易对手方批量接收所述被测中间系统根据所述交易请求报文生成的来账报文,根据所述来账报文生成响应于所述来账报文的回挡报文并批量发给所述被测中间系统。

本发明实施例另一方面还提供了一种利用上述中间系统的压力测试系统对中间系统进行压力测试的方法,所述压力测试方法包括:

所述主控压力机创建性能测试调度计划,以控制所述测试压力机对被测中间系统进行压力测试;

根据所述性能测试调度计划,所述测试压力机模拟测试环境中的交易发起方,向所述被测中间系统批量发送交易请求报文,以使所述被测中间系统根据所述交易请求报文生成对应的报文;

所述测试压力机模拟所述交易发起方的交易对手方批量接收所述被测中间系统的根据所述交易请求报文生成的来账报文,并根据所述来账报文生成响应于所述来账报文的回挡报文并批量发给所述被测中间系统。

本发明实施例解决了传统测试环境虚拟化方法达不到较高吞吐量的问题,解决了传统测试环境虚拟化方法达不到精确、稳定地控制吞吐量的问题,解决了传统测试环境虚拟化方法只能做交易发起方而不能做交易对手方的问题。通过本发明所述的压力测试系统及方法,虚拟化测试环境可以通过系统的纵向扩容(增加单机的CPU等系统资源)或横向扩容(增加并行处理的计算机数量)来提高吞吐量,实现精确、稳定的吞吐量。对于被测中间系统常见的报文类型,虚拟化测试环境的处理能力可以轻松提高到每秒上千笔报文,进而帮助被测中间系统测试人员在没有搭建与目标系统相关联的外围系统的情况下进行有效的性能测试,减少了搭建环境的时间成本,减少了对真实物理环境的占用,降低了因外围环境物理资源不足导致的性能测试结果不准确的可能性。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例中间系统的压力测试系统的结构示意图;

图2为本发明实施例中间系统的压力测试方法的流程示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本发明中涉及的中间系统是指既能接收交易发起方发来的报文,又能根据报文的性质向交易对手方发送报文的系统,例如用于跨行支付的网银业务系统。业务系统通过消息中间件(例如,IBM MQ、东方通Tonglink)传输支付业务报文(例如,网银贷记业务报文,网银借记业务报文),支付业务报文负责账户与账户之间的资金划转。

图1为本发明实施例中间系统的压力测试系统的结构示意图。如图1所示,该压力测试系统包括一主控压力机以及与该主控压力机连接的至少一台测试压力机。所述主控压力机用于创建性能测试调度计划,以控制各测试压力机对被测中间系统进行压力测试。此处的性能测试调度计划包含对测试进行分组,并创建用户组来模拟测试环境中的交易发起方和交易对手方。

在创建性能测试计划后,测试压力机根据创建好的性能测试调度计划模拟测试环境中的交易发起方,向被测中间系统批量发送交易请求报文,以使被测中间系统根据所述交易请求报文生成对应的报文。

测试压力机还用于根据性能测试调度计划模拟所述交易发起方对应的交易对手方批量接收被测中间系统根据所述交易请求报文生成的来账报文,根据来账报文生成响应于所述来账报文的回挡报文并批量发给被测中间系统,完成对被测中间系统的压力测试。

本发明实施例提供了一种中间系统批量业务的测试环境虚拟化的解决方案,解决了现有技术中测试环境虚拟化方法达不到较高吞吐量的问题,使得仅需简单的系统纵向扩展或横向扩展并辅以合适的配置,即可将虚拟化测试环境的处理能力达到较高的预设值,并解决了现有并发多进程方式下虚拟环境处理能力不稳定的问题。

通过本发明实施例提供的压力测试系统,可以帮助中间系统的测试人员在没有搭建关联系统(外围系统)的情况下快速进行有效的性能测试。

由于与被测中间系统相关联的交易发起方系统、交易对手方系统可能在同步开发,当前仍是不可用或不稳定的版本,或者与被测中间系统相关联的系统可能由于安全原因不允许被访问,或者与被测中间系统相关联的系统可能没有充足的系统资源做压力测试。因此,通过本发明实施例提供的压力测试系统,可以帮助中间系统的测试人员在没有搭建关联系统(外围系统)的情况下快速进行有效的性能测试。

在一实施例中,上述的测试压力机上设置有报文发起单元,报文发起单元用于模拟测试环境中的交易发起方向被测中间系统批量发送交易请求报文。

被测中间系统接收到交易发起方发来的大量交易请求报文后,根据该交易请求报文的要求,转发给相应的交易对手方。

本发明实施例在测试压力机上还设置有报文接收单元及报文回挡单元。所述报文接收单元用于接收被测中间系统根据所述交易请求报文生成的来账报文,所述报文回挡单元用于根据所述来账报文生成响应于相应来账报文的回挡报文,并发给被测中间系统,以对被测中间系统进行压力测试。

由于并非所有的交易请求报文都需要相应的交易对手方回挡,在一实施例中,上述的报文接收单元在接收到被测中间系统发送的来账报文后,还需要判断该来账报文是否需要回挡,如果该来账报文不需要回挡时,将该来账报文丢弃;如果需要回挡则启动报文回挡单元进行回挡。

通常地,上述报文回挡单元包括模板加载模块及报文生成模块。模板加载模块用于根据被测中间系统发来的报文的模板类型加载对应的报文模板;报文生成模块用于获取所述来账报文中的发送行行号、接收行行号,并利用所述发送行行号替换所述报文模板中的接收行行号,利用所述接收行行号替换所述报文模板中的发送行行号,以生成对应所述来账报文的回挡报文,并发送给被测中间系统。

在一实施例中,上述的报文回挡单元还包括一个报文ID生成模块,其根据预设的报文ID生成规则生成全局唯一的报文ID,并将所述报文ID添加到相应的回挡报文中,以使本发明实施例生成的每一个回挡报文都具有全局唯一性。

例如,先实例化报文模板生成函数(catptools.jar)中的回挡报文类(如:IBPS102报文),并调用init_pfm()方法初始化所述回挡报文(如:IBPS102)的报文模板。获取从来账报文中提取的发送行行号、接收行行号、业务时间、报文ID号等信息,按照如下示例所示,调用相关函数进行报文关键要素替换。

示例:调用setWorkdate()方法替换所述报文模板(如:IBPS102)的业务时间;调用init_build()方法替换发送行、接收行和原报文的报文流水号。

本发明仅以一具体的报文为例进行说明,并非用于对本发明的限制。最后生成全局范围内唯一的报文ID即可,此处的报文ID是指回挡报文的ID。所谓的全局范围内唯一,是指多台压力机同时生成报文ID时需要确保所述报文ID不重复。每台压力机根据测试人员为其分配的报文ID起始值以及每次迭代需要增加的值计算在本压力机上本次迭代发送的报文ID号。因此,测试人员需要保证为每台压力机分配的报文ID起始值均互不相同,并且各个ID起始值之前的差值均不小于每次迭代需要增加的值与迭代次数的乘积。

通常地,在进行要素替换后还需要对回挡报文的签名串进行加签处理,以证明在支付过程中交易发起方和交易对手方的身份,例如使用函数Sign.getElctrncSgntr()对回挡报文进行加签。可选地,如果需要加密传输,则还需对回挡报文进行加密处理,例如使用函数PmtsU.pmtsEu()对回挡报文进行加密,最后,可以采用JMS协议的方法(javax.jms.BytesMessage.writeBytes())将回挡报文发送出去,即发送给被测中间系统。

基于与图1所示中间系统的压力测试系统相同的发明构思,本发明实施例还提供了一种利用图1所示压力测试系统对中间系统进行压力测试的方法。由于该方法解决问题的原理与图1所示中间系统的压力测试系统相似,因此该方法的实施可以参见图1中的压力测试系统的实施,重复之处不再赘述。

在另一实施例中,本发明还提供了一种压力测试方法,如图2所示,该方法主要包括以下步骤:

步骤S1、主控压力机创建性能测试调度计划,以控制测试压力机对被测中间系统进行压力测试。

步骤S2、根据所述性能测试调度计划,测试压力机模拟测试环境中的交易发起方,向被测中间系统批量发送交易请求报文,使被测中间系统根据该交易请求报文生成对应的报文。

步骤S3、测试压力机模拟所述交易发起方的交易对手方批量接收被测中间系统的根据交易请求报文生成的来账报文,并根据所述来账报文生成响应于该来账报文的回挡报文,并批量发给被测中间系统。

在一实施例中,测试压力机在接收被测中间系统的根据所述交易请求报文生成的来账报文后,还需要判断所述来账报文是否需要回挡,并在需要回挡时根据所述来账报文生成响应于所述来账报文的回挡报文,不需要回挡的时候将来账报文丢弃即可。

在一实施例中,在接收到来账报文后,对来账报文进行语法和语义的解析,获取来账报文的模板类型和来账报文中所含的发送行行号、接收行行号,根据所述来账报文的模板类型加载对应的报文模板。然后利用所述发送行行号替换所述报文模板中的接收行行号,利用接收行行号替换所述报文模板中的发送行行号,以生成对应所述来账报文的回挡报文。

通常地,在生成回挡报文时,需要根据预设的报文ID生成规则生成全局唯一的报文ID,并将所述报文ID添加到相应的回挡报文中。

本发明实施例解决了传统测试环境虚拟化方法达不到较高吞吐量的问题,解决了传统测试环境虚拟化方法达不到精确、稳定地控制吞吐量的问题,解决了传统测试环境虚拟化方法只能做交易发起方而不能做交易对手方的问题。通过本发明所述的压力测试系统及方法,虚拟化测试环境可以通过系统的纵向扩容(增加单机的CPU等系统资源)或横向扩容(增加并行处理的计算机数量)来提高吞吐量,实现精确、稳定的吞吐量。对于被测中间系统常见的报文类型,虚拟化测试环境的处理能力可以轻松提高到每秒上千笔报文,进而帮助被测中间系统测试人员在没有搭建与目标系统相关联的外围系统的情况下进行有效的性能测试,减少了搭建环境的时间成本,减少了对真实物理环境的占用,降低了因外围环境物理资源不足导致的性能测试结果不准确的可能性。

虚拟环境实现批量发送报文、批量回挡报文,并精准控制发送和回挡的吞吐量,是通过在主控机创建性能测试调度计划,由主控机控制一台或多台压力机共同实现的。

为更清楚地说明本发明实施例提供的中间系统的压力测试系统及方法,本发明实施例采用PC端性能测试工具(如:RPT、LoadRunner、Jmeter)为虚拟环境基础设施,构建支付行业计算机系统中用于批量业务测试的外围环境。

采用第三方性能测试工具作为虚拟化环境的基础设施,由多台压力机并行运行第三方性能测试工具以提供批量、稳定的虚拟环境处理能力(吞吐量)。主控压力机可采用安装有Windows操作系统的PC机作为物理承载主体,具体实施时,需要在主控压力机上设置第三方性能测试工具的控制端软件作为主控服务器。测试压力机又称为代理机,可采用安装有Windows操作系统的PC机或Linux操作系统的PC机或AIX操作系统的Power机作为其物理承载主体,在测试压力机上设置有该测试工具的代理端软件,并且该主控服务器用于并发控制代理端软件。在对支付系统的测试环境中可以有一台或多台测试压力机。

将报文发起程序、报文回挡程序嵌入第三方性能测试工具,分别模拟支付系统测试环境中的交易发起方及其对应的交易对手方。由第三方性能测试工具的主控服务器并发调度代理服务器当中的报文发起程序,模拟交易发起方批量、稳定地向被测中间系统发起报文。由第三方性能测试工具的主控服务器并发调度代理服务器当中的报文回挡程序,模拟交易对手方(关联系统)批量、稳定地回挡被测中间系统的来账报文。该虚拟化环境的回挡能力可以通过增加虚拟化环境的单机系统资源或增加虚拟化环境的服务器数量来获得提升。

1.在主控压力机上创建性能测试调度计划。以第三方性能测试工具RPT为例,打开主控压力机上的RPT软件,并在“测试导航器”窗口下找到“调度”目录,在该目录下新建一个“性能调度”。

该第三方性能测试工具具有精准控制吞吐量的能力,其用户预设吞吐量预实际吞吐量之间的偏差非常小;并且还具有横向扩展能力,即通过增加代理机的数量,可获得近似线性的吞吐量增长。

2.添加用户组。对测试进行分组并新建用户组,从而模拟不同类型用户。其中一个用户组代表交易发起方,另一个用户组代表交易对手方即报文回挡方。

设置每个用户组中的虚拟用户数,例如,设置100个虚拟用户代表交易发起方的用户组,表示模拟100个交易发起方共同向被测支付系统(即被测中间系统)发出交易请求报文。设置100个虚拟用户代表报文回挡方的用户组,表示模拟100个交易对手方生成回挡报文并批量回挡所述被测支付系统所需的往账报文。

3.指定用户组的运行位置。指定设置于第三方性能测试工具中的报文发起程序和报文回挡程序运行的测试压力机,可指定多台压力机以增加虚拟环境的回挡能力。

4.在用户组种添加测试。测试是一个用户进行一次案例执行的过程,即所述报文发起程序或所述报文回挡程序通过在不同用户组中添加不同的测试,从而模拟不同外围环境的操作,以实现虚拟化环境。其中一个用户组代表交易发起方,为其配置所述报文发起程序;另一个用户组代表交易对手方即报文回挡方,为其配置所述报文回挡程序。如果一测试压力机既要模拟交易发起方,又要模拟交易对手方,那么需要在该测试压力机上同时设置报文发起程序及报文回挡程序。

5.设置测试迭代参数,即设置每类测试的时间间隔、迭代次数,以控制每类测试的执行持续时间和吞吐量,即单位时间发送或回挡报文的数量。

6.在设置好性能测试调度计划后,还需要设置一数据池。在执行测试期间,对于每个用户组使用的队列、通道、接收到的报文类型、需要回挡的报文类型等可能不尽相同,因此,需要将报文回挡程序中的上述内容设置为参数,在执行测试时替换为数据池当中指定的值。根据本次测试所需参数值新建数据池或导入已有数据池;读取数据池并向本次测试所需的参数赋值。

7.执行调度计划以启动该虚拟化环境。启动虚拟化环境(即启动所述主控压力机上的调度计划)后,该虚拟化环境可以向被测支付系统批量发送测试报文,批量接收被测支付系统发出的来账报文,并批量回挡被测支付系统所需的往账报文。

利用设置在并行运行的多台压力机上的第三方性能测试工具模拟被测支付系统的交易对手方(即报文接收方),批量接收被测支付系统根据交易请求报文生成的来账报文,接收报文的具体实施步骤如下:设置于第三方性能测试工具中的报文接收程序使用JMS方式从被测支付系统的下行业务队列接收报文。报文接收程序中的接收函数采用循环的阻塞式方式,所述阻塞式方式在队列没有收到报文时会一直处于阻塞状态。接收函数是一个“原子操作”,需确保报文接收的完整性,在没有报文超时或消息中间件异常的情况下,报文接收程序进行一次接收函数的调用将返回一个完整的报文。

测试人员通过在报文接收程序中设置报文回挡列表,实现对指定来账报文的批量回挡。报文接收程序在收到来账报文后判断该来账报文的类型是否需要回挡处理,若需要,则进入报文回挡程序处理;若不需要,则将报文直接丢弃,报文接收程序进入下一循环进行下一个报文的接收处理。其中,报文接收程序主体如下:

然后,利用设置在并行运行的多台压力机上的第三方性能测试工具模拟被测支付系统的交易对手方(即报文接收方)批量发送回挡报文至所述支付系统。利用设置在单台压力机上的第三方性能测试工具进行报文回挡。

设置于第三方性能测试工具中的报文回挡程序收到报文接收程序获取的来账报文后,对所述来账报文进行语法和语义的解析,解析所述来账报文的XML报文格式,并采用String.subString(idx1,idx2)方法,依据报文中指定的位置提取其发送行行号、接收行行号等关键要素。通过报文回挡程序中的报文模板生成函数来生成指定类型的回挡报文模板,采用来账报文中提取的所述发送行行号及接收行行号对模板中的相关要素进行值替换,利用报文回挡程序中的报文加签函数对回挡报文进行加签处理,如果需要的话,还可以利用所述报文回挡程序中报文加密函数对回挡报文进行加密处理,最后将所述回挡报文发送至所述支付系统。

本发明实施例具有精准控制吞吐量的能力,在物理环境的资源不构成瓶颈的情况下,系统实际吞吐量与用户预设吞吐量一致;具备横向扩展能力,即通过增加代理机数量,吞吐量可获得近似线性的增长。本发明实施例采用第三方性能测试工具,由于第三方性能测试工具一般具备用户自定义代码的函数接口,可以添加用户自定义操作,实现个性化测试。并且,第三方性能测试工具的主控服务器可以并发控制多台测试压力机上的代理端软件,从而实现大批量、稳定、精准地报文回挡。

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

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

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

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

本发明中应用了具体实施例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

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