接口测试脚本的生成方法及计算机可读存储介质与流程

文档序号:16667006发布日期:2019-01-18 23:20阅读:199来源:国知局
接口测试脚本的生成方法及计算机可读存储介质与流程

本发明涉及软件自动化测试领域,尤其涉及一种接口测试脚本的生成方法及计算机可读存储介质。



背景技术:

接口自动化测试时,需要根据测试文档预先对每个接口的请求类型、参数结构体断言、测试通用配置、测试用例等模块进行编码,然后再进行调试和自动化测试。但在自动化测试编码过程中,部分模块的代码结构相对固定、接口行为的描述类似,但又因为其接口内部定义,数据传递方法、请求类型和返回数据类型等差异,很多人会想到使用代码或者脚本自动生成的方式,来节约大量的脚本编写成本,但是目前已经有的代码生成方式,如使用笛卡尔积,生成的脚本数量都是爆炸性增长,每次进行需求变更,都会重新生成大量脚本,其实不但没有提高测试效率,反而降低了测试效率。

现有技术中,存在visualstudio单元测试工具,其实现单元测试的方法和流程如下:

(1)创建接口测试工程

在visualstudio中打开或创建一个c#项目,在解决方案中创建“单元测试项目”(也可直接创建单元测试项目,根据实际测试场景确定)。visualstudio会在单元测试项目中默认创建一个“unittest1.cs”模块,其中包含测试所需的测试用例类和方法:“testclass”和“testmethod”。

(2)在测试类方法中添加测试代码

对测试工程结构进行分层,在对应层级中添加待测项目的测试行为方法、测试配置等模块和代码。将自动创建的“unittest1.cs”模块文件修改为符合项目测试规范的模块名称,并在模块文件中测试“前置”和“后置”等处理。在“testmethod”中编写test-case代码和测试断言。

(3)执行测试

依次点击vs的菜单栏【测试】-->【窗口】-->【测试资源管理器】,打开测试资源管理器。在“测试资源管理器”中执行测试并查看测试结果。

但上述方法存在以下缺点:

缺点1:步骤(1)、(2)中,创建单元测试项目后,visualstudio只生成了一个文件名为“unittest1.cs”简单模板文件,对于软件测试人员来说,这个模板仅能取到编写测试代码时的参考作用,并未复用任何过去具有相似属性的接口的信息。

缺点2:每次进行新的测试自动化测试时,需要参考测试文档对单元测试工程代码重新设计,且设计过程中没有统一的代码开发标准。该单元测试工具只能支持visualstudio所包含的编程语言,对于不支持的语言不具备可复用性,且该工具只能应用于windows环境,不具备跨平台使用的能力。



技术实现要素:

本发明所要解决的技术问题是:提供一种接口测试脚本的生成方法及计算机可读存储介质,可提高接口测试脚本的生成效率,降低自动化测试成本。

为了解决上述技术问题,本发明采用的技术方案为:一种接口测试脚本的生成方法,包括:

分别根据各接口的特征数据,生成各接口的接口元数据向量,所述特征数据包括请求参数字段类型、关联接口数、操作步骤数、复合结构字段数、方法类别和响应参数字段类型;

对接口库进行分类,并分别根据各类接口库中各接口的接口元数据向量,计算得到各类接口库的均值向量和差异矩阵;

获取并解析待测试接口的接口配置声明文件,得到待测试接口的特征数据;

根据所述特征数据,生成所述待测试接口的接口元数据向量;

根据所述待测试接口的接口元数据向量以及各类接口库的均值向量和差异矩阵,分别计算待测试接口与各类接口库的差异度;

根据与待测试接口差异度最小的一类接口库对应的代码库,生成所述待测试接口的测试脚本。

本发明还涉及一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现如上所述的步骤。

