CN105824752B - 一种接口自动化测试方法、装置和计算设备 - Google Patents
一种接口自动化测试方法、装置和计算设备 Download PDFInfo
- Publication number
- CN105824752B CN105824752B CN201610151154.XA CN201610151154A CN105824752B CN 105824752 B CN105824752 B CN 105824752B CN 201610151154 A CN201610151154 A CN 201610151154A CN 105824752 B CN105824752 B CN 105824752B
- Authority
- CN
- China
- Prior art keywords
- node
- interface
- dictionary object
- equal
- comparison
- 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.)
- Active
Links
- 238000012360 testing method Methods 0.000 title claims abstract description 90
- 238000000034 method Methods 0.000 claims abstract description 54
- 230000004044 response Effects 0.000 claims abstract description 17
- 230000008569 process Effects 0.000 claims description 8
- 230000008859 change Effects 0.000 claims description 6
- 238000004891 communication Methods 0.000 description 12
- 238000010586 diagram Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 238000012545 processing Methods 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 2
- 238000013497 data interchange Methods 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 241001269238 Data Species 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 238000000151 deposition Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3688—Test management for test execution, e.g. scheduling of test suites
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
本发明公开了一种接口自动化测试方法,该方法包括:向第一接口和第二接口发送测试请求;接收第一接口和第二接口响应测试请求返回的第一JSON数据和第二JSON数据;将第一JSON数据和第二JSON数据分别转化为第一字典对象和第二字典对象;比对该第一字典对象和第二字典对象。本发明还公开了一种接口自动化测试装置和相应的计算设备。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种接口自动化测试方法、装置和计算设备。
背景技术
随着互联网技术的发展,开发的软件项目工程也越来越多,在软件项目工程中接口自动化测试是一项非常重要的测试环节。接口自动化测试主要测试这些软件项目工程(或者理解为软件系统)对外部提供的接口,以验证这些接口的正确性和稳定性。接口自动化测试的重点是要检查数据的交换,具体是通过向服务器传递接口的测试参数,再接收服务器返回的返回结果,通过验证该返回结果的正确性,以完成对接口的测试。
通常,当软件项目工程进行更新后,需要对更新后的接口进行接口自动化测试,通过比较更新后的接口的返回结果与更新前的接口的返回结果得到两个接口输出的不同,来判断更新后的接口是否与预期的设计符合。
由于接口自动化测试中得到的接口返回结果一般为JSON格式字符串,因此现有技术中通常采用传统的字符串比对的方式来对两个接口的返回结果进行比较。而仅仅使用字符串比对的方式,无法精确的定位究竟是哪一个JSON节点出现不一致的情况,并且JSON字符串往往会出现某些节点的顺序随机、内容一致的情况,这种情况是字符串比对的方式无法检测出的。
因此,需要一种新型的接口自动化测试方法。
发明内容
鉴于此,本发明提供了一种新的接口自动化测试方案,以力图解决或至少缓解上面存在的问题。
根据本发明的一个方面,提供了一种接口自动化测试方法,该方法包括:向第一接口和第二接口发送测试请求;接收第一接口和第二接口响应测试请求返回的第一JSON数据和第二JSON数据;将第一JSON数据和第二JSON数据分别转化为第一字典对象和第二字典对象;比对第一字典对象和第二字典对象,包括:遍历第一字典对象和第二字典对象中各个节点;根据节点类型选取相应的比对规则;根据比对规则比对第一字典对象和第二字典对象中的对应节点是否相等,若不相等,则记录此节点。
可选地,在根据本发明的接口自动化测试方法中,向第一接口和第二接口发送测试请求的步骤之后,还包括:接收第一接口和第二接口返回的响应状态码;若响应状态码指示请求发送成功,则存储相应的接口地址和该接口返回的数据;若响应状态码指示请求发送失败,则检测接口重发次数是否达到阈值;若否,则重新发送测试请求,将该接口重发次数加1。
可选地,在根据本发明的接口自动化测试方法中,其中字典对象为dict类型对象,将第一JSON数据和第二JSON数据分别转化为第一字典对象和第二字典对象的步骤包括:使用simplejson库中的loads方法将JSON数据转化为dict类型对象。
可选地,在根据本发明的接口自动化测试方法中,通过深度优先方法遍历所述第一字典对象和第二字典对象中各个节点,包括:访问字典对象的出发节点,并将其标记为已访问过;从出发点出发依次搜索出发节点的每个邻接节点;若邻接节点未曾访问过,则以该邻接节点为新的出发节点继续进行深度优先方法进行遍历,直至字典对象中所有和出发节点有路径相通的节点均已被访问为止;若字典对象中仍有未访问的节点,则另选一个尚未访问的节点作为新的出发点重复上述过程,直至字典对象中所有节点均已被访问为止。
可选地,在根据本发明的接口自动化测试方法中,比对规则包括:比较节点的类型和值;若类型和值均相等,则两个节点相等。
可选地,在根据本发明的接口自动化测试方法中,比对规则包括:忽略节点的类型;比较节点的值;若值相等,则两个节点相等。
可选地,在根据本发明的接口自动化测试方法中,比对规则包括:忽略节点的值;比较节点的类型;若类型相等,则两个节点相等。
可选地,在根据本发明的接口自动化测试方法中,当节点为集合节点且集合节点中元素排列无序时,比对规则包括:计算集合节点的长度;比较长度,若长度一致,则两个节点相等。
可选地,在根据本发明的接口自动化测试方法中,当节点为集合节点且集合节点中元素个数随机时,比对规则包括:计算集合节点的元素个数;比较元素个数,若元素个数相等,则两个节点相等。
可选地,在根据本发明的接口自动化测试方法中,比对规则包括:忽略比较特定名称的节点。
根据本发明的另一个方面,还提供了一种接口自动化测试装置,该装置包括:请求发送模块,适于向第一接口和第二接口发送测试请求;响应接收模块,适于接收第一接口和第二接口响应测试请求返回的第一JSON数据和第二JSON数据;比较模块,适于将第一JSON数据和第二JSON数据分别转化为第一字典对象和第二字典对象;比较模块还适于比对第一字典对象和第二字典对象,包括:适于遍历第一字典对象和第二字典对象中各个节点,根据节点类型选取相应的比对规则,根据比对规则比对第一字典对象和第二字典对象中的对应节点是否相等,若不相等,则记录此节点。
可选地,在根据本发明的接口自动化测试装置中,响应接收模块还适于接收第一接口和第二接口返回的响应状态码;若响应状态码指示请求发送成功,则存储相应的接口地址和该接口返回的数据;若响应状态码指示请求发送失败,则检测接口重发次数是否达到阈值;若否,则请求发送模块重新发送测试请求,将该接口重发次数加1。
可选地,在根据本发明的接口自动化测试装置中,其中字典对象为dict类型对象,比较模块还适于使用simplejson库中的loads方法将JSON数据转化为dict类型对象。
可选地,在根据本发明的接口自动化测试装置中,比较模块还适于通过深度优先方法遍历第一字典对象和第二字典对象中各个节点,包括:适于访问字典对象的出发节点,并将其标记为已访问过,从出发点出发依次搜索出发节点的每个邻接节点,若邻接节点未曾访问过,则以该邻接节点为新的出发节点继续进行深度优先方法进行遍历,直至字典对象中所有和出发节点有路径相通的节点均已被访问为止,若字典对象中仍有未访问的节点,则另选一个尚未访问的节点作为新的出发点重复上述过程,直至字典对象中所有节点均已被访问为止。
可选地,在根据本发明的接口自动化测试装置中,所述比对规则包括:比较节点的类型和值;若类型和值均相等,则两个节点相等。
可选地,在根据本发明的接口自动化测试装置中,比对规则包括:忽略节点的类型;比较节点的值;若值相等,则两个节点相等。
可选地,在根据本发明的接口自动化测试装置中,比对规则包括:忽略节点的值;比较节点的类型;若类型相等,则两个节点相等。
可选地,在根据本发明的接口自动化测试装置中,当节点为集合节点且集合节点中元素排列无序时,比对规则包括:计算集合节点的长度;比较长度,若长度一致,则两个节点相等。
可选地,在根据本发明的接口自动化测试装置中,当节点为集合节点且集合节点中元素个数随机时,比对规则包括:计算集合节点的元素个数;比较元素个数,若元素个数相等,则两个节点相等。
可选地,在根据本发明的接口自动化测试装置中,比对规则包括:忽略比较特定名称的节点。
根据本发明的还有一个方面,还提供了一种计算设备,包括根据本发明的接口自动化测试装置。
根据本发明的接口自动化测试方案,将两个接口返回的JSON数据转化为便于查询和处理的字典对象后,遍历其中各节点,并进行逐一对比,实现了对两个接口返回数据中不同节点的精确定位,同时针对不同节点类型对JSON数据根据相应的比对规则来对比,满足了不同测试场景下的测试需求。
附图说明
为了实现上述以及相关目的,本文结合下面的描述和附图来描述某些说明性方面,这些方面指示了可以实践本文所公开的原理的各种方式,并且所有方面及其等效方面旨在落入所要求保护的主题的范围内。通过结合附图阅读下面的详细描述,本公开的上述以及其它目的、特征和优势将变得更加明显。遍及本公开,相同的附图标记通常指代相同的部件或元素。
图1示出了根据本发明一个示例性实施例的计算设备100的结构示意图;
图2示出了根据本发明一个示例性实施例的接口自动化测试方法200的
示意图;以及
图3示出了根据本发明一个示例性实施例的接口自动化测试装置300的结构框图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
图1示出了根据本发明的一个示例性实施例的计算设备100的结构示意图。参照图1,在基本的配置102中,计算设备100典型地包括系统存储器106和一个或者多个处理器104。存储器总线108可以用于在处理器104和系统存储器106之间的通信。
取决于期望的配置,处理器104可以是任何类型的处理,包括但不限于:微处理器((μP)、微控制器(μC)、数字信息处理器(DSP)或者它们的任何组合。处理器104可以包括诸如一级高速缓存110和二级高速缓存112之类的一个或者多个级别的高速缓存、处理器核心114和寄存器116。示例的处理器核心114可以包括运算逻辑单元(ALU)、浮点数单元(FPU)、数字信号处理核心(DSP核心)或者它们的任何组合。示例的存储器控制器118可以与处理器104一起使用,或者在一些实现中,存储器控制器118可以是处理器104的一个内部部分。
取决于期望的配置,系统存储器106可以是任意类型的存储器,包括但不限于:易失性存储器(诸如RAM)、非易失性存储器(诸如ROM、闪存等)或者它们的任何组合。系统存储器106可以包括操作系统120、一个或者多个应用122以及程序数据124。在一些实施方式中,应用122可以布置为在操作系统上利用程序数据124进行操作。
计算设备100还可以包括有助于从各种接口设备(例如,输出设备142、外设接口144和通信设备146)到基本配置102经由总线/接口控制器130的通信的接口总线140。示例的输出设备142包括图形处理单元148和音频处理单元150。它们可以被配置为有助于经由一个或者多个A/V端口152与诸如显示器或者扬声器之类的各种外部设备进行通信。示例外设接口144可以包括串行接口控制器154和并行接口控制器156,它们可以被配置为有助于经由一个或者多个I/O端口158和诸如输入设备(例如,键盘、鼠标、笔、语音输入设备、触摸输入设备)或者其他外设(例如打印机、扫描仪等)之类的外部设备进行通信。示例的通信设备146可以包括网络控制器160,其可以被布置为便于经由一个或者多个通信端口164与一个或者多个其他计算设备162通过网络通信链路的通信。
网络通信链路可以是通信介质的一个示例。通信介质通常可以体现为在诸如载波或者其他传输机制之类的调制数据信号中的计算机可读指令、数据结构、程序模块,并且可以包括任何信息递送介质。“调制数据信号”可以这样的信号,它的数据集中的一个或者多个或者它的改变可以在信号中编码信息的方式进行。作为非限制性的示例,通信介质可以包括诸如有线网络或者专线网络之类的有线介质,以及诸如声音、射频(RF)、微波、红外(IR)或者其它无线介质在内的各种无线介质。这里使用的术语计算机可读介质可以包括存储介质和通信介质二者。
计算设备100可以实现为小尺寸便携(或者移动)电子设备的一部分,这些电子设备可以是诸如蜂窝电话、个人数字助理(PDA)、个人媒体播放器设备、无线网络浏览设备、个人头戴设备、应用专用设备、或者可以包括上面任何功能的混合设备。计算设备100还可以实现为包括桌面计算机和笔记本计算机配置的个人计算机。在一些实施例中,计算设备100被配置为执行根据本发明的接口自动化测试方法200,其中应用122包括根据本发明的接口自动化测试装置300。
图2示出了根据本发明一个示例性实施例的接口自动化测试方法200的流程图。可以理解地,接口自动化测试方法200中的被测接口可以是互联网技术领域中任一应用程序中用于进行数据交换的接口,例如:用户终端上与网络侧(例如:服务器)进行数据交换的接口,或者服务器上与用户侧(例如:用户终端)进行数据交换的接口。上述应用程序包括但不限于浏览器应用程序、聊天应用程序、游戏应用程序、音视频播放应用程序等等。
如图2所示,方法200始于步骤S210,在步骤S210中,向第一接口和第二接口发送测试请求。具体地,可以先生成测试请求,将生成的测试请求放入发送队列予以发送。其中第一接口和第二接口为测试人员指定需要对比其返回结果的两个被测接口,发送的测试请求通常为http请求,并包括被测接口的接口地址和测试参数。被测接口的接口地址可以为URL信息,例如http://car1.autohome.com/abc。测试参数可以是用于测试该被测接口的功能而使用的测试参数。例如:被测接口为某一聊天应用程序的登录接口,那么测试参数就可以包括登录账号和登录账号的密码信息,以通过登录账号和密码信息测试该登录接口是否准确或者稳定。
第一接口和第二接口接收测试请求,并响应于该测试请求,根据测试参数进行测试后返回响应结果,响应结果一般为JSON数据。因此在步骤S220中,接收第一接口和第二接口响应测试请求返回的第一JSON数据和第二
JSON数据。公知地,JSON是一种轻量级的数据交换格式,易于阅读和书写,易于机器解析和生成,可以被用来作为数据交换格式。
应当注意的是,步骤S210中,由于网络抖动或者其他原因,可能会出现请求发送失败的情况。因此,根据本发明的一个实施方式,向第一接口和第二接口发送测试请求的步骤之后,方法200还包括步骤:
接收第一接口和第二接口返回的响应状态码,若响应状态码(例如200)指示请求发送成功,则存储相应的接口地址和该接口返回的数据;若响应状态码(例如404)指示请求发送失败,则检测接口重发次数是否达到阈值。
若接口重发次数没有达到阈值(阈值通常为3),则重发该测试请求,同时将接口重复次数加1。若接口重发次数已达到阈值,则不再重发该测试请求。
当测试请求发送成功,存储了接口地址和接口返回的JSON数据之后,由于测试中返回的JSON数据中一般会嵌套多层数据对象,使用现有技术无法高效的完成数据解析操作。为了便于数据读取,在步骤S230中,将第一JSON数据和第二JSON数据分别转化为第一字典对象和第二字典对象。具体地,其中字典对象为dict类型对象,可以使用simplejson库中的loads方法将JSON数据转化为dict类型对象。
而后在步骤S240中,比对上述第一字典对象和第二字典对象。具体地,首先遍历第一字典对象和第二字典对象中各个节点,通常可以采用深度遍历方法。根据本发明的一个实施方式,通过深度优先方法遍历第一字典对象和第二字典对象中各个节点,可以包括:
访问字典对象的出发节点,并将其标记为已访问过;从出发点出发依次搜索该出发节点的每个邻接节点,若该邻接节点未曾访问过,则以该邻接节点为新的出发节点继续进行深度优先方法进行遍历,直至字典对象中所有和出发节点有路径相通的节点均已被访问为止。
若字典对象中仍有未访问的节点,则另选一个尚未访问的节点作为新的出发点重复上述过程,直至字典对象中所有节点均已被访问为止。
其中,例如访问第一字典对象中一个节点时,获取该节点在第一字典对象的key,而后查找第二字典对象中同样的key对应的节点,根据节点类型选取相应的比对规则,并根据该比对规则比对第一字典对象和第二字典对象中的对应节点是否相等,若不相等,则记录此节点。
其中,每个节点可以对应一条比对规则,接口返回的JSON数据中各节点的比对规则可以预先配置并存储。
假设第一接口返回的结果为:{‘a’:1,‘b’:2,‘c’:3},第二接口返回的结果为{‘b’:2,‘a’:1,‘c’:3},二者实际上是相等的,而按照传统的字符串比对方法,无法正确识别顺序随机的节点,因此会得出判定为不相等的错误结论,影响了测试结果。而根据本发明的接口自动化测试方法,则可以避免此种错误。
又假设第一接口返回的结果为:{‘a’:1,‘b’:2,‘c’:3},第二接口返回的结果为{‘a’:1,‘b’:2,‘c’:4},其中a、b相等,c不相等,根据本发明的接口自动化测试方法进行测试后可以得到其不相等的节点为c。
根据本发明的一个实施方式,比对节点的比对规则可以包括:比较节点的类型和值,若类型和值均相等,则两个节点相等。
当接口节点类型改变时,例如从列表变为字符串,比对规则还可以包括:忽略节点的类型,比较节点的值,若值相等,则两个节点相等。
当该节点不为固定值时,例如值为时间戳,由于时间戳随时间改变需要忽略,比对规则可以包括:忽略节点的值,比较节点的类型,若类型相等,则两个节点相等。
进一步地,若节点为集合节点,当集合节点中元素排列无序时,例如在搜索的结果中,结果的排序是随时可能变化的,比对规则可以包括:计算集合节点的长度,比较该长度,若长度一致,则两个节点相等。
若节点为集合节点,当节点为集合节点且集合节点中元素个数随机时,比对规则可以包括:计算集合节点的元素个数,比较元素个数,若元素个数相等,则两个节点相等。
此外,由于集合中元素的增加或减少是软件版本更新时的常见情况,因此比对规则还可以包括:忽略比较特定名称的节点。
图3示出了根据本发明一个示例性实施例的接口自动化测试装置300的结构图。如图3所示,装置300可以包括请求发送模块310、响应接收模块320和比较模块330。
请求发送模块310适于向第一接口和第二接口发送测试请求,与请求发送模块310相连的响应接收模块320适于接收第一接口和第二接口响应测试请求返回的第一JSON数据和第二JSON数据。
根据本发明的一个实施方式,响应接收模块320还适于接收第一接口和第二接口返回的响应状态码;若响应状态码指示请求发送成功,则存储相应的接口地址和该接口返回的数据;若响应状态码指示请求发送失败,则检测接口重发次数是否达到阈值;若否,则请求发送模块310重新发送测试请求,将该接口重发次数加1,若是,则不重发测试请求。
响应接收模块320接收了JSON数据后,与响应接收模块320连接的比较模块330适于将第一JSON数据和第二JSON数据分别转化为第一字典对象和第二字典对象,具体地,其中字典对象为dict类型对象,所述比较模块还适于使用simplejson库中的loads方法将JSON数据转化为dict类型对象。
而后,比较模块330适于比对上述第一字典对象和第二字典对象是否相等,具体地,比较模块330适于遍历第一字典对象和第二字典对象中各个节点,根据节点类型选取相应的比对规则,根据比对规则比对第一字典对象和第二字典对象中的对应节点是否相等,若不相等,则记录此节点。
根据本发明的一个实施方式,比较模块330可以通过深度优先方法遍历第一字典对象和第二字典对象中各个节点,具体地,先访问字典对象的出发节点,并将其标记为已访问过,从出发点出发依次搜索所述出发节点的每个邻接节点,若该邻接节点未曾访问过,则以该邻接节点为新的出发节点继续进行深度优先方法进行遍历,直至字典对象中所有和出发节点有路径相通的节点均已被访问为止。若字典对象中仍有未访问的节点,则另选一个尚未访问的节点作为新的出发点重复上述过程,直至字典对象中所有节点均已被访问为止。
其中,根据本发明的一个实施方式,在访问一个节点时,可以选取的比对规则包括:比较节点的类型和值,若类型和值均相等,则两个节点相等。
根据本发明的一个实施方式,比对规则还可以包括:忽略节点的类型,比较节点的值,若值相等,则两个节点相等。
根据本发明的一个实施方式,比对规则还可以包括:忽略节点的值,比较节点的类型,若类型相等,则两个节点相等。
根据本发明的一个实施方式,当节点为集合节点且集合节点中元素排列无序时,比对规则还可以包括:计算集合节点的长度,比较长度,若长度一致,则两个节点相等。
根据本发明的一个实施方式,当节点为集合节点且集合节点中元素个数随机时,比对规则还可以包括:计算集合节点的元素个数,比较元素个数,若元素个数相等,则两个节点相等。
根据本发明的一个实施方式,比对规则还可以包括:忽略比较特定名称的节点。
以上在结合图1、图2说明接口自动化测试方法200的具体描述中已经对各步骤中的相应处理进行了详细解释,这里不再对重复内容进行赘述。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下被实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员应当理解在本文所公开的示例中的设备的模块或单元或组件可以布置在如该实施例中所描述的设备中,或者可替换地可以定位在与该示例中的设备不同的一个或多个设备中。前述示例中的模块可以组合为一个模块或者此外可以分成多个子模块。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
本发明还包括:A6、如A4所述的方法,所述比对规则包括:忽略节点的类型;比较节点的值;若所述值相等,则两个节点相等。A7、如A4所述的方法,所述比对规则包括:忽略节点的值;比较节点的类型;若所述类型相等,则两个节点相等。A8、如A4所述的方法,当节点为集合节点且集合节点中元素排列无序时,所述比对规则包括:计算所述集合节点的长度;比较所述长度,若长度一致,则两个节点相等。A9、如A4所述的方法,当节点为集合节点且集合节点中元素个数随机时,所述比对规则包括:计算所述集合节点的元素个数;比较所述元素个数,若所述元素个数相等,则两个节点相等。A10、如A4所述的方法,所述比对规则包括:忽略比较特定名称的节点。
还包括:B15、如B14所述的装置,所述比对规则包括:比较节点的类型和值;若所述类型和值均相等,则两个节点相等。B16、如B14所述的装置,所述比对规则包括:忽略节点的类型;比较节点的值;若所述值相等,则两个节点相等。B17、如B14所述的装置,所述比对规则包括:忽略节点的值;比较节点的类型;若所述类型相等,则两个节点相等。B18、如B14所述的装置,当节点为集合节点且集合节点中元素排列无序时,所述比对规则包括:计算所述集合节点的长度;比较所述长度,若长度一致,则两个节点相等。B19、如权利要求14所述的装置,当节点为集合节点且集合节点中元素个数随机时,所述比对规则包括:计算所述集合节点的元素个数;比较所述元素个数,若所述元素个数相等,则两个节点相等。B20、如权利要求14所述的装置,所述比对规则包括:忽略比较特定名称的节点。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
此外,所述实施例中的一些在此被描述成可以由计算机系统的处理器或者由执行所述功能的其它装置实施的方法或方法元素的组合。因此,具有用于实施所述方法或方法元素的必要指令的处理器形成用于实施该方法或方法元素的装置。此外,装置实施例的在此所述的元素是如下装置的例子:该装置用于实施由为了实施该发明的目的的元素所执行的功能。
如在此所使用的那样,除非另行规定,使用序数词“第一”、“第二”、“第三”等等来描述普通对象仅仅表示涉及类似对象的不同实例,并且并不意图暗示这样被描述的对象必须具有时间上、空间上、排序方面或者以任意其它方式的给定顺序。
尽管根据有限数量的实施例描述了本发明,但是受益于上面的描述,本技术领域内的技术人员明白,在由此描述的本发明的范围内,可以设想其它实施例。此外,应当注意,本说明书中使用的语言主要是为了可读性和教导的目的而选择的,而不是为了解释或者限定本发明的主题而选择的。因此,在不偏离所附权利要求书的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。对于本发明的范围,对本发明所做的公开是说明性的,而非限制性的,本发明的范围由所附权利要求书限定。
Claims (15)
1.一种接口自动化测试方法,该方法包括:
向第一接口和第二接口发送测试请求;
接收第一接口和第二接口响应测试请求返回的第一JSON数据和第二JSON数据;
将第一JSON数据和第二JSON数据分别转化为第一字典对象和第二字典对象;
比对所述第一字典对象和第二字典对象,包括:
遍历所述第一字典对象和第二字典对象中各个节点,其中当访问第一字典对象中一个节点时,获取该节点在第一字典对象的key,而后查找第二字典对象中同样的key对应的节点;
根据节点类型选取相应的比对规则;
根据所述比对规则比对所述第一字典对象和第二字典对象中的对应节点是否相等,若不相等,则记录此节点;
所述比对规则至少包括以下之一:
比较节点的类型和值,若所述类型和值均相等,则两个节点相等;
当接口节点类型改变时,忽略节点的类型,比较节点的值,若所述值相等,则两个节点相等;
当节点不为固定值时,忽略节点的值,比较节点的类型,若所述类型相等,则两个节点相等。
2.如权利要求1所述的方法,所述向第一接口和第二接口发送测试请求的步骤之后,还包括:
接收第一接口和第二接口返回的响应状态码;
若响应状态码指示请求发送成功,则存储相应的接口地址和该接口返回的数据;
若响应状态码指示请求发送失败,则检测接口重发次数是否达到阈值;
若否,则重新发送测试请求,将该接口重发次数加1。
3.如权利要求2所述的方法,其中字典对象为dict类型对象,将第一JSON数据和第二JSON数据分别转化为第一字典对象和第二字典对象的步骤包括:
使用simplejson库中的loads方法将JSON数据转化为dict类型对象。
4.如权利要求3所述的方法,通过深度优先方法遍历所述第一字典对象和第二字典对象中各个节点,包括:
访问字典对象的出发节点,并将其标记为已访问过;
从出发点出发依次搜索所述出发节点的每个邻接节点;
若所述邻接节点未曾访问过,则以该邻接节点为新的出发节点继续进行深度优先方法进行遍历,直至所述字典对象中所有和出发节点有路径相通的节点均已被访问为止;
若所述字典对象中仍有未访问的节点,则另选一个尚未访问的节点作为新的出发点重复上述过程,直至所述字典对象中所有节点均已被访问为止。
5.如权利要求4所述的方法,当节点为集合节点且集合节点中元素排列无序时,所述比对规则包括:
计算所述集合节点的长度;
比较所述长度,若长度一致,则两个节点相等。
6.如权利要求4所述的方法,当节点为集合节点且集合节点中元素个数随机时,所述比对规则包括:
计算所述集合节点的元素个数;
比较所述元素个数,若所述元素个数相等,则两个节点相等。
7.如权利要求4所述的方法,所述比对规则包括:
忽略比较特定名称的节点。
8.一种接口自动化测试装置,该装置包括:
请求发送模块,适于向第一接口和第二接口发送测试请求;
响应接收模块,适于接收第一接口和第二接口响应测试请求返回的第一JSON数据和第二JSON数据;
比较模块,适于将第一JSON数据和第二JSON数据分别转化为第一字典对象和第二字典对象;
所述比较模块还适于比对所述第一字典对象和第二字典对象,包括:适于遍历所述第一字典对象和第二字典对象中各个节点,其中当访问第一字典对象中一个节点时,获取该节点在第一字典对象的key,而后查找第二字典对象中同样的key对应的节点;根据节点类型选取相应的比对规则,根据所述比对规则比对所述第一字典对象和第二字典对象中的对应节点是否相等,若不相等,则记录此节点;
其中,所述比对规则至少包括以下之一:
比较节点的类型和值,若所述类型和值均相等,则两个节点相等;
当接口节点类型改变时,忽略节点的类型,比较节点的值,若所述值相等,则两个节点相等;
当节点不为固定值时,忽略节点的值,比较节点的类型,若所述类型相等,则两个节点相等。
9.如权利要求8所述的装置,所述响应接收模块还适于接收第一接口和第二接口返回的响应状态码;若响应状态码指示请求发送成功,则存储相应的接口地址和该接口返回的数据;若响应状态码指示请求发送失败,则检测接口重发次数是否达到阈值;若否,则请求发送模块重新发送测试请求,将该接口重发次数加1。
10.如权利要求9所述的装置,其中字典对象为dict类型对象,所述比较模块还适于使用simplejson库中的loads方法将JSON数据转化为dict类型对象。
11.如权利要求10所述的装置,所述比较模块还适于通过深度优先方法遍历所述第一字典对象和第二字典对象中各个节点,包括:适于访问字典对象的出发节点,并将其标记为已访问过,从出发点出发依次搜索所述出发节点的每个邻接节点,若所述邻接节点未曾访问过,则以该邻接节点为新的出发节点继续进行深度优先方法进行遍历,直至所述字典对象中所有和出发节点有路径相通的节点均已被访问为止,若所述字典对象中仍有未访问的节点,则另选一个尚未访问的节点作为新的出发点重复上述过程,直至所述字典对象中所有节点均已被访问为止。
12.如权利要求11所述的装置,当节点为集合节点且集合节点中元素排列无序时,所述比对规则包括:
计算所述集合节点的长度;
比较所述长度,若长度一致,则两个节点相等。
13.如权利要求11所述的装置,当节点为集合节点且集合节点中元素个数随机时,所述比对规则包括:
计算所述集合节点的元素个数;
比较所述元素个数,若所述元素个数相等,则两个节点相等。
14.如权利要求11所述的装置,所述比对规则包括:
忽略比较特定名称的节点。
15.一种计算设备,包括如权利要求8-14中任一项所述的接口自动化测试装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610151154.XA CN105824752B (zh) | 2016-03-16 | 2016-03-16 | 一种接口自动化测试方法、装置和计算设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610151154.XA CN105824752B (zh) | 2016-03-16 | 2016-03-16 | 一种接口自动化测试方法、装置和计算设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105824752A CN105824752A (zh) | 2016-08-03 |
CN105824752B true CN105824752B (zh) | 2018-09-14 |
Family
ID=56524623
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610151154.XA Active CN105824752B (zh) | 2016-03-16 | 2016-03-16 | 一种接口自动化测试方法、装置和计算设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105824752B (zh) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106506199A (zh) * | 2016-10-21 | 2017-03-15 | 乐视控股(北京)有限公司 | 系统线上接口的自动监控方法及装置 |
CN106407123B (zh) * | 2016-11-09 | 2019-07-23 | 优酷网络技术(北京)有限公司 | 一种服务器接口的自动化测试方法及装置 |
CN107733894B (zh) * | 2017-10-19 | 2019-12-10 | 携程旅游网络技术(上海)有限公司 | 逻辑接口报文的比对方法、系统、设备及存储介质 |
CN110740071B (zh) * | 2018-07-18 | 2021-07-13 | 优信拍(北京)信息科技有限公司 | 一种网络接口监控的方法、装置及系统 |
CN109840265B (zh) * | 2018-12-26 | 2020-11-10 | 出门问问信息科技有限公司 | Json结构转换方法、装置、设备及存储介质 |
CN111562490B (zh) * | 2019-02-14 | 2023-01-20 | 深圳市汇顶科技股份有限公司 | 测试方法及系统 |
CN110445688B (zh) * | 2019-08-12 | 2021-04-23 | 珠海格力电器股份有限公司 | 基于数据收集的接口服务功能监测方法及系统 |
CN111131377B (zh) * | 2019-10-30 | 2022-05-24 | 苏州浪潮智能科技有限公司 | 一种http重试的方法和设备 |
CN112905930B (zh) * | 2019-12-04 | 2024-09-20 | 北京沃东天骏信息技术有限公司 | 一种接口请求重发方法和装置 |
CN113836041A (zh) * | 2021-11-17 | 2021-12-24 | 四川启睿克科技有限公司 | 一种提高自动化测试用例健壮性的方法 |
CN115373335B (zh) * | 2022-08-22 | 2024-09-17 | 深圳市汇川技术股份有限公司 | 扩展模块适配方法、装置、终端设备以及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102902619A (zh) * | 2011-07-29 | 2013-01-30 | 阿里巴巴集团控股有限公司 | Web应用程序的回归测试方法和装置 |
CN103379127A (zh) * | 2012-04-12 | 2013-10-30 | 阿里巴巴集团控股有限公司 | 服务器与客户端间的数据交互方法及装置 |
CN103399816A (zh) * | 2013-07-31 | 2013-11-20 | 上海云端广告有限公司 | 一种数据检查方法及装置 |
WO2014120128A1 (en) * | 2013-01-29 | 2014-08-07 | Hewlett-Packard Development Company, L.P. | Analyzing structure of web application |
-
2016
- 2016-03-16 CN CN201610151154.XA patent/CN105824752B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102902619A (zh) * | 2011-07-29 | 2013-01-30 | 阿里巴巴集团控股有限公司 | Web应用程序的回归测试方法和装置 |
CN103379127A (zh) * | 2012-04-12 | 2013-10-30 | 阿里巴巴集团控股有限公司 | 服务器与客户端间的数据交互方法及装置 |
WO2014120128A1 (en) * | 2013-01-29 | 2014-08-07 | Hewlett-Packard Development Company, L.P. | Analyzing structure of web application |
CN103399816A (zh) * | 2013-07-31 | 2013-11-20 | 上海云端广告有限公司 | 一种数据检查方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN105824752A (zh) | 2016-08-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105824752B (zh) | 一种接口自动化测试方法、装置和计算设备 | |
Robinson et al. | Graph databases: new opportunities for connected data | |
JP6626211B2 (ja) | ショートリンクを処理する方法及び装置並びにショートリンクサーバ | |
WO2019000710A1 (zh) | 页面加载方法、装置和电子设备 | |
CN110869925B (zh) | 搜索中的多个实体感知的预输入 | |
CN104424244B (zh) | 一种获取搜索结果的方法、装置与设备 | |
CN104243590B (zh) | 资源对象推荐方法和装置 | |
US10248550B2 (en) | Selecting a set of test configurations associated with a particular coverage strength using a constraint solver | |
CN103190115A (zh) | 基于语境进行搜索的方法和装置 | |
WO2017181866A1 (en) | Making graph pattern queries bounded in big graphs | |
CN108763274A (zh) | 访问请求的识别方法、装置、电子设备及存储介质 | |
CN109948122B (zh) | 输入文本的纠错方法、装置及电子设备 | |
CN109639636A (zh) | 业务数据转发、业务数据处理方法、装置及电子设备 | |
CN103020096A (zh) | 检索装置和检索方法 | |
US20180300336A1 (en) | Knowledge point structure-based search apparatus | |
US11948099B2 (en) | Knowledge graph weighting during chatbot sessions | |
CN107171889A (zh) | 网络应用接口的测试方法、装置及电子设备 | |
CN107240029A (zh) | 一种数据处理方法及装置 | |
KR20230095796A (ko) | 하이퍼그래프 콘볼루션 네트워크들을 통한 공동 개인맞춤형 검색 및 추천 | |
CN107357728A (zh) | 测试软件的方法和电子设备 | |
Arbula et al. | Pymote: High level python library for event-based simulation and evaluation of distributed algorithms | |
JP2019109782A (ja) | クエリ生成プログラム、クエリ生成方法およびクエリ生成装置 | |
US8949327B2 (en) | Method and device to provide trusted recommendations of websites | |
CN110048899A (zh) | 一种日志检测方法、装置、终端及服务器 | |
CN106951242A (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 |