接口测试方法、装置、终端及计算机可读存储介质
本申请要求于2019年06月19日提交中国专利局、申请号为201910533693.3、发明名称为“接口测试方法、装置、终端及计算机可读存储介质”的中国专利申请的优先权,其全部内容通过引用结合在申请中。
技术领域
本申请涉及接口测试技术领域,尤其涉及一种接口测试方法、装置、终端及计算机可读存储介质。
背景技术
为了知道应用程序的接口收发数据是否正常,需要对应用程序的接口收发的指令进行测试验证,传统的测试验证方式是客户端发送请求指令到服务端,接收服务端返回的消息指令,再根据该消息指令确定测试成功与否,而基于长连接消息协议的接口的数据收发原理是,服务端主动发送消息指令到客户端,客户端根据接收到的发送消息指令做进一步的数据处理,因此,以前的接口测试方法不再适用。
因此,如何实现基于长连接消息协议的接口测试是一种亟待解决的问题。
发明内容
本申请的主要目的在于提供一种接口测试方法、装置、终端及计算机可读存储介质,旨在解决如何实现基于长连接消息协议的接口测试的技术问题。
为实现上述目的,本申请提供一种接口测试方法,所述接口测试方法包括:
接口测试方法,其中,所述接口测试方法包括:
获取在客户端的应用程序接口中进行传输的消息指令的数据包;
对所述数据包进行解析获得数据包中所有消息指令的指令头文;
根据消息指令的指令头文在参数化指令集合中进行匹配查找;
获取参数化指令集合中指令头文与消息指令的指令头文相同的参数化指令,并将所述消息指令与所述参数化指令进行对应关联;
获取所述参数化指令的字段类型以及字段长度;
根据所述字段类型将对应的消息指令转换成对应的字段类型;
根据所述字段长度将转换后的消息指令设置为对应的长度,得到可视化的字符串,并将所述可视化的字符串显示于终端界面;
将所述可视化的字符串与所述参数化指令对应的预设的标准字符串进行对比;
若所述可视化的字符串中存在与所述标准字符串不同的字符串,则将所述不同的字符串进行突出显示。
另外,本申请还提供一种接口测试装置,所述接口测试装置包括:
获取模块,所述获取模块用于获取在客户端的应用程序接口中进行传输的消息指令的数据包;
查找模块,所述查找模块用于根据所述数据包在预设的参数化指令集合中进行查找,获得对应的参数化指令;
转换模块,所述转换模块用于根据所述参数化指令对数据包中对应的消息指令进行转换得到可视化的字符串,并将所述可视化的字符串显示于终端界面;
对比模块,所述对比模块用于将所述可视化的字符串与所述参数化指令对应的预设的标准字符串进行对比;
突出模块,所述突出模块用于若所述可视化的字符串中存在与所述标准字符串不同的字符串,则将所述不同的字符串进行突出显示。
本申请还提供一种终端,包括处理器、存储器、以及存储在所述存储器上的可被所述处理器执行的计算机可读指令,其中,所述计算机可读指令被所述处理器执行时,实现如上所述的接口测试方法的步骤。
本申请还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机可读指令,其中,所述计算机可读指令被处理器执行时,实现如上所述的接口测试方法的步骤。
本申请技术方案中,获取在客户端的应用程序接口中进行传输的消息指令的数据包;根据数据包在预设的参数化指令集合中进行查找,获得对应的参数化指令;根据参数化指令对数据包中对应的消息指令进行转换得到可视化的字符串,并将可视化的字符串显示于终端界面;将可视化的字符串与参数化指令对应的预设的标准字符串进行对比;若可视化的字符串中存在与标准字符串不同的字符串,则将不同的字符串进行突出显示。本申请提出的技术方案基于可视化对消息指令进行转换,利用参数化指令将客户端的应用程序接口传输的消息指令转换为可视化的字符串,并显示于终端界面,以方便测试人员对字符串进行直观验证,再将可视化的字符串与标准字符串自动进行分别对比,将与标准字符串不同的字符串进行突出显示。因此,本申请可以对基于长连接消息协议传输的消息指令直接进行可视化验证,缩短开发修复问题的时间,提升测试验证的效率和质量。
附图说明
图1为本申请实施例方案中涉及的终端的硬件结构示意图;
图2为本申请接口测试方法第一实施例的流程示意图;
图3为本申请实施例中据所述数据包在预设的参数化指令集合中进行查找,获得对应的参数化指令的步骤的流程细化示意图;
图4为本申请实施例中根据所述参数化指令对数据包中对应的消息指令进行转换得到可视化的字符串,并将所述可视化的字符串显示于终端界面的步骤的流程细化示意图;
图5为本申请接口测试装置的模块示意图。
本申请目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本申请实施例涉及的接口测试方法主要应用于终端,该终端可以是PC、便携计算机、移动终端等具有显示和处理功能的设备。
参照图1,图1为本申请实施例方案中涉及的终端结构示意图。本申请实施例中,终端可以包括处理器1001(例如CPU),通信总线1002,用户接口1003,网络接口1004,存储器1005。其中,通信总线1002用于实现这些组件之间的连接通信;用户接口1003可以包括显示屏(Display)、输入单元比如键盘(Keyboard);网络接口1004可选的可以包括标准的有线接口、无线接口(如WI-FI接口);存储器1005可以是高速RAM存储器,也可以是稳定的存储器(non-volatile
memory),例如磁盘存储器,存储器1005可选的还可以是独立于前述处理器1001的存储装置。
本领域技术人员可以理解,图1中示出的硬件结构并不构成对设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
继续参照图1,图1中作为一种计算机可读存储介质的存储器1005可以包括操作系统、网络通信模块以及计算机可读指令。
在图1中,网络通信模块主要用于连接服务器,与服务器进行数据通信;而处理器1001可以调用存储器1005中存储的计算机可读指令,并执行接口测试方法的步骤。
基于上述终端的硬件结构,提出本申请接口测试方法的各个实施例。
本申请提供一种接口测试方法。
请参阅图2,在本申请第一实施例中,接口测试方法包括以下步骤:
步骤S100,获取在客户端的应用程序接口中进行传输的消息指令的数据包;
可选地,本实施例中,应用程序(如,聊天程序)基于socket协议与服务端建立长连接,来实现某些功能。服务端不间断的发送各种消息指令给客户端,客户端的应用程序在运行过程汇中不间断返回各种消息指令给服务端。终端在应用程序的运行过程中,抓取在应用程序与服务端之间交互的所有的消息指令的数据包,即,获取获取在应用程序的接口中进行传输的消息指令的数据包。本实施例中,无需模拟客户端环境,可以在客户端的应用程序运行过程中直接对传输中的数据进行抓取,不影响客户端的使用,也无需关闭客户端的应用程序,从而摆脱对客户端的依赖。
其中,需要说明的是,一个数据包可能包含有一个或多个消息指令,每个消息指令中均有一个指令头文(指令Key),指令Key中包含有“cmd”和“para”,例如,某一指令的指令头文为“cmd=2,para=4”,指令Key用以对下文中的参数化指令进行匹配查找。
步骤S200,根据所述数据包在预设的参数化指令集合中进行查找,获得对应的参数化指令;
在获取到消息指令的数据包后,根据该数据包在预设的参数化指令集合中进行匹配查找,将与数据包中的消息指令对应匹配的参数化指令查找出来,用以将对应的消息指令转换。需要说明的是,预设的参数化指令集合中包含有多个参数化指令,将用以开发的原始指令代码进行转换得到的可扩展标记语言格式的参数化指令,将多有的参数指令集合在一起形成参数化指令集合。
可选地,请参照图3,图3为本申请实施例中据所述数据包在预设的参数化指令集合中进行查找,获得对应的参数化指令的步骤的流程细化示意图,基于上述实施例,步骤S200包括:
步骤S210,对所述数据包进行解析获得数据包中所有消息指令的指令头文;
可选地,在获取到终端与服务端进行交互的数据包后,对数据包进行解析,获取数据包中的所有的消息指令,再获取所有的消息指令的指令key,将消息指令的指令key称为第一指令头文。
步骤S220,根据消息指令的指令头文在参数化指令集合中进行匹配查找;
可选地,在获取到消息指令的指令后名称后,根据消息指令的指令头文在参数化指令集合中进行匹配查找,即,遍历参数化指令集合中的所有的参数化指令,将消息指令的指令头文与参数化指令的指令头文一一对比,查找与消息指令的指令头文相同的参数化指令的指令头文。
步骤S230,获取参数化指令集合中指令头文与消息指令的指令头文相同的参数化指令,并将所述消息指令与所述参数化指令进行对应关联。
可选地,在对参数化指令集合中的参数化指令进行一一查找匹配后,获取参数化指令集合合中指令头文与消息指令的指令头文相同的参数化指令,再将查找到的指令头文一致的消息指令与参数化指令进行对应关联。
步骤S300,根据所述参数化指令对数据包中对应的消息指令进行转换得到可视化的字符串,并将所述可视化的字符串显示于终端界面;
在获取到与消息指令对应的参数化指令后,根据该参数化指令对数据包中对应的消息指令进行转换,得到可视化的字符串,在得到可视化的字符串后,将可视化的字符串显示于终端界面,以供测试人员对字符串进行测试验证。
可选地,请参照图4,图4为本申请实施例中根据所述参数化指令对数据包中对应的消息指令进行转换得到可视化的字符串,并将所述可视化的字符串显示于终端界面的步骤的流程细化示意图,基于上述实施例,步骤S300包括:
步骤S310,获取所述参数化指令的字段类型以及字段长度;
参数化指令中定义有字段类型和字段长度,其中,参数化指令中,field表示定义结构体中的字段;当field的属性为type时,表示字段类型,字段类型包括ushort、uint、byte、string等类型,当字段类型为以符号“:”开头时,表明该字段类型也是一个结构体;field的属性为length时,表示字段的长度,字段的长度可以直接以数值定义长度,也可以符合“:”开头,一般以“:size”形式,size是指向当前结构体的字段size所定义的长度。在需要根据参数化指令对消息指令进行转换时,可以获取参数化指令的字段类型以及字段长度。
步骤S320,根据所述字段类型将对应的消息指令转换成对应的字段类型;
可选地,在获取到参数化指令中的字段类型和字段长度后,根据获取的字段类型将数据包中的消息指令转换缓冲能对应的字段类型,例如,当字段类型为I型时,将消息指令也转换成I型。
步骤S330,根据所述字段长度将转换后的消息指令设置为对应的长度,得到可视化的字符串,并将所述可视化的字符串显示于终端界面。
可选地,在将消息指令转换成对应的字段类型后,根据获取的字段长度将转换后的消息指令设置成对应的长度,得到可视化的字符串,并将可视化的字符串显示于终端界面,以供测试人员进行直观验证。
步骤S400,将所述可视化的字符串与所述参数化指令对应的预设的标准字符串进行对比;
可选地,每一个传输的消息指令都会对应有一个预期的响应,因此,在终端中可以预设与参数化消息指令对应的标准字符串,在获得可视化的字符串后,将可视化的字符串与参数化指令对应的预设的标准字符串进行对比,查找可视化字符串中是否存在与标准字符串不同的字符串,以测试接口对应功能的实现正确与否。
步骤S500,若所述可视化的字符串中存在与所述标准字符串不同的字符串,则将所述不同的字符串进行突出显示。
如果可视化的字符串中存在与标准字符串不同的字符串,则可以对该不同的字符串进行突出显示,例如,可以对该不同的字符串进行标红显示或加粗显示等,以提示测试人员存在该不同的字符串,即,接口传输的消息指令存在问题。如果可视化的字符串中不存在与标准字符串不同的字符串,则不对显示于终端界面的可视化字符串进行特殊处理。
本申请技术方案中,获取在客户端的应用程序接口中进行传输的消息指令的数据包;根据数据包在预设的参数化指令集合中进行查找,获得对应的参数化指令;根据参数化指令对数据包中对应的消息指令进行转换得到可视化的字符串并将可视化的字符串显示于终端界面;将可视化的字符串与参数化指令对应的预设的标准字符串进行对比;若可视化的字符串中存在与标准字符串不同的字符串,则将不同的字符串进行突出显示。本申请提出的技术方案基于可视化对消息指令进行转换,利用参数化指令将客户端的应用程序接口传输的消息指令转换为可视化的字符串,并显示于终端界面,以方便测试人员对字符串进行直观验证,再将可视化的字符串与标准字符串自动进行分别对比,将与标准字符串不同的字符串进行突出显示。因此,本申请可以对基于长连接消息协议传输的消息指令直接进行可视化验证,缩短开发修复问题的时间,提升测试验证的效率和质量。
进一步地,在本申请接口测试方法第二实施例中,基于第一实施例,步骤S500之后,还包括:
步骤S600,获取终端预设的配置文件;
可选地,如果可视化的字符串存在存在与标准字符串不同的字符串,那么,说明需要测试人员进行开发修复,因此,可以获得终端中预设的配置文件,对配置文件进行解析可以获得对应的发送方式以及修复人员。其中,发送方式可以包括邮件发送、短信发送等。
步骤S700,将所述不同的字符串以及与所述不同的字符串对应的消息指令以所述配置文件对应的发送方式发送至修复人员。
在获取到发送方式后,将不同的字符串以及与不同的字符串对应的消息指令以以配置文件对应的发送方式发送至修复人员,修复人员可以直接定位到哪些指令存在问题,直接找到存在问题的字符串对应的指令,从而提高测试验证定位问题的精度,从而缩短开发修复的时间。
进一步地,在本申请接口测试方法第三实施例中,基于第一实施例,步骤S100之前,还包括:
步骤S110,接收测试人员输入的将应用程序的代码进行参数化的转换命令;
在需要对客户端的应用程序接口传输的数据进行测试验证之前,可以先对用于开发该应用程序的原始的指令代码进行格式的转换。可选地,在需要对某一应用程序进行测试验证时,终端可以接收测试人员输入将应用程序的代码进行参数化的转换命令。
步骤S120,根据所述转换命令获取预设的规范协议以及所述应用程序的开发指令代码集合;
在获取到将应用程序的代码进行参数化的转换命令,根据该转换命令获取预设的规范协议以及该应用程序的开发指令代码集合。其中,预设的规范协议可以包括标准协议和自定义的规范协议,标准协议可以为报文协议等,自定义的规范协议由用户根据实际需求定义。应用程序的开发指令代码集合是基于socket协议的指令码样式,用以对应用程序进行开发。
步骤S130,根据所述规范协议识将所述开发指令代码集合中的指令代码转换成可扩展标记语言格式的参数化指令,形成参数化指令集合。
在获取到规范协议后,根据规范协议识别出开发指令代码集合中指令代码的指令头文(cmd和para)、字段类型以及字段长度;生成包括指令头文(cmd
和para)、字段类型以及字段长度的可扩展标记语言格式(XML格式)的参数化指令,形成参数化指令集合。
可选地,基于第三实施例,步骤S130包括:
步骤S131,判断所述开发指令代码集合中是否存在字段类型中具有结构体的指令代码;
可选地,在获取到开发指令代码后,判断获取到的开发指令代码集合中是否存在字段类型中具有结构体的指令代码,即,当字段类型为以符号“:”开头时,表明该字段类型是一个结构体,例如,<feild
type=":stMQ[]" length=":size_" name="list_"/>,stMQ[]是子结构体。
步骤S132,若所述开发指令代码集合中存在字段类型中具有结构体的指令代码,则根据所述规范协议将所述开发指令代码集合中的指令代码转换成可扩展标记语言格式的参数化指令,并在具有结构体的指令代码转换成的参数化指令中进行自定义,再形成参数化指令集合;
可选地,如果在开发指令代码集中存在字段类型中具有结构体的指令代码,则根据规范协议将开发指令代码集中的指令代码转换成可扩展标记语言格式的参数化指令后,需要在字段类型中具有结构体的指令代码转换成的参数化指令中进行自定义,以形成规范的参数化指令,自定义参数化指令后再将所有的参数化指令汇总在一起形成参数化指令集合。如果在开发指令代码集合中不存在字段类型中具有结构体的指令代码,则直接根据规范协议将开发指令代码集合中的指令代码转换成可扩展标记语言格式的参数化指令,形成参数化指令集合即可。
例如,当开发指令代码为:
cmd=2 para=14,
{ public struct stRoomResMicQueue
public ushort cmd;
public ushort para;
public uint room_id_;
public ushort size_;
public stMQ[] list_;
}
{ public struct stMQ
Public byte index;//麦序
Public uint userid;//用户
}
转换成的参数化指令为:
<struct cmd="2" para="14" name="stRoomResMicQueue"
description="返回房间麦序列表">
<feild type="ushort" name="cmd"/>
<feild type="ushort" name="para"/>
<feild type="uint" name="room_id_"/>
<feild type="ushort" name="size_"/>
<feild type=":stMQ[]" length=":size_"
name="list_"/>
</struct>
</struct>
<struct cmd="-999" para="-999" name="stMQ"
description="">
<feild type="byte" name="index"/>
<feild type="uint" name="userid"/>
</struct>
其中,struct为定义结构体;struct中的属性cmd
para是指令的唯一key;structt中的属性description是指令的描述。field的属性name是指字段的名称。开发指令代码的字段类型中具有结构体stMQ[],在转换成的参数化指令中自定义cmd="-999"
para="-999"。
进一步地,在本申请接口测试方法第四实施例中,基于第一实施例,步骤S100之前还包括:,
步骤S140,接收测试人员输入的启动指令;
当测试人员需要对客户端的某一应用程序的接口进行测试时,需要向终端输入开启对该应用程序的接口进行监听的启动指令,终端将接收到测试人员输入的启动指令。
步骤S150,根据所述启动指令调用对应的测试脚本;
在终端中将预先存储有测试人员撰写的测试脚本,终端可以通过该测试脚本在应用程序的接口中传输的指令进行监听。可选地,终端在接收到启动指令后,在后台调取对应的测试脚本。
步骤S160,根据所述测试脚本对应用程序接口进行实时监听。
可选地,根据调取的测试脚本对应用应用程序接口进行实时监听,以直接实时抓取到应用程序与服务端之间交互的所有的消息指令的数据包,不会影响到客户端中应用程序的使用。
此外,请参照图5,本申请还提供一种接口测试装置10,所述接口测试装置10包括:
获取模块20,所述获取模块用于获取在客户端的应用程序接口中进行传输的消息指令的数据包;
查找模块30,所述查找模块用于根据所述数据包在预设的参数化指令集合中进行查找,获得对应的参数化指令;
转换模块40,所述转换模块用于根据所述参数化指令对数据包中对应的消息指令进行转换得到可视化的字符串,并将所述可视化的字符串显示于终端界面;
对比模块50,所述对比模块用于将所述可视化的字符串与所述参数化指令对应的预设的标准字符串进行对比;
突出模块60,所述突出模块用于若所述可视化的字符串中存在与所述标准字符串不同的字符串,则将所述不同的字符串进行突出显示。
进一步地,所述查找模块30还用于:
对所述数据包进行解析获得数据包中所有消息指令的指令头文;
根据消息指令的指令头文在参数化指令集合中进行匹配查找;
获取参数化指令集合中指令头文与消息指令的指令头文相同的参数化指令,并将所述消息指令与所述参数化指令进行对应关联。
进一步地,所述转换模块40还用于:
获取所述参数化指令的字段类型以及字段长度;
根据所述字段类型将对应的消息指令转换成对应的字段类型;
根据所述字段长度将转换后的消息指令设置为对应的长度,得到可视化的字符串,并将所述可视化的字符串显示于终端界面。
进一步地,所述接口测试装置10还包括:
所述获取模块还用于获取终端预设的配置文件;
发送模块,所述发送模块用于将所述不同的字符串以及与所述不同的字符串对应的消息指令以所述配置文件对应的发送方式发送至修复人员。
进一步地,所述接口测试装置10还包括:
第一接收模块,所述第一接收模块用于接收测试人员输入的将应用程序的代码进行参数化的转换命令;
所述获取模块还用于根据所述转换命令获取预设的规范协议以及所述应用程序的开发指令代码集合;
所述转换模块还用于根据所述规范协议将所述开发指令代码集合中的指令代码转换成可扩展标记语言格式的参数化指令,形成参数化指令集合。
进一步地,所述接口测试装置10还包括:
判断模块,所述判断模块用于判断所述开发指令代码集合中是否存在字段类型中具有结构体的指令代码;
所述转换模块还用于若所述开发指令代码集合中存在字段类型中具有结构体的指令代码,则根据所述规范协议将所述开发指令代码集合中的指令代码转换成可扩展标记语言格式的参数化指令,并在具有结构体的指令代码转换成的参数化指令中进行自定义,再形成参数化指令集合。
进一步地,所述接口测试装置10还包括:
第二接收模块,所述第二接收模块用于接收测试人员输入的启动指令;
调用模块,所述调用模块用于根据所述启动指令调用对应的测试脚本;
监听模块,所述监听模块用于根据所述测试脚本对应用程序接口进行实时监听。
其中,上述接口测试装置10中各个模块与上述接口测试方法实施例中各步骤相对应,其功能和实现过程在此处不再一一赘述。
此外,本申请还提供一种计算机可读存储介质,计算机可读存储介质可以为非易失性可读存储介质。本申请计算机可读存储介质上存储有计算机可读指令,其中,计算机可读指令被处理器执行时,实现如上述的接口测试方法的步骤。其中,计算机可读指令被执行时所实现的方法可参照本申请接口测试方法的各个实施例,此处不再赘述。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
应当注意的是,在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的部件或步骤。位于部件之前的单词“一”或“一个”不排除存在多个这样的部件。本申请可以借助于包括有若干不同部件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。
尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。
以上所述仅为本申请的优选实施例,并非因此限制本申请的专利范围,凡是在本申请的发明构思下,利用本申请说明书及附图内容所作的等效结构变换,或直接/间接运用在其他相关的技术领域均包括在本申请的专利保护范围内。