本发明的有益效果在于:通过各接口的特征数据,生成各接口的接口元数据向量,再计算得到各类接口库的均值向量和差异矩阵,后续根据待测试接口的接口元数据向量与各类接口库的均值向量和差异矩阵,计算待测试接口与各类接口库的差异度,可获取差异度最小的接口库,从而复用已有接口的测试数据,可降低接口测试过程中的重复编码,加快接口测试脚本的生成效率,降低接口测试的成本;同时,基于均值向量和差异矩阵计算得到的差异度,可以保证最大概率得到近似代码段,可加快测试脚本的生成速率并可控制测试代码量。

附图说明

图1为本发明的一种接口测试脚本的生成方法的流程图;

图2为本发明实施例一的方法流程图。

具体实施方式

为详细说明本发明的技术内容、所实现目的及效果,以下结合实施方式并配合附图详予说明。

本发明最关键的构思在于:根据均值向量和差异矩阵,计算得到待测试接口与各类接口库的差异度,并根据差异度最小的接口库的代码库,生成测试脚本。

名词解释:

swagger服务:接口文档生成框架。用于生成、描述、调用和可视化restful风格的web服务,通过实时同步开发完成的项目接口服务,生成结构化的swagger.json数据和接口文档文件。

请参阅图1,一种接口测试脚本的生成方法,包括:

分别根据各接口的特征数据,生成各接口的接口元数据向量,所述特征数据包括请求参数字段类型、关联接口数、操作步骤数、复合结构字段数、方法类别和响应参数字段类型;

对接口库进行分类,并分别根据各类接口库中各接口的接口元数据向量,计算得到各类接口库的均值向量和差异矩阵;

获取并解析待测试接口的接口配置声明文件,得到待测试接口的特征数据;

根据所述特征数据,生成所述待测试接口的接口元数据向量;

根据所述待测试接口的接口元数据向量以及各类接口库的均值向量和差异矩阵,分别计算待测试接口与各类接口库的差异度;

根据与待测试接口差异度最小的一类接口库对应的代码库,生成所述待测试接口的测试脚本。

从上述描述可知,本发明的有益效果在于:可提高接口测试脚本的生成效率,降低自动化测试成本。

进一步地,所述分别根据各接口的特征数据,生成各接口的接口元数据向量具体为:

对参数类型进行编码;

根据接口接收的参数类型对应的编码,得到所述接口的请求参数字段类型顺序向量;

根据接口响应的参数类型对应的编码,得到所述接口的响应参数字段类型顺序向量;

根据接口关联的接口数量,得到所述接口的关联接口数;

根据接口需完成的操作的步骤数量,得到所述接口的操作步骤数;

根据接口中复合结构字段的数量,得到所述接口的复合结构字段数;

对方法类别进行编码;

根据接口请求的方法类别对应的编码,得到所述接口的方法类别编码;

根据接口的请求参数字段类型顺序向量、关联接口数、操作步骤数、复合结构字段数、方法类别编码和响应参数字段类型顺序向量,生成所述接口的接口元数据向量。

进一步地,所述分别根据各类接口库中各接口的接口元数据向量,计算得到各类接口库的均值向量和差异矩阵具体为:

对一类接口库中各接口的接口元数据向量进行平均值计算,得到所述一类接口库的均值向量;

根据第一公式,计算得到所述一类接口库的差异矩阵,所述第一公式为其中,n为所述一类接口库中接口的个数,xi为所述一类接口库中第i个接口的接口元数据向量,μ为所述一类接口库的均值向量。

进一步地,所述获取并解析待测试接口的接口配置声明文件,得到待测试接口的特征数据具体为:

获取待测试接口的接口配置声明文件,并对所述接口配置声明文件进行合法性验证;

若验证通过,则解析所述接口配置声明文件,得到待测试接口的特征数据。

由上述描述可知,通过对待测试接口的接口配置声明文件进行验证,保证接口配置声明文件的合法性和正确性。

进一步地,所述解析所述接口配置声明文件,得到待测试接口的特征数据具体为:

