CN105446867A - 一种测试数据的生成方法及装置 - Google Patents

一种测试数据的生成方法及装置 Download PDF

Info

Publication number
CN105446867A
CN105446867A CN201410419779.0A CN201410419779A CN105446867A CN 105446867 A CN105446867 A CN 105446867A CN 201410419779 A CN201410419779 A CN 201410419779A CN 105446867 A CN105446867 A CN 105446867A
Authority
CN
China
Prior art keywords
request message
service side
data
record
called
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.)
Granted
Application number
CN201410419779.0A
Other languages
English (en)
Other versions
CN105446867B (zh
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.)
Advanced New Technologies Co Ltd
Advantageous New Technologies Co Ltd
Original Assignee
Alibaba Group Holding 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 Alibaba Group Holding Ltd filed Critical Alibaba Group Holding Ltd
Priority to CN201410419779.0A priority Critical patent/CN105446867B/zh
Publication of CN105446867A publication Critical patent/CN105446867A/zh
Application granted granted Critical
Publication of CN105446867B publication Critical patent/CN105446867B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Debugging And Monitoring (AREA)
  • Stored Programmes (AREA)

Abstract

本申请公开了一种计算机技术,特别涉及一种测试数据的生成方法及装置,用以提高测试结果的有效性。该方法为:在数据传输过程中对传输数据进行二进制数据记录,再对记录的二进制数据进行反序列化操作,获得代码要素信息,以及基于代码要素信息生成所需的测试代码,这样,可以基于真实的接口应用环境生成相应的测试代码,从而有效提高了测试代码的生成效率,提升了测试结果的有效性和准确性,同时也大大节省了测试代码的开发和维护成本。进一步地,本申请实施例的通用性极高,适用于各种协议接口,且操作简单,不需要开发人员具有多年的开发经验,从而进一降低了其扩展成本。

Description

