TCP接口测试方法、介质、设备及装置转让专利

申请号 : CN202110395169.1

文献号 : CN113190388B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 谢婷婷李秀源庄建青韩科敏

申请人 : 厦门路桥信息股份有限公司

摘要 :

本发明公开了一种TCP接口测试方法及装置,其中方法包括:根据测试需求创建不同业务处理逻辑的测试类,并根据jmeter中java请求格式完成代码编写,以及创建线程组,并在所述线程组中添加取样器java请求;获取携带测试信息的接口测试请求,根据测试信息启动客户端,以及调用心跳保活以建立客户端与服务端的长连接;将测试信息写入java对象,并通过netty封装的TCP协议处理模块根据TCP协议规范将测试信息协议编码成编码数据以发送给服务端,以便服务端对编码数据进行解码及相关业务处理,并将处理结果编码成TCP数据包以响应给客户端,客户端根据TCP协议规范接收TCP数据包,并对TCP数据包进行解码及相关业务处理以断言响应结果;从而能够保证高效、稳定的对TCP接口进行测试。

权利要求 :

1.一种TCP接口测试方法,其特征在于,包括以下步骤:根据测试需求创建不同业务处理逻辑的测试类,并根据jmeter取样器Sampler中的java请求格式完成代码编写,以及创建线程组,并在所述线程组中添加取样器java请求;

获取携带测试信息的接口测试请求,其中,所述测试信息包括测试参数、并发线程数和执行策略,所述测试参数包括服务端的标识信息和对应的客户端的标识信息;

根据所述测试信息启动所述客户端,以及调用心跳保活以建立所述客户端与所述服务端的长连接;

将所述测试信息写入java对象,并通过netty封装的TCP协议处理模块根据TCP协议规范将所述测试信息协议编码成编码数据以发送给所述服务端,以便所述服务端对所述编码数据进行解码及相关业务处理,并将处理结果编码成TCP数据包以响应给所述客户端,所述客户端根据TCP协议规范接收所述TCP数据包,并对所述TCP数据包进行解码及相关业务处理以断言响应结果。

2.如权利要求1所述的TCP接口测试方法,其特征在于,采用jmeter GUI工具创建线程组,还在所述线程组中添加测试相关组件,以便测试结束后通过所述测试相关组件对测试结果进行分析。

3.如权利要求1‑2中任一项所述的TCP接口测试方法,其特征在于,在根据TCP协议规范对所述测试信息进行协议编码时,根据不同数据类型进行编码,并产生数据安全校验码,以便根据所述数据安全校验码在发送及接收的过程中进行数据安全校验。

4.如权利要求1所述的TCP接口测试方法,其特征在于,在调用心跳保活以建立所述客户端与所述服务端的长连接时,还对所述客户端的标识信息和一一对应的TCP连接通道进行存储,以便通过所述TCP连接通道进行数据传输。

5.一种计算机可读存储介质,其特征在于,其上存储有TCP接口测试程序,该TCP接口测试程序被处理器执行时实现如权利要求1‑4中任一项所述的TCP接口测试方法。

6.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时,实现如权利要求1‑4中任一项所述的TCP接口测试方法。

7.一种TCP接口测试装置,其特征在于,包括:创建模块,所述创建模块用于根据测试需求创建不同业务处理逻辑的测试类,并根据jmeter取样器Sampler中的java请求格式完成代码编写,以及创建线程组,并在所述线程组中添加取样器java请求;

获取模块,所述获取模块用于获取携带测试信息的接口测试请求,其中,所述测试信息包括测试参数、并发线程数和执行策略,所述测试参数包括服务端的标识信息和对应的客户端的标识信息;

通讯连接模块,所述通讯连接模块用于根据所述测试信息启动所述客户端,以及调用心跳保活以建立所述客户端与所述服务端的长连接;

测试模块,所述测试模块用于将所述测试信息写入java对象,并通过netty封装的TCP协议处理模块根据TCP协议规范将所述测试信息协议编码成编码数据以发送给所述服务端,以便所述服务端对所述编码数据进行解码及相关业务处理,并将处理结果编码成TCP数据包以响应给所述客户端;所述客户端根据TCP协议规范接收所述TCP数据包,并对所述TCP数据包进行解码及相关业务处理以断言响应结果。

