CN115203061B - 接口自动化测试方法、装置、电子设备及存储介质 - Google Patents

接口自动化测试方法、装置、电子设备及存储介质 Download PDF

Info

Publication number
CN115203061B
CN115203061B CN202211118051.5A CN202211118051A CN115203061B CN 115203061 B CN115203061 B CN 115203061B CN 202211118051 A CN202211118051 A CN 202211118051A CN 115203061 B CN115203061 B CN 115203061B
Authority
CN
China
Prior art keywords
request
test
parameters
test case
response
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
Application number
CN202211118051.5A
Other languages
English (en)
Other versions
CN115203061A (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.)
GD Midea Heating and Ventilating Equipment Co Ltd
Shanghai Meikong Smartt Building Co Ltd
Original Assignee
GD Midea Heating and Ventilating Equipment Co Ltd
Shanghai Meikong Smartt Building Co 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 GD Midea Heating and Ventilating Equipment Co Ltd, Shanghai Meikong Smartt Building Co Ltd filed Critical GD Midea Heating and Ventilating Equipment Co Ltd
Priority to CN202211118051.5A priority Critical patent/CN115203061B/zh
Publication of CN115203061A publication Critical patent/CN115203061A/zh
Application granted granted Critical
Publication of CN115203061B publication Critical patent/CN115203061B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3684Test management for test design, e.g. generating new test cases
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3688Test 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)
  • Test And Diagnosis Of Digital Computers (AREA)

Abstract

本发明涉及接口测试技术领域,公开了一种接口自动化测试方法、装置、电子设备及存储介质,接口自动化测试方法包括:获取客户端应用的请求参数和服务器端的响应参数,并根据请求参数和响应参数生成多个测试用例,其中,服务器端的响应参数与客户端应用的请求参数相对应,确定每两个测试用例之间的请求参数距离和响应参数类型距离,根据请求参数距离和响应参数类型距离对多个测试用例进行分类,以获得测试用例集合,采用优化算法对测试用例集合进行处理,并根据处理后的测试用例集合对被测应用进行接口测试。根据本发明的接口自动化测试方法、装置、电子设备及存储介质,能够大幅减少测试人员的工作量,缩短测试周期,提高测试精度,节约时间成本。

Description