一种测试数据的生成方法及装置
技术领域
本申请涉及计算机技术,特别涉及一种测试数据的生成方法及装置。
背景技术
在计算机程序开发及维护过程中,开发人员通常需要编写大量的测试用例对接口调用进行检测。而在编写测试用例的过程中,开发人员往往需要自己构造所需测试数据。此种方法过多的依赖于开发人员的经验,常常会出现数据错误(如,缺少必要参数),从而导致接口调用测试中断,需要反复调试才能成功,导致时间花费巨大。
而实际应用中,即使测试过程顺利完成,开发人员构造的测试数据和真实调用过程中的数据是否一致也是个未知数,使得测试结果的有效性降低。
以上情况在接口入参复杂的情况下,弊端尤为突出。
发明内容
本申请实施例提供一种测试数据的生成方法及装置,用以提高测试结果的有效性。
本申请实施例提供的具体技术方案如下:
一种测试数据的生成方法,包括:
接收调用方发送的请求消息,进行数据记录后发往服务方,以及接收服务器返回的响应消息,进行数据记录后发往调用方;
对记录的数据进行反序列化处理,获得代码要素信息;
基于获得的代码要素信息生成相应的测试代码。
这样,可以基于真实的接口应用环境生成相应的测试代码,从而有效提高了测试代码的生成效率,提升了测试结果的有效性和准确性,同时也大大节省了测试代码的开发和维护成本。进一步地,本申请实施例的通用性极高,适用于各种协议接口,且操作简单,不需要开发人员具有多年的开发经验,从而进一降低了其扩展成本。
可选的,接收调用方发送的请求消息,进行数据记录后发往服务方,以及接收服务器返回的响应消息,进行数据记录后发往调用方,包括:
当接收到调用方发送的请求消息时,读取所述请求消息中的指定字段,根据所述指定字段的解析结果判定请求消息的类型,并获取服务方的***域名;
若所述请求消息为获取get请求消息,则开始记录get请求消息中的二进制数据,在记录完毕后,根据服务方的***域名开启本地至服务方的连接,并将get请求消息通过所述连接发送至服务方,以及在接收到服务方的响应消息时,记录响应消息的二进制数据,并返回至调用方;
若所述请求消息为发布post请求消息,则根据服务方的***域名开启本地至服务方的连接,开始记录post请求消息中的二进制数据,并对post请求消息进行循环读取,将已记录完毕的数据部分通过所述连接依次发送给服务方,以及在接收到服务方返回的响应消息时,记录响应消息的二进制数据,并对响应消息进行循环读取,将已记录完毕的数据部分依次发送给调用方。
可选的,对记录的数据进行反序列化处理,获得代码要素信息,包括:
将记录的包含有请求消息和响应消息的二进制数据转换为字符串,并从中解析出调用方对服务方进行调用时所采用的调用接口和调用方法;
对获得的字符串数据进行反序列化处理,获得Java程序可操作的测试对象,并从中解析出调用方对服务方进行调用时使用的入参列表,以及服务方返回的调用结果;
将获得的调用接口、调用方法、入参列表和调用结果确定为代码要素信息。
可选的,基于获得的代码要素信息生成相应的测试代码,包括:
根据获得的调用方使用的调用接口,配置测试代码中使用的调用接口名称和调用接口类型,以及根据调用方使用的调用方法,配置测试代码中使用的调用方法名称、调用方法类型和调用参数;
对基于调用方使用的入参列表和服务方返回的调用结果生成的测试对象分别进行解析,获得相应的入参名称、入参类型、入参赋值以及结果参数名称、结果参数类型、结果参数赋值,并根据获得信息生成对应的测试代码。
可选的,进一步包括:
在对基于调用方使用的入参列表和服务方返回的调用结果生成的测试对象进行参数解析的过程中,若待获取的测试对象为普通对象,则直接进行调用;若待获取的测试对象为复杂对象,则读取所述复杂对象对应的文件保存地址以获取基于所述复杂对象生成的保存文件,并将所述保存文件转换为所述复杂对象后再进行调用。
一种测试数据的生成装置,包括:
通信单元,用于接收调用方发送的请求消息,进行数据记录后发往服务方,以及接收服务器返回的响应消息,进行数据记录后发往调用方;
处理单元,用于对记录的数据进行反序列化处理,获得代码要素信息;
生成单元,用于基于获得的代码要素信息生成相应的测试代码。
这样,可以基于真实的接口应用环境生成相应的测试代码,从而有效提高了测试代码的生成效率,提升了测试结果的有效性和准确性,同时也大大节省了测试代码的开发和维护成本。进一步地,本申请实施例的通用性极高,适用于各种协议接口,且操作简单,不需要开发人员具有多年的开发经验,从而进一降低了其扩展成本。
可选的,接收调用方发送的请求消息,进行数据记录后发往服务方,以及接收服务器返回的响应消息,进行数据记录后发往调用方时,所述通信单元具体用于:
当接收到调用方发送的请求消息时,读取所述请求消息中的指定字段,根据所述指定字段的解析结果判定请求消息的类型,并获取服务方的***域名;
若所述请求消息为获取get请求消息,则开始记录get请求消息中的二进制数据,在记录完毕后,根据服务方的***域名开启本地至服务方的连接,并将get请求消息通过所述连接发送至服务方,以及在接收到服务方的响应消息时,记录响应消息的二进制数据,并返回至调用方;
若所述请求消息为发布post请求消息,则根据服务方的***域名开启本地至服务方的连接,开始记录post请求消息中的二进制数据,并对post请求消息进行循环读取,将已记录完毕的数据部分通过所述连接依次发送给服务方,以及在接收到服务方返回的响应消息时,记录响应消息的二进制数据,并对响应消息进行循环读取,将已记录完毕的数据部分依次发送给调用方。
可选的,对记录的数据进行反序列化处理,获得代码要素信息时,所述记录单元具体用于:
将记录的包含有请求消息和响应消息的二进制数据转换为字符串,并从中解析出调用方对服务方进行调用时所采用的调用接口和调用装置;
对获得的字符串数据进行反序列化处理,获得Java程序可操作的测试对象,并从中解析出调用方对服务方进行调用时使用的入参列表,以及服务方返回的调用结果;
将获得的调用接口、调用方法、入参列表和调用结果确定为代码要素信息。
可选的,基于获得的代码要素信息生成相应的测试代码时,所述生成单元具体用于:
根据获得的调用方使用的调用接口,配置测试代码中使用的调用接口名称和调用接口类型,以及根据调用方使用的调用装置,配置测试代码中使用的调用装置名称、调用装置类型和调用参数;
对基于调用方使用的入参列表和服务方返回的调用结果生成的测试对象分别进行解析,获得相应的入参名称、入参类型、入参赋值以及结果参数名称、结果参数类型、结果参数赋值,并根据获得信息生成对应的测试代码。
可选的,所述生成单元进一步用于:
在对基于调用方使用的入参列表和服务方返回的调用结果生成的测试对象进行参数解析的过程中,若待获取的测试对象为普通对象,则直接进行调用;若待获取的测试对象为复杂对象,则读取所述复杂对象对应的文件保存地址以获取基于所述复杂对象生成的保存文件,并将所述保存文件转换为所述复杂对象后再进行调用。
附图说明
图1为本申请实施例中TCP代理***工作原理示意图;
图2为本申请实施例中TCP代理***生成测试数据概述流程图;
图3为本申请实施例中TCP代理***结构示意图。
具体实施方式
为了提高接口测试的测试结果有效性,本申请实施例中,重新设计了测试数据的生成方式,即通过监听传输控制协议(TransmissionControlProtocol,TCP)数据然后反序列化,从而基于真实数据生成所需的测试数据,完全不需要人工构造数据,即节省测试时间,又因为测试数据的真实性,有效提升了测试结果的有效性。
下面结合附图对本申请优选的实施方式进行详细说明。
参阅图1所示,本申请实施例中,在调用方和服务方之间设置有位于TCP层的代理***,简称,TCP代理***,调用方向服务方发送的任何请求都会由TCP代理***接收并转发至服务方,相应的,服务方返回的任何响应也都会由TCP代理***工转发至调用方。
在具体实现时,只要将调用方的目标服务切换到至TCP代理***即可,如,将调用方的服务域名指向TCP代理***等等,在此不再一一赘述。此外,测试人员可以通过任何方式由调用方向服务方发送调用请求,也可以通过任何方式由服务方向调用方返回调用响应,所有的操作过程都会被TCP代理***转发并记录。
参阅图2所示,本申请实施例中,TCP代理***生成测试数据的概述流程如下:
步骤200:接收调用方发送的请求消息,进行数据记录后发往服务方,以及接收服务器返回的响应消息,进行数据记录后发往调用方。
如图1所示,本申请实施例中,TCP代理***在调用方和服务方之间转发两者之间的交互消息,在转发的过程中,可选的,TCP代理***在TCP层记录两者之间的交互消息,包括调用方发往服务方的请求消息,以及服务方发往调用方的响应消息。由于在TCP层进行了数据监听,因此,本申请实施例是一种通用方案,可以适应于采用任何协议栈的***及设备,只要基于TCP层进行相应开发,就可以进行任何类型接口服务协议的监听。
另一方面,本申请目前支持xfire的网络服务(Webservice,wb)以及一些自定义的远程调用协议,根据实际应用需求,也可以对本申请技术方案所支付的协议进行适当扩展,本实施例中,仅以xfire的ws协议处理方式来做功能演示。
具体的,在执行步骤200时,TCP代理***主要用于将调用方发送的请求消息,转发到指定的服务方,以及将服务方返回的响应消息返回给调用方,并且在此调用过程中,记录请求消息和响应消息的二进制数据。
实际应用中,请求消息分为获取(get)请求消息和发布(post)请求消息,前者用于向服务方请求服务描述语言(WebServicesDescriptionLanguag,wsdl)文档(即服务方的入参列表),后者用于调用服务方执行各种操作。针对不同类型的请求消息,TCP代理***将执行不同的处理。其中,wsdl文档将Web服务描述定义为一组服务访问点,客户端可以通过这些服务访问点对包含面向文档信息或面向过程调用的服务进行访问(类似远程过程调用)。
具体执行方式如下:
TCP代理***启动后,监听指定端口(如,配置为8080端口),当接收到调用方请求消息时,TCP代理***读取请求消息中的指定字段(例如,前256个字节或者前1024个字节等等),根据这部分数据的解析结果判定请求消息的类型,并获取服务方的***域名,也称主机(host)信息;
若请求消息为get请求消息,则其目的是获取服务方的wsdl文档(即服务方的入参列表),所谓入参列表即是调用服务方时需要使用的参数列表,调用方按照入参列表的提示在post请求中填写好相应的参数即可对服务方进行调用。那么,TCP代理***开始记录get请求消息中的二进制数据,并在记录完毕后,根据服务方的***域名开启本地至服务方的TCP连接,将get请求消息通过已建立的TCP连接发送至服务方;相应的,TCP代理***在接收到服务方的响应消息(携带wsdl文件)时,记录响应消息的二进制数据,并返回至调用方。
之所以这样处理是因为get请求消息中携带的数据量较少,因此,可以在记录完毕后,将所有数据一起发送至服务方。
若为post请求消息,则其目的是调用服务方完成各种操作,那么,TCP代理***根据服务方的***域名开启本地至服务方的TCP连接,将前期读取的指定字段写入此TCPL连接(所有的数据都要传入服务方,此处先将获取收到的数据先发送出去),并开始记录post请求消息中的二进制数据(可选的,可以使用请求数组,即byte[]request进行记录),接着,TCP代理***可以对post请求消息进行循环读取,将已记录完毕的数据部分通过已建立的TCP连接依次发送给服务方;相应的,TCP代理***接收到服务方返回的响应消息(携带调用结果)时,记录响应消息的二进制数据(可选的,可以使用响应数组,即byte[]response进行记录),并对响应消息进行循环读取,将已记录完毕的数据部分依次发送给调用方。
其中,在向服务方返回响应消息时,为了避免读取空数据,可选的,TCP代理***可以循环睡眠(sleep)25毫秒,直到byte[]response中记录的数据含有wsdl结尾标识符为止。
之所以这样处理是因为post请求消息中携带的数据量较多,为了避免造成数据阻塞,TCP处理***分多次将post请求消息发送至服务方。
步骤210:对记录的数据进行反序列化处理,获得代码要素信息。
在执行步骤210时,TCP处理***具体执行以下步骤:
首先,TCP代理***获取已记录的二进制数据(包括:get请求消息及其响应消息,post请求消息及其响应消息),将二进制数据转换为字符串,并从中解析出调用方对服务方进行调用时所采用的调用接口和调用方法。
实际应用中,所有数据均是以二进制形式记录的,TCP代理***在进行反序列化操作之前,需要先将二进制数据转换为字符串(如,soap协议文本),在转换为字符串后,调用方采用的调用接口和调用方法可以直接解析获得,而入参列表涉及到复杂的参数配置,调用结果也包括大量数据,无法在字符串状态下解析获得,必须进行反序列化操作,转换为Java程序可操作的对象。
其次,对获得的字符串数据进行反序列化处理,获得Java程序可操作的测试对象,并从中解析出调用方对服务方进行调用时使用的入参列表,使用的入参列表以及服务方返回的调用获得Java程序可操作的测试对象。
最后,将获得的调用接口、调用方法、入参列表和调用结果确定为代码要素信息。
本申请实施例中,TCP代理***执行反序列化操作是基于对xfire的改造来实现的,xFire是新一代的JavaWeb服务引擎,用于简化Java应用转化为Web服务的步骤和过程,本实施例中,改造了xfire处理器的功能,只保留了其数据解析功能,不提供其他服务,因此,TCP代理***只需调用改造后的xfire即可实现数据的反序列化操作。经过反序列化操作后,TCP代理***可以解析出调用方使用的入参列表和服务方返回的调用结果,这两者均被转换为Java程序可操作的测试对象,其中,由于入参列表和调用结果中均包含有大量复杂的数据,因此,生成的对象包含普通对象和复杂对象。
上述调用接口、调用方法、入参列表和调用结果均是重要的代码要素信息,将这些信息作为维度,可以生成符合实际应用环境的准确的测试代码;当然,若管理人员预先获知调用方采用的调用接口和调用方法,则TCP代理***也可以不从字符串中解析获得此信息,而仅仅对字符串进行反序列化操作获得最为重要的入参列表和调用结果即可。在此不再赘述。
步骤220:基于获得的代码要素信息生成相应的测试代码。
具体的,在执行步骤220时,TCP代码***执行以下操作:
首先,根据获得的调用方使用的调用接口,配置测试代码中使用的调用接口名称和调用接口类型,以及根据调用方使用的调用方法配置测试代码中使用的调用方法名称、调用方法类型和调用参数。
例如,根据调用方使用的调用接口和调用方法,配置测试代码中使用的接口名称、bean(一种Java类)类型,bean名称,调用参数方法等等;其中,对于简单参数变量和参数枚举值需要进行初始赋值。
其次,对基于调用方使用的入参列表和服务方返回的调用结果生成的测试对象分别进行解析,获得相应的入参名称、入参类型、入参赋值以及结果参数名称、结果参数类型、结果参数赋值,并根据获得信息生成对应的测试代码。
例如,以入参列表为例,可以对入参列表进行解析,在测试代码中配置入参类型、入参申明、import类型、初始化赋值等等。
另一方面,在对入参列表和调用结果进行反序列化操作后,由于生成的测试对象可能为普通对象和复杂对象,因此,其保存方式可能不同,如,普通对象直接以Java对象的形式保存,而复杂对象由于数据量庞大,需要以文件形式进行保存更为稳妥安全,因此,TCP代理***需要将复杂对象转换为文件形式〔如,Javascript对象符号(JavascriptObjectNotation,Json)保存文件〕进行保存,并记录文件保存地址。)进行存储,并记录文件保存地址。
这样,在对基于调用方使用的入参列表和服务方返回的调用结果生成的测试对象进行参数解析的过程中,若待获取的测试对象为普通对象,则TCP代理***直接进行调用,即直接读取对应保存的Java对象,而若待获取的测试对象为复杂对象,则TCP代理***读取该复杂对象对应的文件保存地址以获取基于该复杂对象生成的保存文件,并将该保存文件转换为相应的复杂对象再进行调用。
采用上述方法,可以从测试代码的初始部分开始(即从package部分开始)逐步生成一个标准的接口测试代码。
参阅图3所示,本申请实施例中,一种测试数据的生成装置(即TCP代理***),包括通信单元30、处理单元31和生成单元32,其中,
通信单元30,用于接收调用方发送的请求消息,进行数据记录后发往服务方,以及接收服务器返回的响应消息,进行数据记录后发往调用方;
处理单元31,用于对记录的数据进行反序列化处理,获得代码要素信息;
生成单元32,用于基于获得的代码要素信息生成相应的测试代码。
可选的,通信单元具体用于:
当接收到调用方发送的请求消息时,读取请求消息中的指定字段,根据指定字段的解析结果判定请求消息的类型,并获取服务方的***域名;
若请求消息为获取get请求消息,则开始记录get请求消息中的二进制数据,在记录完毕后,根据服务方的***域名开启本地至服务方的连接,并将get请求消息通过连接发送至服务方,以及在接收到服务方的响应消息时,记录响应消息的二进制数据,并返回至调用方;
若请求消息为发布post请求消息,则根据服务方的***域名开启本地至服务方的连接,开始记录post请求消息中的二进制数据,并对post请求消息进行循环读取,将已记录完毕的数据部分通过连接依次发送给服务方,以及在接收到服务方返回的响应消息时,记录响应消息的二进制数据,并对响应消息进行循环读取,将已记录完毕的数据部分依次发送给调用方。
可选的,记录单元具体用于:
将记录的包含有请求消息和响应消息的二进制数据转换为字符串,并从中解析出调用方对服务方进行调用时所采用的调用接口和调用装置;
对获得的字符串数据进行反序列化处理,获得Java程序可操作的测试对象,并从中解析出调用方对服务方进行调用时使用的入参列表,以及服务方返回的调用结果;
将获得的调用接口、调用方法、入参列表和调用结果确定为代码要素信息。
可选的,生成单元具体用于:
根据获得的调用方使用的调用接口,配置测试代码中使用的调用接口名称和调用接口类型,以及根据调用方使用的调用装置,配置测试代码中使用的调用装置名称、调用装置类型和调用参数;
对基于调用方使用的入参列表和服务方返回的调用结果生成的测试对象分别进行解析,获得相应的入参名称、入参类型、入参赋值以及结果参数名称、结果参数类型、结果参数赋值,并根据获得信息生成对应的测试代码。
可选的,生成单元进一步用于:
在对基于调用方使用的入参列表和服务方返回的调用结果生成的测试对象进行参数解析的过程中,若待获取的测试对象为普通对象,则直接进行调用;若待获取的测试对象为复杂对象,则读取复杂对象对应的文件保存地址以获取基于复杂对象生成的保存文件,并将保存文件转换为复杂对象后再进行调用。
综上所述,本申请实施例中,TCP代理***在数据传输过程中对传输数据进行二进制数据记录,再对记录的二进制数据进行反序列化操作,获得代码要素信息,以及基于代码要素信息生成所需的测试代码,这样,可以基于真实的接口应用环境生成相应的测试代码,从而有效提高了测试代码的生成效率,提升了测试结果的有效性和准确性,同时也大大节省了测试代码的开发和维护成本。进一步地,本申请实施例的通用性极高,适用于各种协议接口,且操作简单,不需要开发人员具有多年的开发经验,从而进一降低了其扩展成本。
本领域内的技术人员应明白,本申请的实施例可提供为方法、***、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(***)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。
显然,本领域的技术人员可以对本申请实施例进行各种改动和变型而不脱离本申请实施例的精神和范围。这样,倘若本申请实施例的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。