解析所述接口配置声明文件,得到待测试接口的接口参数数据,所述接口参数数据包括接口请求参数、接口返回参数和接口定义说明;

对参数类型进行编码;

根据所述接口请求参数,获取待测试接口接收的参数类型,并根据所述接收的参数类型对应的编码,得到待测试接口的请求参数字段类型顺序向量;

根据所述接口返回参数,获取待测试接口响应的参数类型,并根据所述响应的参数类型对应的编码,得到待测试接口的响应参数字段类型顺序向量;

根据所述接口请求参数和接口返回参数中复合结构字段的数量,得到待测试接口的复合结构字段数;

根据所述接口定义说明,得到待测试接口的关联接口数、操作步骤数和方法类别;

对方法类别进行编码;

根据所述方法类别对应的编码,得到待测试接口的方法类别编码。

进一步地,所述根据所述特征数据,生成所述待测试接口的接口元数据向量具体为:

根据所述待测试接口的请求参数字段类型顺序向量、关联接口数、操作步骤数、复合结构字段数、方法类别编码和响应参数字段类型顺序向量,生成待测试接口的接口元数据向量。

进一步地,所述根据所述待测试接口的接口元数据向量以及各类接口库的均值向量和差异矩阵,分别计算待测试接口与各类接口库的差异度具体为:

根据第二公式,计算得到所述待测试接口与一类接口库的差异度,所述第二公式为d(y,g)=(y-μ)a-1(y-μ)t,其中,g为所述一类接口库,y为所述待测试接口的接口元数据向量,μ为所述一类接口库的均值向量,a-1为所述一类接口库的差异矩阵的逆矩阵。

由上述描述可知,基于均值向量和差异矩阵计算得到的差异度,可以保证最大概率得到近似代码段。

本发明还提出一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现如上所述的步骤。

实施例一

请参照图2,本发明的实施例一为:一种接口测试脚本的生成方法,包括如下步骤:

s1:对接口库进行分类;具体地,可预先定义接口库的总体类别,然后按照流程类、参数类、操作类、多业务串联类进行分类。

s2:分别根据各接口的特征数据,生成各接口的接口元数据向量,所述特征数据包括请求参数字段类型、关联接口数、操作步骤数、复合结构字段数、方法类别和响应参数字段类型。

具体地,首先,对参数类型进行编码;优选地,从0开始编码,例如,可按如下顺序编码:int为0,float为1,string为2,list为4,dict为5;然后根据接口接收的参数类型对应的编码,得到所述接口的请求参数字段类型顺序向量;根据接口响应的参数类型对应的编码,得到所述接口的响应参数字段类型顺序向量。

同时,根据接口关联的接口数量,得到所述接口的关联接口数;根据接口需完成的操作的步骤数量,得到所述接口的操作步骤数;根据接口中复合结构字段的数量,得到所述接口的复合结构字段数。

同时,对方法类别进行编码;例如,get为1,post为2,put为3,delete为4,patch为5。然后根据接口请求的方法类别对应的编码,得到所述接口的方法类别编码。

最后,根据接口的请求参数字段类型顺序向量x1、关联接口数x2、操作步骤数x3、复合结构字段数x4、方法类别编码x5和响应参数字段类型顺序向量x6,生成所述接口的接口元数据向量x=(x1,x2,x3,x4,x5,x6)。

s3:分别根据各类接口库中各接口的接口元数据向量,计算得到各类接口库的均值向量和差异矩阵。

具体地,对一类接口库中各接口的接口元数据向量进行平均值计算,得到所述一类接口库的均值向量。

假设某一类接口库中有n个接口,其中,第i个接口的接口元数据向量为xi=(xi1,xi2,xi3,xi4,xi5,xi6);分别对这n个接口的接口元数据向量的每个分量计算均值,例如,第一个分量的均值为第二个分量的均值为以此类推,计算得到六个分量的均值后,即可得到该类接口库的均值向量