8.如权利要求7所述的TCP接口测试装置,其特征在于,采用jmeter GUI工具创建线程组,还在所述线程组中添加测试相关组件,以便测试结束后通过所述测试相关组件对测试结果进行分析。

9.如权利要求7所述的TCP接口测试装置,其特征在于,在根据TCP协议规范对所述测试信息进行协议编码时,根据不同数据类型进行编码,并产生数据安全校验码,以便根据所述数据安全校验码在发送及接收的过程中进行数据安全校验。

10.如权利要求7所述的TCP接口测试装置,其特征在于,在调用心跳保活以建立所述客户端与所述服务端的长连接时,还对所述客户端的标识信息和一一对应的TCP连接通道进行存储,以便通过所述TCP连接通道进行数据传输。

说明书 :

TCP接口测试方法、介质、设备及装置

技术领域

[0001] 本发明涉及测试技术领域,特别涉及一种TCP接口测试方法、一种计算机可读存储介质、一种计算机设备以及一种TCP接口测试装置。

背景技术

[0002] 相关技术中,在对实际各个系统应用中的TCP服务端进行接口测试时,通常采用开源测试工具jmeter针对TCP协议给出TCPClientImpl、BinaryTCPClientImpl或者LengthPr
efixedBinaryTCPClientImpl等取样器用于模拟TCP协议发送和接收TCP字节流数据,但是,
使用的上述取样器要么容易造成TCP粘包,要么最终输出的数据不可读,且均没有TCP连接
保活的功能,从而容易导致接口测试执行失败。

发明内容