Claims (10)

1.一种测试数据的生成方法,其特征在于,包括:
接收调用方发送的请求消息,进行数据记录后发往服务方,以及接收服务器返回的响应消息,进行数据记录后发往调用方;
对记录的数据进行反序列化处理,获得代码要素信息;
基于获得的代码要素信息生成相应的测试代码。
2.如权利要求2所述的方法,其特征在于,接收调用方发送的请求消息,进行数据记录后发往服务方,以及接收服务器返回的响应消息,进行数据记录后发往调用方,包括:
当接收到调用方发送的请求消息时,读取所述请求消息中的指定字段,根据所述指定字段的解析结果判定请求消息的类型,并获取服务方的***域名;
若所述请求消息为获取get请求消息,则开始记录get请求消息中的二进制数据,在记录完毕后,根据服务方的***域名开启本地至服务方的连接,并将get请求消息通过所述连接发送至服务方,以及在接收到服务方的响应消息时,记录响应消息的二进制数据,并返回至调用方;
若所述请求消息为发布post请求消息,则根据服务方的***域名开启本地至服务方的连接,开始记录post请求消息中的二进制数据,并对post请求消息进行循环读取,将已记录完毕的数据部分通过所述连接依次发送给服务方,以及在接收到服务方返回的响应消息时,记录响应消息的二进制数据,并对响应消息进行循环读取,将已记录完毕的数据部分依次发送给调用方。
3.如权利要求1或2所述的方法,其特征在于,对记录的数据进行反序列化处理,获得代码要素信息,包括:
将记录的包含有请求消息和响应消息的二进制数据转换为字符串,并从中解析出调用方对服务方进行调用时所采用的调用接口和调用方法;
对获得的字符串数据进行反序列化处理,获得Java程序可操作的测试对象,并从中解析出调用方对服务方进行调用时使用的入参列表,以及服务方返回的调用结果;
将获得的调用接口、调用方法、入参列表和调用结果确定为代码要素信息。
4.如权利要求3所述的方法,其特征在于,基于获得的代码要素信息生成相应的测试代码,包括:
根据获得的调用方使用的调用接口,配置测试代码中使用的调用接口名称和调用接口类型,以及根据调用方使用的调用方法,配置测试代码中使用的调用方法名称、调用方法类型和调用参数;
对基于调用方使用的入参列表和服务方返回的调用结果生成的测试对象分别进行解析,获得相应的入参名称、入参类型、入参赋值以及结果参数名称、结果参数类型、结果参数赋值,并根据获得信息生成对应的测试代码。
5.如权利要求4所述的方法,其特征在于,进一步包括:
在对基于调用方使用的入参列表和服务方返回的调用结果生成的测试对象进行参数解析的过程中,若待获取的测试对象为普通对象,则直接进行调用;若待获取的测试对象为复杂对象,则读取所述复杂对象对应的文件保存地址以获取基于所述复杂对象生成的保存文件,并将所述保存文件转换为所述复杂对象后再进行调用。
6.一种测试数据的生成装置,其特征在于,包括:
通信单元,用于接收调用方发送的请求消息,进行数据记录后发往服务方,以及接收服务器返回的响应消息,进行数据记录后发往调用方;
处理单元,用于对记录的数据进行反序列化处理,获得代码要素信息;
生成单元,用于基于获得的代码要素信息生成相应的测试代码。
7.如权利要求6所述的装置,接收调用方发送的请求消息,进行数据记录后发往服务方,以及接收服务器返回的响应消息,进行数据记录后发往调用方时,所述通信单元具体用于:
当接收到调用方发送的请求消息时,读取所述请求消息中的指定字段,根据所述指定字段的解析结果判定请求消息的类型,并获取服务方的***域名;
若所述请求消息为获取get请求消息,则开始记录get请求消息中的二进制数据,在记录完毕后,根据服务方的***域名开启本地至服务方的连接,并将get请求消息通过所述连接发送至服务方,以及在接收到服务方的响应消息时,记录响应消息的二进制数据,并返回至调用方;
若所述请求消息为发布post请求消息,则根据服务方的***域名开启本地至服务方的连接,开始记录post请求消息中的二进制数据,并对post请求消息进行循环读取,将已记录完毕的数据部分通过所述连接依次发送给服务方,以及在接收到服务方返回的响应消息时,记录响应消息的二进制数据,并对响应消息进行循环读取,将已记录完毕的数据部分依次发送给调用方。
8.如权利要求6或7所述的装置,其特征在于,对记录的数据进行反序列化处理,获得代码要素信息时,所述记录单元具体用于:
将记录的包含有请求消息和响应消息的二进制数据转换为字符串,并从中解析出调用方对服务方进行调用时所采用的调用接口和调用装置;
对获得的字符串数据进行反序列化处理,获得Java程序可操作的测试对象,并从中解析出调用方对服务方进行调用时使用的入参列表,以及服务方返回的调用结果;
将获得的调用接口、调用方法、入参列表和调用结果确定为代码要素信息。
9.如权利要求8所述的装置,其特征在于,基于获得的代码要素信息生成相应的测试代码时,所述生成单元具体用于:
根据获得的调用方使用的调用接口,配置测试代码中使用的调用接口名称和调用接口类型,以及根据调用方使用的调用装置,配置测试代码中使用的调用装置名称、调用装置类型和调用参数;
对基于调用方使用的入参列表和服务方返回的调用结果生成的测试对象分别进行解析,获得相应的入参名称、入参类型、入参赋值以及结果参数名称、结果参数类型、结果参数赋值,并根据获得信息生成对应的测试代码。
10.如权利要求9所述的装置,其特征在于,所述生成单元进一步用于:
在对基于调用方使用的入参列表和服务方返回的调用结果生成的测试对象进行参数解析的过程中,若待获取的测试对象为普通对象,则直接进行调用;若待获取的测试对象为复杂对象,则读取所述复杂对象对应的文件保存地址以获取基于所述复杂对象生成的保存文件,并将所述保存文件转换为所述复杂对象后再进行调用。
CN201410419779.0A 2014-08-22 2014-08-22 一种测试数据的生成方法及装置 Active CN105446867B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201410419779.0A CN105446867B (zh) 2014-08-22 2014-08-22 一种测试数据的生成方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410419779.0A CN105446867B (zh) 2014-08-22 2014-08-22 一种测试数据的生成方法及装置