计算得到该类接口库的均值向量后,然后根据第一公式,计算得到该类接口库的差异矩阵,所述第一公式为其中,t表示转置。

s4:获取待测试接口的接口配置声明文件,并对所述接口配置声明文件进行合法性验证,判断是否验证通过,若是,则执行步骤s5,若否,则发出对应的错误警告。具体地,获取用户上传的待测试接口的接口配置声明文件,本实施例中,该上传的文件来源于swagger服务的swagger.json文件,在该文件中,以json格式详细描述了接口数据内容,包含接口请求类型参数(method)、接口请求参数(request)、接口返回参数(responses)、接口请求地址(api-path)、host(即待测试接口的url)等数据。对该文件进行合法性验证即验证其是否为合法的.json文件,并验证其中包含的method、request、responses、api-path、host等数据是否正确合法。

s5:解析所述接口配置声明文件,得到待测试接口的特征数据。

具体地,解析所述接口配置声明文件,得到待测试接口的接口参数数据,所述接口参数数据包括接口请求参数(request)、接口返回参数(responses)和接口定义说明。

然后根据所述接口请求参数,获取待测试接口接收的参数类型,并根据所述接收的参数类型对应的编码,得到待测试接口的请求参数字段类型顺序向量;根据所述接口返回参数,获取待测试接口响应的参数类型,并根据所述响应的参数类型对应的编码,得到待测试接口的响应参数字段类型顺序向量;其中,本步骤中,参数类型的编码同步骤s2中的对参数类型的编码。

同时,根据所述接口请求参数和接口返回参数中复合结构字段的数量,得到待测试接口的复合结构字段数。

同时,根据所述接口定义说明,得到待测试接口的关联接口数、操作步骤数和方法类别;即从接口定义说明中获取预设的关联接口数、操作步骤数和方法类别;然后根据所述方法类别对应的编码,得到待测试接口的方法类别编码。其中,本步骤中方法类别的编码同步骤s2中的对方法类别的编码。

s6:根据所述特征数据,生成所述待测试接口的接口元数据向量;具体地,根据所述待测试接口的请求参数字段类型顺序向量y1、关联接口数y2、操作步骤数y3、复合结构字段数y4、方法类别编码y5和响应参数字段类型顺序向量y6,生成待测试接口的接口元数据向量y=(y1,y2,y3,y4,y5,y6)。

s7:根据所述待测试接口的接口元数据向量以及各类接口库的均值向量和差异矩阵,分别计算待测试接口与各类接口库的差异度。

具体地,根据第二公式,计算得到所述待测试接口与一类接口库的差异度,所述第二公式为d(y,g)=(y-μ)a-1(y-μ)t,其中,g为所述一类接口库,y为所述待测试接口的接口元数据向量,μ为所述一类接口库的均值向量,a-1为所述一类接口库的差异矩阵的逆矩阵,t表示转置。

根据第二公式,即可分别计算得到待测试接口与各类接口库的差异度。

s8:根据与待测试接口差异度最小的一类接口库对应的代码库,生成所述待测试接口的测试脚本;即获取各类接口库中与所述待测试接口差异度最小的一类接口库,并根据所述一类接口库对应的代码库中的代码,生成所述待测试接口的测试脚本。

均值向量反应了一类接口库的整体水平,差异矩阵体现的是接口中信息之间的相关性,由于当接口量达到一定级别时,通过单纯的逐个接口的比对,将导致比对耗时无法接受,采用均值比对的话,可以得到相近的接口关系,但是又存在着距离度量差异,如复合结构字段数,变化有可能从100到200,而接口方法类别差异一般只会从1到4,这两个差异如果算入距离的话,有可能把接口方法类别的差异给缩小了,反而把复合结构字段的差异给放大了,因为数据量级不一样,这时就需要引入差异矩阵,将这些字段的差异进行了归一化处理,避免大差异吃掉小差异的状况出现。