[0003] 本申请是基于发明人对以下问题的认识与研究而提出的:
[0004] 现有的TCPClientImpl仅支持输入文本数据;使用该取样器时,将输入的文本数据通过String.getBytes简单编码成字节流A,再在A的后面拼接结束符EOl byte完成TCP组
包,然后发送该数据包;而在读取数据包时,直到碰到结束符EOl byte才会结束,否则的话
一直读到字节流结束,容易造成TCP粘包;该取样器最终输出的是一串可读字符串;然后再
使用jmeter的其它断言模块解析该字符串进行断言,完成一次接口请求测试;
[0005] BinaryTCPClientImpl仅支持输入16进制字符串,并且须指定数据包结束符;使用该取样器时,将输入的16进制字符串编码成字节流A,再在A的后面拼接指定数据包结束符
转成字节流B,完成TCP组包,然后发送该数据包;而在读取数据包时,直到碰到设定结束符
才会结束,否则的话一直读到字节流结束,同样容易造成TCP粘包;该取样器最终输出的是
一串16进制字符串,不可读,还需要进一步解码才能变成可读的字符串;然后再使用jmeter
的其它断言模块解析该字符串进行断言,完成一次接口请求测试;
[0006] LengthPrefixedBinaryTCPClientImpl仅支持输入16进制字符串,但是可以设置数据字节长度Y;使用该取样器时,将输入的16进制字符串编码成字节流A,然后再计算字节
流A的长度X1,将X1转成长度为Y的字节流B,并将B合并在字节流A的前面,完成最终的TCP组
包,将数据包A发送;而在读取数据时,先读取长度为Y的字节流C,解码成整型X2,接下来再
读取的长度为X2的字节流D,然后将字节流D转成16进制字符串;使用该采用器不会发生TCP
粘包,最终输出的是一串16进制字符串,不可读,还需要进一步解码才能变成可读的字符
串;然后再使用jmeter的其它断言模块解析该字符串进行断言,完成一次接口请求测试。
[0007] 然而,现有的TCP服务端与TCP客户端之间,大多采用复杂的协议规范定义TCP组包过程,一般根据实际业务定义传送哪些数据以及这些数据的类型,然后按照一定的顺序排
列这些数据;须严格按照协议规范的这些定义进行编码完成TCP组包;其中数据类型有很多
种,例如long,String,int,byte,BCD,Word,Timestamp等;另外关于接口测试需求方面,在
测试TCP服务端接口时要求覆盖复杂的业务场景,还要能判断响应是否包含了协议规范中
定义必须要有的值,且这些值是否正确;总之要能判断响应是否正常的,如果是则通过测
试,否则就是不能通过测试;使用现有的jmeter中的TCPClientImpl只能使用
String.getBytes进行编码,不能根据具体的数据类型进行编码,故该取样器不适用;而使
用LengthPrefixedBinaryTCPClientImpl时不适用于数据长度定义不在数据包前面的情
况;该取样器输入和输出都是16进制字符串,使用该取样器,依然无法满足覆盖复杂的业务
场景和进行响应断言;最后BinaryTCPClientImpl需要指定数据包结束符,才能正确读取数
据包,但是该数据结束符对于大多数的TCP服务端和客户端TCP协议规范中并没有定义,传
递给TCP服务端的数据包服务端无法解码;若不指定数据包结束符,就会造成TCP粘包;虽然
TCP服务端可以修改代码取消TCP连接保活,不主动断开连接,也可以修改代码取消数据包
校验,但是现有技术依然无法完善的解决TCP粘包问题,无法根据不同的数据类型进行编解
码,无法满足覆盖复杂的业务场景,无法满足进行响应断言的测试要求。
[0008] 本发明旨在至少在一定程度上解决上述技术中的技术问题之一。为此,本发明的一个目的在于提出一种TCP接口测试方法,通过netty封装TCP协议处理模块,按照TCP协议
规范定义的数据组包规则完成协议编解码,实现java对象与TCP字节流之间的转换;TCP协
议处理模块根据数据组包规则按需读取数据包,避免TCP粘包;从而能够保证高效、稳定的
对TCP接口进行测试。
[0009] 本发明的第二个目的在于提出一种计算机可读存储介质。
[0010] 本发明的第三个目的在于提出一种计算机设备。
[0011] 本发明的第四个目的在于提出一种应用服务测试系统。
[0012] 为达到上述目的,本发明第一方面实施例提出了一种TCP接口测试方法,包括以下步骤:根据测试需求创建不同业务处理逻辑的测试类,并根据jmeter取样器Sampler中的
java请求格式完成代码编写,以及创建线程组,并在所述线程组中添加取样器java请求;获
取携带测试信息的接口测试请求,其中,所述测试信息包括测试参数、并发线程数和执行策
略,所述测试参数包括服务端的标识信息和对应的客户端的标识信息;根据所述测试信息
启动所述客户端,以及调用心跳保活以建立所述客户端与所述服务端的长连接;将所述测
试信息写入java对象,并通过netty封装的TCP协议处理模块根据TCP协议规范将所述测试
信息协议编码成编码数据以发送给所述服务端,以便所述服务端对所述编码数据进行解码
及相关业务处理,并将处理结果编码成TCP数据包以响应给所述客户端;所述客户端根据
TCP协议规范接收所述TCP数据包,并对所述TCP数据包进行解码及相关业务处理以断言响
应结果。
[0013] 根据本发明实施例的TCP接口测试方法,首先,根据测试需求创建不同业务处理逻辑的测试类,并根据jmeter取样器Sampler中的java请求格式完成代码编写,以及创建线程
组,并在所述线程组中添加取样器java请求;然后,获取携带测试信息的接口测试请求,其
中,测试信息包括测试参数、并发线程数和执行策略,测试参数包括服务端的标识信息和对
应的客户端的标识信息;接着,根据测试信息启动所述客户端,以及调用心跳保活以建立客
户端与服务端的长连接;最后,将测试信息写入java对象,并通过netty封装的TCP协议处理
模块根据TCP协议规范将测试信息协议编码成编码数据以发送给服务端,以便服务端对编
码数据进行解码及相关业务处理,并将处理结果编码成TCP数据包以响应给客户端,客户端
根据TCP协议规范接收TCP数据包,并对TCP数据包进行解码及相关业务处理以断言响应结
果;由此,通过netty封装TCP协议处理模块,按照TCP协议规范定义的数据组包规则完成协
议编解码,实现java对象与TCP字节流之间的转换;TCP协议处理模块根据数据组包规则按
需读取数据包,避免TCP粘包;从而能够保证高效、稳定的对TCP接口进行测试。
[0014] 另外,根据本发明上述实施例提出的TCP接口测试方法还可以具有如下附加的技术特征:
[0015] 可选地,采用jmeter GUI工具创建线程组,还在所述线程组中添加测试相关组件,以便测试结束后通过所述测试相关组件对测试结果进行分析。
[0016] 可选地,在根据TCP协议规范对所述测试信息进行协议编码时,根据不同数据类型进行编码,并产生数据安全校验码,以便根据所述数据安全校验码在发送及接收的过程中
进行数据安全校验。
[0017] 可选地,在调用心跳保活以建立所述客户端与所述服务端的长连接时,还对所述客户端的标识信息和一一对应的TCP连接通道进行存储,以便通过所述TCP连接通道进行数
据传输。
[0018] 为达到上述目的,本发明第二方面实施例提出了一种计算机可读存储介质,其上存储有TCP接口测试程序,该TCP接口测试程序被处理器执行时实现如上述的TCP接口测试
方法。
[0019] 根据本发明实施例的计算机可读存储介质,通过存储TCP接口测试程序,以使得处理器在执行该TCP接口测试程序时,实现如上述的TCP接口测试方法,从而能够保证高效、稳
定的对TCP接口进行测试。
[0020] 为达到上述目的,本发明第三方面实施例提出了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行
所述程序时,实现如上述的TCP接口测试方法。
[0021] 根据本发明实施例的计算机设备,通过存储器对TCP接口测试程序进行存储,以使得处理器在执行该TCP接口测试程序时,实现如上述的TCP接口测试方法,从而能够保证高
效、稳定的对TCP接口进行测试。
[0022] 为达到上述目的,本发明第四方面实施例提出了一种TCP接口测试装置,包括:创建模块,所述创建模块用于根据测试需求创建不同业务处理逻辑的测试类,并根据jmeter
取样器Sampler中的java请求格式完成代码编写,以及创建线程组,并在所述线程组中添加
取样器java请求;获取模块,所述获取模块用于获取携带测试信息的接口测试请求,其中,
所述测试信息包括测试参数、并发线程数和执行策略,所述测试参数包括服务端的标识信
息和对应的客户端的标识信息;通讯连接模块,所述通讯连接模块用于根据所述测试信息
启动所述客户端,以及调用心跳保活以建立所述客户端与所述服务端的长连接;测试模块,
所述测试模块用于将所述测试信息写入java对象,并通过netty封装的TCP协议处理模块根
据TCP协议规范将所述测试信息协议编码成编码数据以发送给所述服务端,以便所述服务
端对所述编码数据进行解码及相关业务处理,并将处理结果编码成TCP数据包以响应给所
述客户端;所述客户端根据TCP协议规范接收所述TCP数据包,并对所述TCP数据包进行解码
及相关业务处理以断言响应结果。
[0023] 根据本发明实施例的TCP接口测试装置,通过创建模块根据测试需求创建不同业务处理逻辑的测试类,并根据jmeter取样器Sampler中的java请求格式完成代码编写,以及
创建线程组,并在所述线程组中添加取样器java请求;获取模块获取携带测试信息的接口
测试请求,其中,测试信息包括测试参数、并发线程数和执行策略,测试参数包括服务端的
标识信息和对应的客户端的标识信息;通讯连接模块用于根据测试信息启动客户端,以及
调用心跳保活以建立客户端与服务端的长连接;测试模块用于将测试信息写入java对象,
并通过netty封装的TCP协议处理模块根据TCP协议规范将测试信息协议编码成编码数据以
发送给服务端,以便服务端对编码数据进行解码及相关业务处理,并将处理结果编码成TCP
数据包以响应给所述客户端;客户端根据TCP协议规范接收所述TCP数据包,并对TCP数据包
进行解码及相关业务处理以断言响应结果;由此,通过netty封装TCP协议处理模块,按照
TCP协议规范定义的数据组包规则完成协议编解码,实现java对象与TCP字节流之间的转
换;TCP协议处理模块根据数据组包规则按需读取数据包,避免TCP粘包;从而能够保证高
效、稳定的对TCP接口进行测试。
[0024] 另外,根据本发明上述实施例提出的TCP接口测试装置还可以具有如下附加的技术特征:
[0025] 可选地,采用jmeter GUI工具创建线程组,还在所述线程组中添加测试相关组件,以便测试结束后通过所述测试相关组件对测试结果进行分析。
[0026] 可选地,在根据TCP协议规范对所述测试信息进行协议编码时,根据不同数据类型进行编码,并产生数据安全校验码,以便根据所述数据安全校验码在发送及接收的过程中
进行数据安全校验。
[0027] 可选地,在调用心跳保活以建立所述客户端与所述服务端的长连接时,还对所述客户端的标识信息和一一对应的TCP连接通道进行存储,以便通过所述TCP连接通道进行数
据传输。