Publications (2)

Publication Number Publication Date
CN105446867A true CN105446867A (zh) 2016-03-30
CN105446867B CN105446867B (zh) 2019-05-28

Family

ID=55557098

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410419779.0A Active CN105446867B (zh) 2014-08-22 2014-08-22 一种测试数据的生成方法及装置

Country Status (1)

Country Link
CN (1) CN105446867B (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106095688A (zh) * 2016-06-23 2016-11-09 微梦创科网络科技(中国)有限公司 一种软件性能测试方法及装置
CN107918737A (zh) * 2016-10-10 2018-04-17 北京奇虎科技有限公司 压力测试数据的传输方法、装置及***
CN109460219A (zh) * 2018-09-28 2019-03-12 西南电子技术研究所(中国电子科技集团公司第十研究所) 快速序列化接口控制文件的方法

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080127097A1 (en) * 2006-11-28 2008-05-29 International Business Machines Corporation Method and devices for url command testing and for scenario testing
CN101651707A (zh) * 2009-09-22 2010-02-17 西安交通大学 一种网络用户行为日志自动获取方法
CN101771701A (zh) * 2010-01-04 2010-07-07 北京航空航天大学 Web服务客户端自动化生成方法和装置
CN102810069A (zh) * 2012-07-16 2012-12-05 深圳市融创天下科技股份有限公司 一种java对象的请求和响应方法、装置、***和终端
WO2013130069A1 (en) * 2012-02-29 2013-09-06 Hewlett-Packard Development Company, L.P. Network service interface analysis
CN103312551A (zh) * 2012-03-12 2013-09-18 腾讯科技(深圳)有限公司 通用网关接口的测试方法及测试装置
CN103428019A (zh) * 2012-05-24 2013-12-04 中兴通讯股份有限公司 一种网络服务消息的管理方法和***
CN103580937A (zh) * 2012-07-24 2014-02-12 阿里巴巴集团控股有限公司 一种Web 服务模拟的方法及其***和服务代理***
CN103905258A (zh) * 2012-12-24 2014-07-02 百度国际科技(深圳)有限公司 一种客户端数据上传功能的测试方法及装置

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080127097A1 (en) * 2006-11-28 2008-05-29 International Business Machines Corporation Method and devices for url command testing and for scenario testing
CN101651707A (zh) * 2009-09-22 2010-02-17 西安交通大学 一种网络用户行为日志自动获取方法
CN101771701A (zh) * 2010-01-04 2010-07-07 北京航空航天大学 Web服务客户端自动化生成方法和装置
WO2013130069A1 (en) * 2012-02-29 2013-09-06 Hewlett-Packard Development Company, L.P. Network service interface analysis
CN103312551A (zh) * 2012-03-12 2013-09-18 腾讯科技(深圳)有限公司 通用网关接口的测试方法及测试装置
CN103428019A (zh) * 2012-05-24 2013-12-04 中兴通讯股份有限公司 一种网络服务消息的管理方法和***
CN102810069A (zh) * 2012-07-16 2012-12-05 深圳市融创天下科技股份有限公司 一种java对象的请求和响应方法、装置、***和终端
CN103580937A (zh) * 2012-07-24 2014-02-12 阿里巴巴集团控股有限公司 一种Web 服务模拟的方法及其***和服务代理***
CN103905258A (zh) * 2012-12-24 2014-07-02 百度国际科技(深圳)有限公司 一种客户端数据上传功能的测试方法及装置

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106095688A (zh) * 2016-06-23 2016-11-09 微梦创科网络科技(中国)有限公司 一种软件性能测试方法及装置
CN107918737A (zh) * 2016-10-10 2018-04-17 北京奇虎科技有限公司 压力测试数据的传输方法、装置及***
CN107918737B (zh) * 2016-10-10 2021-09-07 北京奇虎科技有限公司 压力测试数据的传输方法、装置及***
CN109460219A (zh) * 2018-09-28 2019-03-12 西南电子技术研究所(中国电子科技集团公司第十研究所) 快速序列化接口控制文件的方法
CN109460219B (zh) * 2018-09-28 2021-09-03 西南电子技术研究所(中国电子科技集团公司第十研究所) 快速序列化接口控制文件的方法

Also Published As

Publication number Publication date
CN105446867B (zh) 2019-05-28

Similar Documents

Publication Publication Date Title
CN107122297B (zh) 用于测试接口的请求消息生成的方法及设备
CN111159049B (zh) 接口自动化测试方法及***
CN110427331B (zh) 基于接口测试工具自动生成性能测试脚本的方法
CN105450476B (zh) 一种回归测试***及测试方法
CN108650149A (zh) 服务器的测试方法、装置、设备及计算机可读存储介质
CN109302522A (zh) 测试方法、装置以及计算机***和介质
US20100115496A1 (en) Filter generation for load testing managed environments
CN105099811A (zh) 一种接口测试方法和装置
CN103729294B (zh) 应用软件性能脚本测试方法与装置
US10250721B2 (en) System and method for testing applications with a load tester and testing translator
CN107659455B (zh) 一种iOS端Mock数据的方法、存储介质、设备及***
CN108228444B (zh) 一种测试方法和装置
CN110750458A (zh) 大数据平台测试方法、装置、可读存储介质及电子设备
CN108459850B (zh) 生成测试脚本的方法、装置及***
CN102866944A (zh) 一种压力测试***及方法
CN106776318A (zh) 一种测试脚本录制方法及***
CN114003451B (zh) 一种接口测试方法、装置、***及介质
CN103246606A (zh) Esb平台的性能方法和***
CN114205274A (zh) 网络设备的测试方法及其装置
CN113127108A (zh) 业务请求的处理方法及装置、存储介质以及电子设备
CN105446867A (zh) 一种测试数据的生成方法及装置
CN111290996A (zh) 文档格式转换方法、装置、设备及可读存储介质
CN113836014A (zh) 一种接口测试方法、装置、电子设备和存储介质
CN116466930A (zh) 智能客服模型的构建方法、消息处理法、装置及电子设备
CN115987821A (zh) 网关路由测试方法及装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right

Effective date of registration: 20200923

Address after: Cayman Enterprise Centre, 27 Hospital Road, George Town, Grand Cayman Islands

Patentee after: Innovative advanced technology Co.,Ltd.

Address before: Cayman Enterprise Centre, 27 Hospital Road, George Town, Grand Cayman Islands

Patentee before: Advanced innovation technology Co.,Ltd.

Effective date of registration: 20200923

Address after: Cayman Enterprise Centre, 27 Hospital Road, George Town, Grand Cayman Islands

Patentee after: Advanced innovation technology Co.,Ltd.

Address before: Cayman Islands Grand Cayman capital building, a four storey No. 847 mailbox

Patentee before: Alibaba Group Holding Ltd.

TR01 Transfer of patent right