因此,基于均值向量和差异矩阵计算得到的差异度,可以保证最大概率得到近似代码段,而不是每次都重新计算,这样一来,就加快了代码的生成速率和控制测试代码量,不仅加快了代码生成速度,还减少了要运行的代码,比传统的笛卡尔积代码生成法,得到了有效精简。

本实施例中,通过上传指定格式的接口配置声明文件,经服务端对各类接口库中的数据进行计算后,结合均值向量、差异矩阵,计算待测试接口与各类接口库的差异度信息,从而复用差异度最小的已有接口的测试数据。本实施例在一定程度上可降低自动化测试过程中的重复编码,加快测试脚本的生成效率,降低自动化测试成本。

实施例二

本实施例是实施例一的一具体应用场景。本实施例的方法可基于python的b/s架构设计和实现。

先初始化一个自动化测试工程,并导入基本的工程结构文件、测试配置文件和类模块等文件;然后配置python代码模板,并在所述代码模板中预设接口定义模块、接口结构定义和对象断言模块、测试用例模块和测试配置模块等模块结构。

其中,接口定义模块用于对被测试接口对象请求动作的封装,其中包含项目中所有接口请求方法的描述和定义。接口结构定义和对象断言模块用于对被测试接口参数结构的封装,其中包含项目中所有接口的request、response数据结构的描述和定义方法以及相应的结构对象断言方法。测试用例模块用于保存被测试接口对象的一级用例的测试代码,这其中的每个文件包含一个对应接口的通用一级测试case和断言代码;测试人员在进行测试自动化编码时可以参考该一级测试case和断言代码完成其他的接口自动化测试代码的编写。测试配置模块用于定义自动化测试时使用的测试环境、测试版本、测试集等配置;这些测试数据从用户上传的接口配置声明文件中提取,并根据模板格式写入。

在实施例一步骤s8生成测试脚本后,根据测试配置文件将测试脚本中的代码文件分别写入到上述自动化测试工程的对应模块中,即可生成一套完整的自动化测试工程。自动化测试人员可根据需要下载指定的测试模块或完整的测试工程包。在此基础上,继续完成剩余测试自动化代码的编写以及执行自动化测试。

本实施例中,通过将swagger接口文档文件上传至解析服务,经解析处理后直接生成测试所需的工程文件,而无需再手动编写或修改这些模块的代码,因此,自动化测试人员只需下载生成的测试工程,在并在此基础上扩展测试case,在测试case中直接声明和使用自动生成的代码模块,以及做好测试数据准备,即可直接开始接口测试,无需再关注其他模块内容。

如果项目环境变动,比如不再使用swagger文档描述被测对象,或者自动化测试程序语言变动,又或者自动化测试框架调整等。在以上变动中,只需调整代码模板,以及部分逻辑处理代码,即可兼容新的项目测试环境或新的自动化测试编程语言。

同时,根据不同的平台环境,可自由选择任何平台、任何平台所支持的语言完成测试的自动生成,通用性强。

实施例三

本实施例是对应上述实施例的一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现如下步骤:

分别根据各接口的特征数据,生成各接口的接口元数据向量,所述特征数据包括请求参数字段类型、关联接口数、操作步骤数、复合结构字段数、方法类别和响应参数字段类型;

对接口库进行分类,并分别根据各类接口库中各接口的接口元数据向量,计算得到各类接口库的均值向量和差异矩阵;

获取并解析待测试接口的接口配置声明文件,得到待测试接口的特征数据;

根据所述特征数据,生成所述待测试接口的接口元数据向量;

根据所述待测试接口的接口元数据向量以及各类接口库的均值向量和差异矩阵,分别计算待测试接口与各类接口库的差异度;

根据与待测试接口差异度最小的一类接口库对应的代码库中,生成所述待测试接口的测试脚本。

进一步地,所述分别根据各接口的特征数据,生成各接口的接口元数据向量具体为:

对参数类型进行编码;

根据接口接收的参数类型对应的编码,得到所述接口的请求参数字段类型顺序向量;

根据接口响应的参数类型对应的编码,得到所述接口的响应参数字段类型顺序向量;

根据接口关联的接口数量,得到所述接口的关联接口数;

根据接口需完成的操作的步骤数量,得到所述接口的操作步骤数;

根据接口中复合结构字段的数量,得到所述接口的复合结构字段数;

对方法类别进行编码;

根据接口请求的方法类别对应的编码,得到所述接口的方法类别编码;

根据接口的请求参数字段类型顺序向量、关联接口数、操作步骤数、复合结构字段数、方法类别编码和响应参数字段类型顺序向量,生成所述接口的接口元数据向量。

进一步地,所述分别根据各类接口库中各接口的接口元数据向量,计算得到各类接口库的均值向量和差异矩阵具体为:

对一类接口库中各接口的接口元数据向量进行平均值计算,得到所述一类接口库的均值向量;

根据第一公式,计算得到所述一类接口库的差异矩阵,所述第一公式为其中,n为所述一类接口库中接口的个数,xi为所述一类接口库中第i个接口的接口元数据向量,μ为所述一类接口库的均值向量。

进一步地,所述获取并解析待测试接口的接口配置声明文件,得到待测试接口的特征数据具体为:

获取待测试接口的接口配置声明文件,并对所述接口配置声明文件进行合法性验证;

若验证通过,则解析所述接口配置声明文件,得到待测试接口的特征数据。

进一步地,所述解析所述接口配置声明文件,得到待测试接口的特征数据具体为:

解析所述接口配置声明文件,得到待测试接口的接口参数数据,所述接口参数数据包括接口请求参数、接口返回参数和接口定义说明;

对参数类型进行编码;

根据所述接口请求参数,获取待测试接口接收的参数类型,并根据所述接收的参数类型对应的编码,得到待测试接口的请求参数字段类型顺序向量;

根据所述接口返回参数,获取待测试接口响应的参数类型,并根据所述响应的参数类型对应的编码,得到待测试接口的响应参数字段类型顺序向量;

根据所述接口请求参数和接口返回参数中复合结构字段的数量,得到待测试接口的复合结构字段数;

根据所述接口定义说明,得到待测试接口的关联接口数、操作步骤数和方法类别;

对方法类别进行编码;

根据所述方法类别对应的编码,得到待测试接口的方法类别编码。

进一步地,所述根据所述特征数据,生成所述待测试接口的接口元数据向量具体为:

根据所述待测试接口的请求参数字段类型顺序向量、关联接口数、操作步骤数、复合结构字段数、方法类别编码和响应参数字段类型顺序向量,生成待测试接口的接口元数据向量。

进一步地,所述根据所述待测试接口的接口元数据向量以及各类接口库的均值向量和差异矩阵,分别计算待测试接口与各类接口库的差异度具体为:

根据第二公式,计算得到所述待测试接口与一类接口库的差异度,所述第二公式为d(y,g)=(y-μ)a-1(y-μ)t,其中,g为所述一类接口库,y为所述待测试接口的接口元数据向量,μ为所述一类接口库的均值向量,a-1为所述一类接口库的差异矩阵的逆矩阵。

综上所述,本发明提供的一种接口测试脚本的生成方法及计算机可读存储介质,通过各接口的特征数据,生成各接口的接口元数据向量,再计算得到各类接口库的均值向量和差异矩阵,后续根据待测试接口的接口元数据向量与各类接口库的均值向量和差异矩阵,计算待测试接口与各类接口库的差异度,可获取差异度最小的接口库,从而复用已有接口的测试数据,可降低接口测试过程中的重复编码,加快接口测试脚本的生成效率,降低接口测试的成本;同时,基于均值向量和差异矩阵计算得到的差异度,可以保证最大概率得到近似代码段,可加快测试脚本的生成速率并可控制测试代码量。

以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等同变换,或直接或间接运用在相关的技术领域,均同理包括在本发明的专利保护范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1