附图说明

[0028] 图1为根据本发明实施例的TCP接口测试方法的流程示意图;
[0029] 图2为根据本发明一个实施例的TCP接口测试的结构示意图;
[0030] 图3为根据本发明一个实施例的TCP接口测试装置的方框示意图。

具体实施方式

[0031] 下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附
图描述的实施例是示例性的,旨在用于解释本发明,而不能理解为对本发明的限制。
[0032] 为了更好的理解上述技术方案,下面将参照附图更详细地描述本发明的示例性实施例。虽然附图中显示了本发明的示例性实施例,然而应当理解,可以以各种形式实现本发
明而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本
发明,并且能够将本发明的范围完整的传达给本领域的技术人员。
[0033] 为了更好的理解上述技术方案,下面将结合说明书附图以及具体的实施方式对上述技术方案进行详细的说明。
[0034] 图1为根据本发明实施例的应用服务测试方法的流程示意图,如图1所示,该TCP接口测试方法包括以下步骤:
[0035] S101,根据测试需求创建不同业务处理逻辑的测试类,并根据jmeter取样器Sampler中的java请求格式完成代码编写,以及创建线程组,并在所述线程组中添加取样器
java请求。
[0036] 需要说明的是,针对不同的业务之间的逻辑关系创建的测试类可以实现覆盖复杂的业务逻辑,满足了复杂的测试要求,其中,测试类可根据实际业务需要进行创建,例如,业
务处理过程中的规则等。
[0037] 需要说明的是,在创建好测试类后,还将测试类所在的工程通过maven打成jar包,放置在jmeter的lib/ext目录下。
[0038] 作为一个实施例,采用jmeter GUI工具创建线程组,还在线程组中添加测试相关组件,以便测试结束后通过测试相关组件对测试结果进行分析。
[0039] 其中,上述测试相关组件可为聚合报告、查看结果树等。
[0040] S102,获取携带测试信息的接口测试请求,其中,测试信息包括测试参数、并发线程数和执行策略,测试参数包括服务端的标识信息和对应的客户端的标识信息。
[0041] 需要说明的是,上述服务端的标识信息可为TCP服务端地址,客户端的标识信息可为TCP客户端唯一ID。
[0042] S103,根据测试信息启动客户端,以及调用心跳保活以建立客户端与服务端的长连接。
[0043] 需要说明的是,在调用心跳保活以建立客户端与服务端的长连接时,还对客户端的标识信息和一一对应的TCP连接通道进行存储,以便通过TCP连接通道进行数据传输。
[0044] 也就是说,在调用心跳保活以建立客户端与服务端的长连接时,可以通过客户端的标识信息找到对应的TCP连接通道,然后通过TCP连接通道进行数据传输,当长时间运行
测试脚本时,保证TCP连接不会断开,避免造成测试执行失败。
[0045] S104,将测试信息写入java对象,并通过netty封装的TCP协议处理模块根据TCP协议规范将测试信息协议编码成编码数据以发送给服务端,以便服务端对编码数据进行解码
及相关业务处理,并将处理结果编码成TCP数据包以响应给客户端,客户端根据TCP协议规
范接收TCP数据包,并对TCP数据包进行解码及相关业务处理以断言响应结果。
[0046] 作为一个实施例,在根据TCP协议规范对测试信息进行协议编码时,根据不同数据类型进行编码,并产生数据安全校验码,以便根据数据安全校验码在发送及接收的过程中
进行数据安全校验。
[0047] 也就是说,在进行并发TCP请求测试时,结合netty封装的TCP协议处理模块,按照协议规范定义的数据组包规则,根据不同的数据类型实现完成协议编解码,实现java对象
与TCP字节流之间的转换;TCP协议处理模块实现数据包的数据校验码,完成数据安全校验,
防止数据在传输时被篡改,保证数据的完整性;TCP协议处理模块根据数据组包规则按需读
取数据包,解决TCP粘包问题;同时结合jmeter的java请求,并根据各业务场景,抽出关键参
数,作为接口测试输入参数,再根据TCP协议处理模块解码后java对象进行断言,完成接口
功能和/或性能测试。
[0048] 作为一个具体实施例,如图2所示,TCP协议处理模块包括启动TCP客户端、心跳保活、报文发送控制器、协议编码器、发送模块、TCP服务端、接收模块、协议解码器、接收业务
处理模块、本地缓存;在TCP服务端的接口测试中,TCP协议处理模块首先,启动TCP客户端,
建立TCP客户端与TCP服务端的通讯连接,并调用心跳保活维护TCP客户端与TCP服务端的长
连接;并将TCP客户端唯一Id与TCP连接通道存入本地缓存中;在心跳保活模块中,启动一个
定时任务,按照设置的心跳保活间隔,调用报文发送控制器发送协议规范定义保活数据包,
维持TCP客户端与TCP服务端的长连接;若心跳保活失败,不会进行重连,抛出异常,断言本
次测试结论为不通过;然后,通过报文发送控制器接收请求体,即java对象根据请求体中的
TCP终端唯一ID从本地缓存中获取TCP的连接通道;将TCP连接通道和数据请求体发送给协
议编码器;同时监听本地缓存中的是否有收到本次请求的响应;接着,协议编码器会根据
TCP协议规范完成协议编码,实现数据安全校验码,一并转成字节流,完成TCP组包,传递到
发送模块;再接着,发送模块将报文发送到TCP服务端,TCP服务端收到请求后,先提取数据
安全校验码进行数据包校验,校验通过后再解码进行业务处理,并将处理结果编码成TCP数
据包响应给TCP客户端;再然后,接收模块接收TCP服务端下发的数据包,根据协议规范定义
实现按需接收数据包数据,并传递给协议解码器;最后,协议解码器收到一串字节流后先校
验数据安全验证码,检验通过后根据TCP协议规范进行解码,解码后传递给接收业务处理模
块,业务处理根据解析结果进行业务处理,若是响应类型的数据包则将解析结果Java对象
存入本地缓存;若数据安全验证码检验不通过,则丢弃本次接收到的数据包;报文发送控制
器在发送请求后一直监听本地缓存,在超时时间内确认是否收到响应,确认收到后返回给
请求者。
[0049] 综上所述,根据本发明实施例的TCP接口测试方法,首先,根据测试需求创建不同业务处理逻辑的测试类,并根据jmeter取样器Sampler中的java请求格式完成代码编写,以
及创建线程组,并在所述线程组中添加取样器java请求;然后,获取携带测试信息的接口测
试请求,其中,测试信息包括测试参数、并发线程数和执行策略,测试参数包括服务端的标
识信息和对应的客户端的标识信息;接着,根据测试信息启动所述客户端,以及调用心跳保
活以建立客户端与服务端的长连接;最后,将测试信息写入java对象,并通过netty封装的
TCP协议处理模块根据TCP协议规范将测试信息协议编码成编码数据以发送给服务端,以便
服务端对编码数据进行解码及相关业务处理,并将处理结果编码成TCP数据包以响应给客
户端,客户端根据TCP协议规范接收TCP数据包,并对TCP数据包进行解码及相关业务处理以
断言响应结果;由此,通过netty封装TCP协议处理模块,按照TCP协议规范定义的数据组包
规则完成协议编解码,实现java对象与TCP字节流之间的转换;TCP协议处理模块根据数据
组包规则按需读取数据包,避免TCP粘包;从而能够保证高效、稳定的对TCP接口进行测试。
[0050] 具体地,如图2所示,本发明的TCP接口测试方法首先针对不同的业务之间的逻辑关系,创建测试类,根据java请求格式编码;从而实现覆盖复杂的业务逻辑;然后将测试类
所在的工程通过maven打成jar包,放置在jmeter的lib/ext目录下,然后通过jmeter GUI工
具创建线程组,在线程组中添加java请求以及其它测试相关的组件,例如聚合报告,查看结
果树等;在java请求中选择测试类,GUI界面显示输入参数;填写参数,设置并发线程数以及
执行策略;然后运行脚本,开始测试;进入启动线程setupTest阶段,在该阶段先获取输入参
数,例如TCP服务端地址,TCP客户端唯一Id等;启动TCP客户端,建立与TCP服务端的连接;线
程启动完毕后,进入runTest阶段,在该阶段完成并发TCP请求测试:首先获取输入参数,将
参数写入java对象,在调用TCP协议处理模块中的报文发送控制器,完成发送并接收响应结
果,根据实际业务测试场景,断言响应结果,给出单次测试结论,然后jmeter工具会进行统
计;并发测试完成后,进入结束线程teardownTest阶段,在该阶段是测试结束要做的工作,
会结束每个终端设备的保活进程,关闭TCP长连接;结束测试,整理jmeter工具提供的测试
报告,完成测试。
[0051] 综上所述,本发明实施例的TCP接口测试方法,根据不同的业务处理逻辑关系,针对性的创建测试类,有效的满足了复杂业务测试要求;在启动线程runTest阶段,调用了心
跳保活模块,保持了TCP客户端与TCP服务端之间的TCP长连接;TCP协议处理模块中的协议
编码器,实现按照不同数据类型进行编码,统一增加了数据包安全校验码,传递给TCP服务
端时才能通过安全验证,同时协议解码器会对TCP下发的数据包做安全校验,同时验证了服
务端的生成的安全验证码是否有效;TCP协议处理模块中接收模块,接收TCP服务端下发的
数据包,根据协议规范定义的按需接收数据包数据,有效地避免了TCP粘包;TCP协议处理模
块中的协议解码器,将字节流转成可读的java对象,通过解析后的结果,就可以对其根据实
际业务逻辑做复杂的断言,满足能进行响应断言的测试要求。
[0052] 为了实现上述实施例,本发明实施例提出了一种计算机可读存储介质,其上存储有TCP接口测试程序,该TCP接口测试程序被处理器执行时实现如上述的TCP接口测试方法。
[0053] 根据本发明实施例的计算机可读存储介质,通过存储TCP接口测试程序,以使得处理器在执行该TCP接口测试程序时,实现如上述的TCP接口测试方法,从而能够保证高效、稳
定的对TCP接口进行测试。
[0054] 为了实现上述实施例,本发明实施例提出了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述
程序时,实现如上述的TCP接口测试方法。
[0055] 根据本发明实施例的计算机设备,通过存储器对TCP接口测试程序进行存储,以使得处理器在执行该TCP接口测试程序时,实现如上述的TCP接口测试方法,从而能够保证高
效、稳定的对TCP接口进行测试。
[0056] 为了实现上述实施例,本发明实施例提出了一种TCP接口测试装置,如图3所示,该TCP接口测试装置包括:创建模块10、获取模块20、通讯连接模块30和测试模块40。
[0057] 其中,创建模块10用于根据测试需求创建不同业务处理逻辑的测试类,并根据jmeter取样器Sampler中的java请求格式完成代码编写,以及创建线程组,并在所述线程组
中添加取样器java请求;获取模块20用于获取携带测试信息的接口测试请求,其中,测试信
息包括测试参数、并发线程数和执行策略,测试参数包括服务端的标识信息和对应的客户
端的标识信息;通讯连接模块30用于根据测试信息启动客户端,以及调用心跳保活以建立
客户端与服务端的长连接;测试模块40用于将测试信息写入java对象,并通过netty封装的
TCP协议处理模块根据TCP协议规范将测试信息协议编码成编码数据以发送给服务端,以便
服务端对编码数据进行解码及相关业务处理,并将处理结果编码成TCP数据包以响应给客
户端;客户端根据TCP协议规范接收TCP数据包,并对TCP数据包进行解码及相关业务处理以
断言响应结果。
[0058] 在一些实施例中,采用jmeter GUI工具创建线程组,还在线程组中添加测试相关组件,以便测试结束后通过测试相关组件对测试结果进行分析。
[0059] 在一些实施例中,在根据TCP协议规范对测试信息进行协议编码时,根据不同数据类型进行编码,并产生数据安全校验码,以便根据数据安全校验码在发送及接收的过程中
进行数据安全校验。
[0060] 在一些实施例中,在调用心跳保活以建立客户端与服务端的长连接时,还对客户端的标识信息和一一对应的TCP连接通道进行存储,以便通过TCP连接通道进行数据传输。
[0061] 需要说明的是,上述关于图1中TCP接口测试方法的描述同样适用于该TCP接口测试装置,在此不做赘述。
[0062] 综上所述,根据本发明实施例的TCP接口测试装置,通过创建模块根据测试需求创建不同业务处理逻辑的测试类,并根据jmeter取样器Sampler中的java请求格式完成代码
编写,以及创建线程组,并在所述线程组中添加取样器java请求;获取模块获取携带测试信
息的接口测试请求,其中,测试信息包括测试参数、并发线程数和执行策略,测试参数包括
服务端的标识信息和对应的客户端的标识信息;通讯连接模块用于根据测试信息启动客户
端,以及调用心跳保活以建立客户端与服务端的长连接;测试模块用于将测试信息写入
java对象,并通过netty封装的TCP协议处理模块根据TCP协议规范将测试信息协议编码成
编码数据以发送给服务端,以便服务端对编码数据进行解码及相关业务处理,并将处理结
果编码成TCP数据包以响应给所述客户端;客户端根据TCP协议规范接收所述TCP数据包,并
对TCP数据包进行解码及相关业务处理以断言响应结果;由此,通过netty封装TCP协议处理
模块,按照TCP协议规范定义的数据组包规则完成协议编解码,实现java对象与TCP字节流
之间的转换;TCP协议处理模块根据数据组包规则按需读取数据包,避免TCP粘包;从而能够
保证高效、稳定的对TCP接口进行测试。
[0063] 本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实
施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机
可用存储介质(包括但不限于磁盘存储器、CD‑ROM、光学存储器等)上实施的计算机程序产
品的形式。
[0064] 本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流
程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序
指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产
生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实
现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0065] 这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指
令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或
多个方框中指定的功能。
[0066] 这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或
其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一
个方框或多个方框中指定的功能的步骤。
[0067] 应当注意的是,在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的部件或步骤。位于部件之前的
单词“一”或“一个”不排除存在多个这样的部件。本发明可以借助于包括有若干不同部件的
硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装
置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不
表示任何顺序。可将这些单词解释为名称。
[0068] 尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优
选实施例以及落入本发明范围的所有变更和修改。
[0069] 显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围
之内,则本发明也意图包含这些改动和变型在内。
[0070] 在本发明的描述中,需要理解的是,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第
一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。在本发明的描述中,
“多个”的含义是两个或两个以上,除非另有明确具体的限定。
[0071] 在本发明中,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”、“固定”等术语应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或成一体;可以是机械连
接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内
部的连通或两个元件的相互作用关系。对于本领域的普通技术人员而言,可以根据具体情
况理解上述术语在本发明中的具体含义。
[0072] 在本发明中,除非另有明确的规定和限定,第一特征在第二特征“上”或“下”可以是第一和第二特征直接接触,或第一和第二特征通过中间媒介间接接触。而且,第一特征在
第二特征“之上”、“上方”和“上面”可是第一特征在第二特征正上方或斜上方,或仅仅表示
第一特征水平高度高于第二特征。第一特征在第二特征“之下”、“下方”和“下面”可以是第
一特征在第二特征正下方或斜下方,或仅仅表示第一特征水平高度小于第二特征。
[0073] 在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特
点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不
应理解为必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点
可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本
领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特
征进行结合和组合。
[0074] 尽管上面已经示出和描述了本发明的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在本发明的范围内可以对上述
实施例进行变化、修改、替换和变型。