接口自动化测试方法、装置、电子设备及存储介质
技术领域
本发明涉及接口测试技术领域,尤其涉及一种接口自动化测试方法、装置、电子设备及存储介质。
背景技术
接口测试是测试系统组件间接口的一种测试,主要用于检测外部系统与系统之间以及内部各子系统之间的交互点。测试的重点是要检查数据的交换、传递和控制管理过程,以及系统间的相互逻辑依赖关系等。
在相关技术中,在进行接口测试之前,需要后端开发人员和测试人员根据不同的待测试接口类型和实现的功能编写测试用例,进而在接口测试时调用相应的测试用例。然而,人工进行测试用例的设计和编写需要耗费大量的时间,在版本快速迭代的情况下,需要对大量的测试用例进行频繁的更新,测试人员投入接口测试的时间被极大程度的压缩,以至于导致无法在当前迭代内完成满足当前迭代内需求的接口用例脚本的编写。因此,开发一种不需要人工编写测试用例的自动化接口测试方法十分必要。
发明内容
本发明旨在至少在一定程度上解决相关技术中的技术问题之一。为此,本发明的第一个目的在于提出一种接口自动化测试方法,该方法能够大幅减少测试人员的工作量,缩短测试周期,提高测试精度,节约时间成本。
本发明的第二个目的在于提出一种计算机可读存储介质。
本发明的第三个目的在于提出一种电子设备。
本发明的第四个目的在于提出一种接口自动化测试装置。
为达上述目的,本发明第一方面实施例提出了一种接口自动化测试方法,所述方法包括:获取客户端应用的请求参数和服务器端的响应参数,并根据所述请求参数和所述响应参数生成多个测试用例,其中,所述服务器端的响应参数与所述客户端应用的请求参数相对应;确定每两个所述测试用例之间的请求参数距离和响应参数类型距离;根据所述请求参数距离和所述响应参数类型距离对所述多个测试用例进行分类,以获得测试用例集合;采用优化算法对所述测试用例集合进行处理得到处理后的测试用例集合,并根据处理后的测试用例集合对被测应用进行接口测试。
根据本发明实施例的接口自动化测试方法,能够根据获取的客户端应用的请求参数和服务器端的响应参数自动生成测试用例,并通过优化算法提高测试用例的路径覆盖率,从而能够大幅减少测试人员的工作量,缩短测试周期,提高测试精度,节约时间成本。
在本发明的一些实施例中,所述获取客户端应用的请求参数和服务器端的响应参数,包括:在确定所述客户端应用的请求数据被允许记录时,根据所述请求数据获取所述请求参数,并根据所述服务器端响应所述请求数据的响应数据获取所述响应参数。
在本发明的一些实施例中,所述根据所述请求数据获取所述请求参数,包括:确定所述请求数据的请求类型;在所述请求类型为get请求时,通过所述请求数据的统一资源定位符获取所述请求参数;在所述请求类型为非get请求时,通过所述请求数据的请求体获取所述请求参数。
在本发明的一些实施例中,所述根据所述请求参数和所述响应参数生成多个测试用例,包括:过滤所述请求参数和所述响应参数中的重复内容和错误内容,并根据过滤后的请求参数和响应参数生成多个所述测试用例。
在本发明的一些实施例中,所述请求参数距离通过以下公式计算:
Figure 994655DEST_PATH_IMAGE001
,其中,
Figure 739757DEST_PATH_IMAGE002
为所述请求参数距离,x、y分别为两个测试用例的请求参数,
Figure DEST_PATH_IMAGE003
为所述两个测试用例的请求参数的交集的数量值,
Figure 238871DEST_PATH_IMAGE004
为所述两个测试用例的请求参数的并集的数量值。
在本发明的一些实施例中,所述响应参数类型距离通过以下公式计算:
Figure DEST_PATH_IMAGE005
,其中,
Figure 538266DEST_PATH_IMAGE006
为所述响应参数类型距离,
Figure DEST_PATH_IMAGE007
分别为两个测试用例的响应参数,
Figure 640083DEST_PATH_IMAGE008
分别为所述两个测试用例的响应参数的类型,
Figure DEST_PATH_IMAGE009
函数用于判断所述两个测试用例的响应参数的类型是否相等,若不等则所述响应参数类型距离的取值为1,若相等则所述响应参数类型距离的取值为0。
在本发明的一些实施例中,所述根据所述请求参数距离和所述响应参数类型距离对所述多个测试用例进行分类,包括:将所述请求参数距离小于等于第一阈值且所述响应参数类型距离小于等于第二阈值的测试用例合并为一类所述测试用例集合。
在本发明的一些实施例中,所述采用优化算法对所述测试用例集合进行处理得到处理后的测试用例集合,包括:生成步骤,对所述测试用例集合进行交叉处理和变异处理,以获得子代测试用例集合;选择步骤,确定所述子代测试用例集合中每个测试用例的适应度,并根据所述适应度确定所述子代测试用例集合中每个测试用例的轮盘选中概率,以及采用轮盘赌转法对所述子代测试用例集合中的测试用例进行选择,并将选择得到的测试用例确定为处理后的测试用例集合;迭代步骤,重复所述生成步骤和所述选择步骤,直至满足预先设置的停止条件。
为达上述目的,本发明第二方面实施例提出了一种计算机可读存储介质,其上存储有接口自动化测试程序,该接口自动化测试程序被处理器执行时,实现上述任一实施例所述的接口自动化测试方法。
根据本发明实施例的计算机可读存储介质,能够根据获取的客户端应用的请求参数和服务器端的响应参数自动生成测试用例,并通过优化算法提高测试用例的路径覆盖率,从而能够大幅减少测试人员的工作量,缩短测试周期,提高测试精度,节约时间成本。
为达上述目的,本发明第三方面实施例提出了一种电子设备,所述电子设备包括存储器、处理器及存储在存储器上并可在处理器上运行的接口自动化测试程序,所述处理器执行所述接口自动化测试程序时,实现上述任一实施例所述的接口自动化测试方法。
根据本发明实施例的电子设备,能够根据获取的客户端应用的请求参数和服务器端的响应参数自动生成测试用例,并通过优化算法提高测试用例的路径覆盖率,从而能够大幅减少测试人员的工作量,缩短测试周期,提高测试精度,节约时间成本。
为达上述目的,本发明第四方面实施例提出了一种接口自动化测试装置,所述装置包括:生成模块,用于获取客户端应用的请求参数和服务器端的响应参数,并根据所述请求参数和所述响应参数生成多个测试用例,其中,所述服务器端的响应参数与所述客户端应用的请求参数相对应;确定模块,用于确定每两个所述测试用例之间的请求参数距离和响应参数类型距离;分类模块,用于根据所述请求参数距离和所述响应参数类型距离对所述多个测试用例进行分类,以获得测试用例集合;测试模块,用于采用优化算法对所述测试用例集合进行处理得到处理后的测试用例集合,并根据处理后的测试用例集合对被测应用进行接口测试。
根据本发明实施例的接口自动化测试装置,能够根据获取的客户端应用的请求参数和服务器端的响应参数自动生成测试用例,并通过优化算法提高测试用例的路径覆盖率,从而能够大幅减少测试人员的工作量,缩短测试周期,提高测试精度,节约时间成本。
本发明附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。
附图说明
本申请的上述和/或附加的方面和优点从结合下面附图对实施例的描述中将变得明显和容易理解,其中:
图1是本发明一个实施例的接口自动化测试方法的流程示意图;
图2是本发明另一个实施例的接口自动化测试方法的流程示意图;
图3是本发明一个实施例的采用优化算法对测试用例集合进行处理的流程示意图;
图4是本发明一个实施例的生成测试用例模型中的测试用例的流程图;
图5是本发明另一个实施例的电子设备的结构框图;
图6是本发明一个实施例的接口自动化测试装置的结构框图。
具体实施方式
下面详细描述本发明的实施例,实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,旨在用于解释本发明,而不能理解为对本发明的限制。
下面参考附图描述本发明实施例的接口自动化测试方法、装置、电子设备及存储介质。
图1为本发明实施例的接口自动化测试方法的流程示意图,如图1所示,本发明实施例的接口自动化测试方法包括:
S11:获取客户端应用的请求参数和服务器端的响应参数,并根据请求参数和响应参数生成多个测试用例,其中,服务器端的响应参数与客户端应用的请求参数相对应;
S13:确定每两个测试用例之间的请求参数距离和响应参数类型距离;
S15:根据请求参数距离和响应参数类型距离对多个测试用例进行分类,以获得测试用例集合;
S17:采用优化算法对测试用例集合进行处理得到处理后的测试用例集合,并根据处理后的测试用例集合对被测应用进行接口测试。
根据本发明实施例的接口自动化测试方法,能够根据获取的客户端应用的请求参数和服务器端的响应参数自动生成测试用例,并通过优化算法提高测试用例的路径覆盖率,从而能够大幅减少测试人员的工作量,缩短测试周期,提高测试精度,节约时间成本。
具体地,请求参数包括但不限于应用名、请求类型、接口地址路径和传送参数等,其中,请求类型包括get类型和非get类型。可以理解的是,如果用户搜索张三,那么张三可以理解为传送参数。
响应参数包括但不限于响应状态和响应描述,其中,响应状态可包括200、404、502等状态码。可以理解的是,如果用户搜索张三,那么响应描述可以理解为与张三相关的返回数据,例如张三的出生日期、职业等。
客户端应用的请求参数和服务器端的响应参数可通过网关自动获取,也可通过客户端自动获取,在此不作限定。在一个例子中,在客户端与服务器端之间的网关中设置用例生成插件,用例生成插件用于在网关接收到客户端应用的请求数据时,根据请求数据获取请求参数,及用于在网关接收到服务器端响应该请求数据的响应数据时,根据该响应数据获取响应参数,如此,能够全面地获取请求参数和与其对应的响应参数。在另一个例子中,在客户端应用预先定义切面,通过切面将接口测试所需的请求参数和响应参数,按照一定的规则记录到预先设置的存储介质中,进而测试平台可通过对存储介质内各应用记录的接口数据进行解析发起接口测试。
进一步地,在步骤S13中,每两个测试用例之间的请求参数距离和响应参数类型距离可以使用jaccard相似度、dice相似度等进行计算。在步骤S17中,优化算法包括但不限于遗传算法、模拟退火算法、领域搜索算法、粒子群算法等。
在某些实施例中,将同一应用的全部接口的请求参数和响应参数存储在一起,并按照key为应用名、value为请求参数和响应参数的方式,生成每个应用的测试用例,然后在步骤S17中,存储全部应用的处理后的测试用例集合中的测试用例生成测试用例表。
在一个例子中,网关自动获取客户端应用的请求参数和服务器端的响应参数,并生成测试用例表存储在缓存中,在通过自动化测试软件手动发起接口测试或自动化测试软件自动发起接口测试时,测试软件执行如下步骤:
Q1、以应用名A作为标识与缓存中存储的测试用例表中各测试用例的key值进行匹配;
Q2、根据key值,从应用名A对应的测试用例中获取到该应用A的全部接口数据(响应参数+请求参数);
Q3、将应用A全部接口在缓存中对应的value值作为传参,调用抽象出来的公共方法发起请求并进行接口测试;
Q4、待得到接口响应后,公共方法将响应结果与预计结果进行断言,若一致,则测试通过,反之,则不通过,其中,预计结果为测试用例中响应参数表征的状态信息;
Q5、应用A的全部接口按照预先设置的顺序全部运行一遍;
Q6、在应用A的全部接口测试运行结束过后,生成自动化测试报告,以通过自动化测试报告展现本次运行的全部接口测试详情;
Q7、将自动化测试报告通过邮件的形式发送给相关干系人;
Q8、存储自动化测试报告,并对自动化测试报告中的数据进行加工,输出质量相关图表。
由此,不需要测试人员编写或更新测试用例,也不需要编写接口文档管理工具,减少了测试人员的工作量,降低了测试过程的时间成本,缩短了测试周期。
在本发明的一些实施例中,获取客户端应用的请求参数和服务器端的响应参数,包括:在确定客户端应用的请求数据被允许记录时,根据请求数据获取请求参数,并根据服务器端响应请求数据的响应数据获取响应参数。
如此,在保护隐私的前提下,根据客户端应用的请求数据和服务器端的响应数据获取请求参数和响应参数。
请结合图2,在一个例子中,在客户端与服务器端之间的网关中设置用例生成插件,当客户端中的任意应用经网关向服务器端发起任意请求时,用例生成插件在网关中获取客户端向服务器端发送的请求数据,并判断请求数据是否因包含敏感信息等原因不允许记录,若请求数据不允许记录,则直接跳过记录过程,即不获取此请求数据对应的请求参数和响应参数;反之,则根据请求数据获取请求参数,并在服务器端经网关响应客户端的应用请求时,从网关读取服务器端响应数据,根据响应数据获取响应参数。
在本发明的一些实施例中,根据请求数据获取请求参数,包括:确定请求数据的请求类型;在请求类型为get请求时,通过请求数据的统一资源定位符(Uniform ResourceLocator,URL)获取请求参数;在请求类型为非get请求时,通过请求数据的请求体获取请求参数。
可以理解的是,get请求通过URL来传递请求数据,因此,从URL中直接获取get请求对应的请求参数;而非get请求直接传递请求数据,因此,从请求体中获取非get请求对应的请求参数。
在本发明的一些实施例中,根据请求参数和响应参数生成多个测试用例,包括:过滤请求参数和响应参数中的重复内容和错误内容,并根据过滤后的请求参数和响应参数生成多个测试用例。
如此,能够保证测试用例中参数的准确性,进而保证接口测试结果的准确性和测试进度。
具体地,可采用解析算法对请求参数和响应参数进行建模,从而生成测试用例模型,测试用例模型包括多个测试用例。在某些实施例中,在将请求参数和响应参数存储在缓存中时,会采用加密算法对数据进行加密以保证安全性,因此,在解析前需要采用与该加密算法相对应的公钥或者私钥以及关键字符串进行解密。解密得到的数据可包含多层结构,每一层中又包括字符串、列表、字典等不同类型的元素。加密算法可包括对称加密(AES、DES)、非对称加密(RSA、ECC)、摘要算法(MD5、SHA)等。
进一步地,缓存内的请求参数和响应参数可包括http请求方法、请求头、query参数、rest参数等,解析算法用于通过遍历路径、过滤重复内容,从缓存的请求参数和响应参数中提取出不重复的请求参数和响应参数,需要说明的是,解析算法可以没有固定的结构,其只要能够满足上述所描述的从缓存的请求参数和响应参数中提取出不重复的请求参数和响应参数的作用即可作为该实施例的解析算法,不对其结构进行具体限定;解析算法还用于确定约束条件,并通过该约束条件过滤缓存的请求参数和响应参数中的错误内容,因为对于同一个接口,传入了不同的请求参数有可能给出不同的响应参数(比如报错信息);最后解析算法用于将不重复的、正确的请求参数和响应参数保存下来并形成测试用例模型。
在本发明的一些实施例中,请求参数距离通过以下公式计算:
Figure 36429DEST_PATH_IMAGE001
,其中,
Figure 847390DEST_PATH_IMAGE010
为请求参数距离,x、y分别为两个测试用例的请求参数,
Figure 165239DEST_PATH_IMAGE003
为所述两个测试用例的请求参数的交集的数量值,
Figure 211692DEST_PATH_IMAGE011
为所述两个测试用例的请求参数的并集的数量值。
如此,基于杰卡德(Jaccard)距离的原理计算请求参数距离,其中,
Figure 931387DEST_PATH_IMAGE012
可以用于表示杰卡德距离原理计算中的杰卡德相似系数,即两个测试用例的请求参数x和y之间交集的元素个数除以并集的元素个数所得到的值,该值可以用来度量两个测试用例的请求参数之间的相似性,而本实施例中的请求参数距离
Figure 159587DEST_PATH_IMAGE010
则可以用来度量两个测试用例的请求参数之间的差异性。
在本发明的一些实施例中,响应参数类型距离通过以下公式计算:
Figure 964732DEST_PATH_IMAGE013
,其中,
Figure 814876DEST_PATH_IMAGE006
为响应参数类型距离,
Figure 61181DEST_PATH_IMAGE014
分别为两个测试用例的响应参数,
Figure 276262DEST_PATH_IMAGE008
分别为所述两个测试用例的响应参数的类型,
Figure 365440DEST_PATH_IMAGE015
函数用于判断所述两个测试用例的响应参数的类型是否相等,若不等则所述响应参数类型距离的取值为1,若相等则所述响应参数类型距离的取值为0。
如此,基于海明距离的原理计算响应参数类型距离,具体地,在两个测试用例的响应参数的类型
Figure 956959DEST_PATH_IMAGE016
Figure 572617DEST_PATH_IMAGE017
不相等的情况下,则响应参数类型距离
Figure 958599DEST_PATH_IMAGE018
的取值为1,以此表示两个测试用例的响应参数的类型之间的差异性,在两个测试用例的响应参数的类型
Figure 800653DEST_PATH_IMAGE019
Figure 930283DEST_PATH_IMAGE020
相等的情况下,则响应参数类型距离
Figure 151180DEST_PATH_IMAGE006
的取值为0,以此表示两个测试用例的响应参数的类型之间的相似性。
在本发明的一些实施例中,根据请求参数距离和响应参数类型距离对多个测试用例进行分类,包括:将请求参数距离小于等于第一阈值且响应参数类型距离小于等于第二阈值的测试用例合并为一类测试用例集合。
具体地,在请求参数距离小于等于第一阈值且响应参数类型距离小于等于第二阈值时,可认为两个测试用例距离较近,而距离近的测试用例可认为是相似度高的测试用例,进而将相似度高的测试用例合并为一类测试用例集合,方便后续采用优化算法更好地提高测试用例的路径覆盖率。
在一个例子中,第一阈值取值范围为[0.1,0.2],第二阈值的取值范围为(0,1)。
在某些实施例中,将请求参数距离和响应参数类型距离转化为距离矩阵,进而以距离矩阵为依据,采用优化算法优化测试用例。
请结合图3,在本发明的一些实施例中,采用优化算法对测试用例集合进行处理得到处理后的测试用例集合,包括:
S171:生成步骤,对测试用例集合进行交叉处理和变异处理,以获得子代测试用例集合;
S173:选择步骤,确定子代测试用例集合中每个测试用例的适应度,并根据适应度确定子代测试用例集合中每个测试用例的轮盘选中概率,以及采用轮盘赌转法对子代测试用例集合中的测试用例进行选择,并将选择得到的测试用例确定为处理后的测试用例集合;
S175:迭代步骤,重复生成步骤和选择步骤,直至满足预先设置的停止条件。
如此,采用遗传算法对测试用例集合进行处理,根据适应度进行多次选择,保留更优秀的经过处理的测试用例,提高测试用例的路径覆盖率。
具体地,遗传算法中的交叉处理和变异处理借鉴了生物学的思想。子代测试用例集合中每个测试用例的适应度,与集合中测试用例的个数成反比,与路径覆盖率成正比。在某些实施例中,适应度
Figure 770380DEST_PATH_IMAGE021
通过以下公式进行计算:
Figure 771834DEST_PATH_IMAGE022
,其中,k为自适应调节常数,
Figure 892106DEST_PATH_IMAGE023
为同一集合中的某一测试用例i的贡献度,且
Figure 29826DEST_PATH_IMAGE024
,n为同一集合中的测试用例个数,m为测试用例i至少执行了一次的路径数,M为集合中执行全部测试用例的路径数,
Figure 85507DEST_PATH_IMAGE025
为路径覆盖率。对于测试用例个数多的子代测试用例集合,算法认为其中的个体贡献度小,适应度较低;同时还需要结合路径覆盖率,路径覆盖率高的测试用例集合适应度高。
进一步地,子代测试用例集合中每个测试用例的轮盘选中概率
Figure 574257DEST_PATH_IMAGE026
通过以下公式进行计算:
Figure 983372DEST_PATH_IMAGE027
,可以理解,在轮盘赌转法中,每个测试用例在轮盘上所占的扇形面积比例即为轮盘选中概率
Figure 241178DEST_PATH_IMAGE028
,每次选择时随机生成一个数,可以看成是轮盘的转动,转到哪个区域就是选择哪个测试用例参与后续的迭代,直至选出来的测试用例的个数达到生成步骤中的测试用例集合中测试用例的个数时进入迭代步骤。可以理解的是,如果生成步骤中的测试用例集合包括50个测试用例,那么在经过交叉处理和变异处理后得到的子代测试用例集合包括100个测试用例,为了不让测试用例的数量无限扩大下去,在轮盘赌转法中,仅从子代测试用例集合中选择50个测试用例用于进入迭代步骤。此外,由于在迭代次数较少时,测试用例的适应度普遍较低,无法反映测试用例的实际情况,此时如果直接基于适应度挑选适应度高的测试用例进行后续迭代,可能会导致错过较好的测试用例,因此采用轮盘赌转法进行随机选择。
预先设置的停止条件包括但不限于迭代次数达到设定次数、迭代时间达到设定时间或每个测试用例的适应度达到设定值。如此,通过反复迭代,最后得到的测试用例具有极高适应度。
在一个例子中,测试用例模型如图4所示,测试用例模型可包括开始节点、结束节点、动作节点以及判定节点,可以看作有向图,从开始节点到结束节点之间有不同的路径,每条路径都需要生成相应的测试用例。以图4为例,则M为15,如果执行开始→传入参数→是否收到确认应答→重传是否小于3次→结束路径,那么m为4。
在某些实施例中,在进行交叉处理和变异处理之前,方法还包括:初始化测试用例集合。具体地,对于测试用例模型中每一节点中的参数(接口测试过程中需要传入的请求参数),按照约束条件进行取值,例如,采用边界值法,找到有效值和无效值之间的分界点及两边的点作为传入的请求参数的值。
需要指出的是,上述所提到的具体数值只为了作为例子详细说明本发明的实施,而不应理解为对本发明的限制。在其它例子或实施方式或实施例中,可根据本发明来选择其它数值,在此不作具体限定。
为了实现上述实施例,本发明实施例还提出了一种计算机可读存储介质,其上存储有接口自动化测试程序,该接口自动化测试程序被处理器执行时,实现上述任一实施例的接口自动化测试方法。
为了实现上述实施例,本发明实施例还提出了一种电子设备,图5是本发明一个实施例的电子设备的结构框图。如图5所示,电子设备100包括存储器102、处理器104及存储在存储器102上并可在处理器104上运行的接口自动化测试程序106,处理器104执行接口自动化测试程序106时,实现上述任一实施例的接口自动化测试方法。
根据本发明实施例的电子设备100,能够根据获取的客户端应用的请求参数和服务器端的响应参数自动生成测试用例,并通过优化算法提高测试用例的路径覆盖率,从而能够大幅减少测试人员的工作量,缩短测试周期,提高测试精度,节约时间成本。
例如,接口自动化测试程序106被处理器104执行的情况下,实现以下接口自动化测试方法:
S11:获取客户端应用的请求参数和服务器端的响应参数,并根据请求参数和响应参数生成多个测试用例,其中,服务器端的响应参数与客户端应用的请求参数相对应;
S13:确定每两个测试用例之间的请求参数距离和响应参数类型距离;
S15:根据请求参数距离和响应参数类型距离对多个测试用例进行分类,以获得测试用例集合;
S17:采用优化算法对测试用例集合进行处理得到处理后的测试用例集合,并根据处理后的测试用例集合对被测应用进行接口测试。
为了实现上述实施例,本发明实施例还提出了一种接口自动化测试装置,图6是本发明一个实施例的接口自动化测试装置的结构框图。如图6所示,接口自动化测试装置300包括生成模块302、确定模块304、分类模块306和测试模块308。生成模块302用于获取客户端应用的请求参数和服务器端的响应参数,并根据请求参数和响应参数生成多个测试用例,其中,服务器端的响应参数与客户端应用的请求参数相对应。确定模块304用于确定每两个测试用例之间的请求参数距离和响应参数类型距离。分类模块306用于根据请求参数距离和响应参数类型距离对多个测试用例进行分类,以获得测试用例集合。测试模块308用于采用优化算法对测试用例集合进行处理得到处理后的测试用例集合,并根据处理后的测试用例集合对被测应用进行接口测试。
在本发明的一些实施例中,生成模块302还用于:在确定客户端应用的请求数据被允许记录时,根据请求数据获取请求参数,并根据服务器端响应请求数据的响应数据获取响应参数。
在本发明的一些实施例中,生成模块302还用于:确定请求数据的请求类型;在请求类型为get请求时,通过请求数据的统一资源定位符获取请求参数;在请求类型为非get请求时,通过请求数据的请求体获取请求参数。
在本发明的一些实施例中,生成模块302还用于:过滤请求参数和响应参数中的重复内容和错误内容,并根据过滤后的请求参数和响应参数生成多个测试用例。
在本发明的一些实施例中,请求参数距离通过以下公式计算:
Figure 467760DEST_PATH_IMAGE001
,其中,
Figure 178227DEST_PATH_IMAGE002
为请求参数距离,x、y分别为两个测试用例的请求参数,
Figure 640302DEST_PATH_IMAGE029
为所述两个测试用例的请求参数的交集的数量值,
Figure 18193DEST_PATH_IMAGE004
为所述两个测试用例的请求参数的并集的数量值。
在本发明的一些实施例中,响应参数类型距离通过以下公式计算:
Figure 150097DEST_PATH_IMAGE030
,其中,
Figure 613440DEST_PATH_IMAGE006
为响应参数类型距离,
Figure 364358DEST_PATH_IMAGE007
分别为两个测试用例的响应参数,
Figure 596756DEST_PATH_IMAGE008
分别为所述两个测试用例的响应参数的类型,
Figure 899562DEST_PATH_IMAGE031
函数用于判断所述两个测试用例的响应参数的类型是否相等,若不等则所述响应参数类型距离的取值为1,若相等则所述响应参数类型距离的取值为0。
在本发明的一些实施例中,分类模块306还用于:将请求参数距离小于等于第一阈值且响应参数类型距离小于等于第二阈值的测试用例合并为一类测试用例集合。
在本发明的一些实施例中,测试模块308还用于执行以下步骤:生成步骤,对测试用例集合进行交叉处理和变异处理,以获得子代测试用例集合;选择步骤,确定子代测试用例集合中每个测试用例的适应度,并根据适应度确定子代测试用例集合中每个测试用例的轮盘选中概率,以及采用轮盘赌转法对子代测试用例集合中的测试用例进行选择,并将选择得到的测试用例确定为处理后的测试用例集合;迭代步骤,重复生成步骤和选择步骤,直至满足预先设置的停止条件。
需要指出的是,上述对接口自动化测试方法的实施例和有益效果的解释说明,也适应本发明实施例的计算机可读存储介质、电子设备100及接口自动化测试装置300,为避免冗余,在此不作详细展开。
需要说明的是,在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。就本说明书而言,“计算机可读介质”可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。计算机可读介质的更具体的示例(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(RAM),只读存储器(ROM),可擦除可编辑只读存储器(EPROM或闪速存储器),光纤装置,以及便携式光盘只读存储器(CDROM)。另外,计算机可读介质甚至可以是可在其上打印所述程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得所述程序,然后将其存储在计算机存储器中。
应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
此外,本发明实施例中所使用的“第一”、“第二”等术语,仅用于描述目的,而不可以理解为指示或者暗示相对重要性,或者隐含指明本实施例中所指示的技术特征数量。由此,本发明实施例中限定有“第一”、“第二”等术语的特征,可以明确或者隐含地表示该实施例中包括至少一个该特征。在本发明的描述中,词语“多个”的含义是至少两个或者两个及以上,例如两个、三个、四个等,除非实施例中另有明确具体的限定。
尽管上面已经示出和描述了本发明的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在本发明的范围内可以对上述实施例进行变化、修改、替换和变型。

Claims (10)

1.一种接口自动化测试方法,其特征在于,包括:
获取客户端应用的请求参数和服务器端的响应参数,并根据所述请求参数和所述响应参数生成多个测试用例,其中,所述服务器端的响应参数与所述客户端应用的请求参数相对应;
确定每两个所述测试用例之间的请求参数距离和响应参数类型距离;
根据所述请求参数距离和所述响应参数类型距离对所述多个测试用例进行分类,以获得测试用例集合;
采用优化算法对所述测试用例集合进行处理得到处理后的测试用例集合,并根据处理后的测试用例集合对被测应用进行接口测试;
其中,所述采用优化算法对所述测试用例集合进行处理得到处理后的测试用例集合,包括:
生成步骤,对所述测试用例集合进行交叉处理和变异处理,以获得子代测试用例集合;
选择步骤,确定所述子代测试用例集合中每个测试用例的适应度,并根据所述适应度确定所述子代测试用例集合中每个测试用例的轮盘选中概率,以及采用轮盘赌转法对所述子代测试用例集合中的测试用例进行选择,并将选择得到的测试用例确定为处理后的测试用例集合,其中,适应度
Figure 87693DEST_PATH_IMAGE001
通过以下公式进行计算:
Figure 34921DEST_PATH_IMAGE002
,其中,k为自适应调节常数,
Figure 521135DEST_PATH_IMAGE003
为同一集合中的某一测试用例i的贡献度,且
Figure 590722DEST_PATH_IMAGE004
,n为同一集合中的测试用例个数,m为测试用例i至少执行了一次的路径数,M为集合中执行全部测试用例的路径数,
Figure 788485DEST_PATH_IMAGE005
为路径覆盖率;
迭代步骤,重复所述生成步骤和所述选择步骤,直至满足预先设置的停止条件,其中所述预先设置的停止条件包括迭代次数达到设定次数、迭代时间达到设定时间或每个所述测试用例的适应度达到设定值。
2.根据权利要求1所述的方法,其特征在于,所述获取客户端应用的请求参数和服务器端的响应参数,包括:
在确定所述客户端应用的请求数据被允许记录时,根据所述请求数据获取所述请求参数,并根据所述服务器端响应所述请求数据的响应数据获取所述响应参数。
3.根据权利要求2所述的方法,其特征在于,所述根据所述请求数据获取所述请求参数,包括:
确定所述请求数据的请求类型;
在所述请求类型为get请求时,通过所述请求数据的统一资源定位符获取所述请求参数;
在所述请求类型为非get请求时,通过所述请求数据的请求体获取所述请求参数。
4.根据权利要求1所述的方法,其特征在于,所述根据所述请求参数和所述响应参数生成多个测试用例,包括:
过滤所述请求参数和所述响应参数中的重复内容和错误内容,并根据过滤后的请求参数和响应参数生成多个所述测试用例。
5.根据权利要求1所述的方法,其特征在于,所述请求参数距离通过以下公式计算:
Figure 70562DEST_PATH_IMAGE006
其中,
Figure 37381DEST_PATH_IMAGE007
为所述请求参数距离,x、y分别为两个测试用例的请求参数,
Figure 277869DEST_PATH_IMAGE008
为所述两个测试用例的请求参数的交集的数量值,
Figure 697349DEST_PATH_IMAGE009
为所述两个测试用例的请求参数的并集的数量值。
6.根据权利要求1所述的方法,其特征在于,所述响应参数类型距离通过以下公式计算:
Figure 553091DEST_PATH_IMAGE010
其中,
Figure 187465DEST_PATH_IMAGE011
为所述响应参数类型距离,
Figure 395593DEST_PATH_IMAGE012
分别为两个测试用例的响应参数,
Figure 800904DEST_PATH_IMAGE013
分别为所述两个测试用例的响应参数的类型,
Figure 690363DEST_PATH_IMAGE014
函数用于判断所述两个测试用例的响应参数的类型是否相等,若不等则所述响应参数类型距离的取值为1,若相等则所述响应参数类型距离的取值为0。
7.根据权利要求1所述的方法,其特征在于,所述根据所述请求参数距离和所述响应参数类型距离对所述多个测试用例进行分类,包括:
将所述请求参数距离小于等于第一阈值且所述响应参数类型距离小于等于第二阈值的测试用例合并为一类所述测试用例集合。
8.一种计算机可读存储介质,其特征在于,其上存储有接口自动化测试程序,该接口自动化测试程序被处理器执行时,实现权利要求1-7中任一项所述的接口自动化测试方法。
9.一种电子设备,其特征在于,包括存储器、处理器及存储在存储器上并可在处理器上运行的接口自动化测试程序,所述处理器执行所述接口自动化测试程序时,实现权利要求1-7中任一项所述的接口自动化测试方法。
10.一种接口自动化测试装置,其特征在于,包括:
生成模块,用于获取客户端应用的请求参数和服务器端的响应参数,并根据所述请求参数和所述响应参数生成多个测试用例,其中,所述服务器端的响应参数与所述客户端应用的请求参数相对应;
确定模块,用于确定每两个所述测试用例之间的请求参数距离和响应参数类型距离;
分类模块,用于根据所述请求参数距离和所述响应参数类型距离对所述多个测试用例进行分类,以获得测试用例集合;
测试模块,用于采用优化算法对所述测试用例集合进行处理得到处理后的测试用例集合,并根据处理后的测试用例集合对被测应用进行接口测试;
所述测试模块具体用于执行:生成步骤,对所述测试用例集合进行交叉处理和变异处理,以获得子代测试用例集合;
选择步骤,确定所述子代测试用例集合中每个测试用例的适应度,并根据所述适应度确定所述子代测试用例集合中每个测试用例的轮盘选中概率,以及采用轮盘赌转法对所述子代测试用例集合中的测试用例进行选择,并将选择得到的测试用例确定为处理后的测试用例集合,其中,适应度
Figure 631774DEST_PATH_IMAGE001
通过以下公式进行计算:
Figure 214065DEST_PATH_IMAGE002
,其中,k为自适应调节常数,
Figure 919722DEST_PATH_IMAGE003
为同一集合中的某一测试用例i的贡献度,且
Figure 612871DEST_PATH_IMAGE004
,n为同一集合中的测试用例个数,m为测试用例i至少执行了一次的路径数,M为集合中执行全部测试用例的路径数,
Figure 877630DEST_PATH_IMAGE005
为路径覆盖率;
迭代步骤,重复所述生成步骤和所述选择步骤,直至满足预先设置的停止条件,其中所述预先设置的停止条件包括迭代次数达到设定次数、迭代时间达到设定时间或每个所述测试用例的适应度达到设定值。
CN202211118051.5A 2022-09-14 2022-09-14 接口自动化测试方法、装置、电子设备及存储介质 Active CN115203061B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211118051.5A CN115203061B (zh) 2022-09-14 2022-09-14 接口自动化测试方法、装置、电子设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211118051.5A CN115203061B (zh) 2022-09-14 2022-09-14 接口自动化测试方法、装置、电子设备及存储介质

Publications (2)

Publication Number Publication Date
CN115203061A CN115203061A (zh) 2022-10-18
CN115203061B true CN115203061B (zh) 2022-12-20

Family

ID=83572253

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211118051.5A Active CN115203061B (zh) 2022-09-14 2022-09-14 接口自动化测试方法、装置、电子设备及存储介质

Country Status (1)

Country Link
CN (1) CN115203061B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116049019B (zh) * 2023-03-29 2023-06-09 中诚华隆计算机技术有限公司 一种基于测试芯片对软件进行测试的方法及系统

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110377492B (zh) * 2018-04-12 2022-05-17 南京慕测信息科技有限公司 一种基于方法相似度的单元测试用例生成方法
CN109308266A (zh) * 2018-11-30 2019-02-05 北京微播视界科技有限公司 测试用例的构建方法、测试方法、装置、设备和介质
CN111400193B (zh) * 2020-04-10 2024-02-23 广东美的暖通设备有限公司 测试用例生成方法、装置、设备及存储介质
CN112769654A (zh) * 2021-01-21 2021-05-07 国网河南省电力公司电力科学研究院 一种基于遗传算法的Modbus TCP协议模糊测试方法
CN114968754A (zh) * 2021-02-26 2022-08-30 华为云计算技术有限公司 一种应用程序接口api测试方法以及装置
CN113051171B (zh) * 2021-04-08 2024-04-02 深圳赛安特技术服务有限公司 接口测试方法、装置、设备及存储介质
CN113342689A (zh) * 2021-07-01 2021-09-03 中诚信征信有限公司 一种接口的自动化测试方法、装置、电子设备及存储介质

Also Published As

Publication number Publication date
CN115203061A (zh) 2022-10-18

Similar Documents

Publication Publication Date Title
CN108073519B (zh) 测试用例生成方法和装置
CN101473301B (zh) 迭代静态和动态软件分析
CN108897691B (zh) 基于接口模拟服务的数据处理方法、装置、服务器和介质
US10726356B1 (en) Target variable distribution-based acceptance of machine learning test data sets
Krishna et al. Too much automation? The bellwether effect and its implications for transfer learning
US20080301486A1 (en) Customization conflict detection and resolution
CN110474900B (zh) 一种游戏协议测试方法及装置
Feitosa et al. Investigating the effect of design patterns on energy consumption
CN114117311B (zh) 数据访问风险检测方法、装置、计算机设备及存储介质
CN113114680B (zh) 用于文件上传漏洞的检测方法和检测装置
US8676627B2 (en) Vertical process merging by reconstruction of equivalent models and hierarchical process merging
CN115203061B (zh) 接口自动化测试方法、装置、电子设备及存储介质
CN110324416A (zh) 下载路径跟踪方法、装置、服务器、终端及介质
CN110688111A (zh) 业务流程的配置方法、装置、服务器和存储介质
US20120054724A1 (en) Incremental static analysis
CN106844219A (zh) 应用检测方法及应用检测装置
CN112685799B (zh) 设备指纹生成方法、装置、电子设备和计算机可读介质
CN108628863B (zh) 信息获取方法和装置
CN113517021A (zh) 一种癌症驱动基因预测方法
US8700542B2 (en) Rule set management
CN111338958A (zh) 一种测试用例的参数生成方法、装置及终端设备
Kim et al. Semiparametric transformation models for multiple continuous biomarkers in ROC analysis
CN114338846A (zh) 一种报文测试的方法及装置
CN113656354A (zh) 日志分类方法、系统、计算机设备和可读存储介质
JP5253298B2 (ja) Webアプリケーション診断装置、Webアプリケーション診断プログラム及びWebアプリケーション診断方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant