CN110471842A - 一种测试方法、装置及计算机可读存储介质 - Google Patents

一种测试方法、装置及计算机可读存储介质 Download PDF

Info

Publication number
CN110471842A
CN110471842A CN201910632928.4A CN201910632928A CN110471842A CN 110471842 A CN110471842 A CN 110471842A CN 201910632928 A CN201910632928 A CN 201910632928A CN 110471842 A CN110471842 A CN 110471842A
Authority
CN
China
Prior art keywords
interface
test
test data
mentioned
expected result
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.)
Pending
Application number
CN201910632928.4A
Other languages
English (en)
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.)
Ping An Puhui Enterprise Management Co Ltd
Original Assignee
Ping An Puhui Enterprise Management 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 Ping An Puhui Enterprise Management Co Ltd filed Critical Ping An Puhui Enterprise Management Co Ltd
Priority to CN201910632928.4A priority Critical patent/CN110471842A/zh
Publication of CN110471842A publication Critical patent/CN110471842A/zh
Pending legal-status Critical Current

Links

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)
  • Debugging And Monitoring (AREA)

Abstract

本申请提出一种测试方法及装置,该方法包括:获取待测接口的接口文档,上述接口文档包含输入参数信息和返回参数信息;根据上述输入参数信息生成测试数据;根据上述返回参数信息和上述测试数据生成上述测试数据的期望结果;根据上述接口文档生成接口脚本;通过所述测试数据和所述期望结果触发所述接口脚本,得到所述测试数据的响应结果,对所述响应和期望结果进行匹配得到测试结果。实施本申请,可以节省人力资源,提升测试数据的覆盖率,提升测试效率。

Description

一种测试方法、装置及计算机可读存储介质
技术领域
本发明涉及计算机领域,尤其涉及一种测试方法、装置及计算机可读存储介质。
背景技术
接口测试是测试系统组件间接口的一种测试。接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点。测试的重点是要检查数据的交换,传递和控制管理过程,以及系统间的相互逻辑依赖关系等。
目前,接口测试通过测试人员手动编写测试用例,需要针对各个场景编写测试用例,在使用场景很多的情况下,测试人员工作量大,测试效率低,容易出现遗漏。
发明内容
本申请提出一种测试方法及装置,可以节省人力资源,提升测试数据的覆盖率,提升测试效率。
第一方面,本申请提出一种测试方法,包括:
获取待测接口的接口文档,所述接口文档包含输入参数信息和返回参数信息;
根据所述输入参数信息生成测试数据;
根据所述返回参数信息和所述测试数据生成所述测试数据的期望结果;
根据所述接口文档生成接口脚本;
通过所述测试数据和所述期望结果触发所述接口脚本,得到所述测试数据的响应结果,对所述响应和期望结果进行匹配得到测试结果。
作为一种可选的实施方式,在所通过所述测试数据和所述期望结果触发所述接口脚本,得到所述测试数据的响应结果,对所述响应和期望结果进行匹配得到测试结果之前,所述方法还包括:
获取预存的测试数据样例模板和期望结果样例模板;
将测试数据和期望结果添加到对应的测试数据样例模板和期望结果样例模板中,以得到测试样例和期望结果样例;
所述通过所述测试数据和所述期望结果触发所述接口脚本,得到所述测试数据的响应结果,对所述响应和期望结果进行匹配得到测试结果,包括:
通过所述测试样例和所述期望结果样例触发所述接口脚本,得到所述测试数据的响应结果,对所述响应和期望结果进行匹配得到测试结果。
作为一种可选的实施方式,所述通过所述测试数据和所述期望结果触发所述接口脚本,得到所述测试数据的响应结果,对所述响应和期望结果进行匹配得到测试结果,包括:
调用所述待测接口,将所述测试数据作为所述待测接口的输入,得到上述待测接口的响应结果;
判断上述响应结果和所述期望结果是否匹配;
若所述响应结果与所述期望结果匹配,则输出正确结果报告;
若所述响应结果与所述期望结果不匹配,则输出错误结果报告。
作为一种可选的实施方式,所述接口文档还包括资源统一定位符URL、接口类型和请求方法;
所述根据所述接口文档生成接口脚本包括:
根据所述接口类型和请求方法确定接口脚本模板;
将所述输入参数信息、返回参数信息和URL添加到所述接口脚本模板中,生成所述接口脚本。
作为一种可选的实施方式,所述输入参数信息包括输入字段、输入字段描述、输入字段的类型和长度;
所述根据所述输入参数信息生成测试数据,包括:
根据所述输入字段、输入字段描述、输入字段的类型和长度确定所述输入字段的取值范围;
根据所述取值范围对所述输入字段的取值进行等价类划分,遍历每个输入字段的每个等价类生成所述测试数据。
作为一种可选的实施方式,根据所述输入字段、输入字段描述、输入字段的类型和长度确定所述输入字段的取值范围,包括:
根据所述输入字段、输入字段描述查找所述输入字段在数据库中存储的值;
若未查找到上述输入字段在所述数据库中存储的值,则根据所述输入字段的描述和所述输入字段的类型和长度自定义所述输入字段的值。
作为一种可选的实施方式,所述获取待测软件的接口文档,包括:
接收测试指令,所述测试指令包括所述接口文档的路径;
访问所述路径读取所述接口文档。
第二方面,本申请提出一种测试装置,包括:
获取单元,用于获取待测接口的接口文档,所述接口文档包含输入参数信息和返回参数信息;
测试数据生成单元,用于根据所述输入参数信息生成测试数据;
期望结果生成单元,用于根据所述返回参数信息和所述测试数据生成所述测试数据的期望结果;
脚本生成单元,用于根据所述接口文档生成接口脚本;
测试单元,用于通过所述测试数据和所述期望结果触发所述接口脚本,得到所述测试数据的响应结果,对所述响应和期望结果进行匹配得到测试结果。
作为一种可选的实施方式,所述获取单元,还用于获取预存的测试数据样例模板和期望结果样例模板;
所述测试装置还包括:
添加单元,用于将测试数据和期望结果添加到对应的测试数据样例模板和期望结果样例模板中,以得到测试样例和期望结果样例;
所述测试单元,用于通过所述测试样例和所述期望结果样例触发所述接口脚本,得到所述测试数据的响应结果,对所述响应和期望结果进行匹配得到测试结果。
作为一种可选的实施方式,所述测试单元包括:
调用子单元,用于调用所述待测接口,将所述测试数据作为所述待测接口的输入,得到上述待测接口的响应结果;
判断子单元,用于判断上述响应结果和所述期望结果是否匹配;
输出子单元,用于若所述响应结果与所述期望结果匹配,则输出正确结果报告;若所述响应结果与所述期望结果不匹配,则输出错误结果报告。
作为一种可选的实施方式,所述接口文档还包括资源统一定位符URL、接口类型和请求方法;
所述脚本生成单元包括:
第一确定子单元,用于根据所述接口类型和请求方法确定接口脚本模板;
添加子单元,用于将所述输入参数信息、返回参数信息和URL添加到所述接口脚本模板中,生成所述接口脚本。
作为一种可选的实施方式,所述输入参数信息包括输入字段、输入字段描述、输入字段的类型和长度;
所述测试数据生成单元包括:
第二确定子单元,用于根据所述输入字段、输入字段描述、输入字段的类型和长度确定所述输入字段的取值范围;
分类子单元,用于根据所述取值范围对所述输入字段的取值进行等价类划分,遍历每个输入字段的每个等价类生成所述测试数据。
作为一种可选的实施方式,所述第二确定子单元,用于根据所述输入字段、输入字段描述查找所述输入字段在数据库中存储的值;若未查找到上述输入字段在所述数据库中存储的值,则根据所述输入字段的描述和所述输入字段的类型和长度自定义所述输入字段的值。
作为一种可选的实施方式,所述获取单元,用于接收测试指令,所述测试指令包括所述接口文档的路径;访问所述路径读取所述接口文档。
第三方面,本申请提出一种测试装置,包括处理器和存储器;上述处理器和上述存储器通过总线相互连接;其中,上述存储器用于存储计算机程序,上述计算机程序包括程序指令,上述处理器被配置用于调用上述程序指令,执行如第一方面所示方法。
第四方面,本申请提出一种计算机可读存储介质,上述计算机可读存储介质存储有计算机程序,上述计算机程序包括程序指令,上述程序指令当被处理器执行时,使上述处理器执行如第一方面所示方法。
第五方面,本申请提供了一种包含程序指令的计算机程序产品,当其在计算机上运行时,使得计算机执行如第一方面所示的方法。
在本申请实施例中,测试端通过解析待测接口对应的接口文档,得到接口文档中的输入参数和返回参数等信息,然后根据解析得到的信息自动生成测试数据和期望结果,并根据接口文档中自动生成待测接口对应的接口脚本,最后将生成的测试数据和期望结果作为执行接口脚本时调用待测接口的输入,以得到测试结果。由于可以自动生成测试数据期望结果以及测试用的接口脚本,所以通过本申请实施例,可以节省人力资源,提升测试效率。
附图说明
为了更清楚地说明本申请实施例或背景技术中的技术方案,下面将对本申请实施例或背景技术中所需要使用的附图进行说明。
图1是本发明实施例提供的一种测试方法的示意流程图;
图2是本发明实施例提供的另一种测试方法的示意流程图;
图3是本发明实施例提供的一种测试装置的示意框图;
图4是本申请实施例提供的一种测试装置的结构示意图。
具体实施方式
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别不同的对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法或设备固有的其他步骤或单元。
接口测试是指对应用程序接口(API)进行测试,包括两类:一类是外部接口,即系统与系统之间的调用,例如淘宝订单系统和支付系统之间接口调用;一类是内部接口,是指上层服务对下层服务的调用或者是服务与服务之间的调用,例如业务层调用数据层,业务层是上层服务,数据层是下层服务,又例如选择商品和创建订单等。
接口测试的作用是重点检查各个接口之间的数据交换、传递和管理过程等工作是否正常。
图1是本申请提出的一种测试方法的流程图,上述方法包括:
101:测试端获取待测接口的接口文档,上述接口文档包含输入参数信息和返回参数信息。
在本申请实施例中,接口文档是指应用程序的开发人员提供的关于不同接口测试的接口参数,接口文档主要包括接口名称、接口类型、请求方法、URI、输入参数信息和返回参数信息等。请求方法通常包括:GET/PUT/POST/DELETE;URI为统一资源标识符(UniformResource Identifier,简称URI)是一个用于标识某一互联网资源名称的字符串,以/a开头,如果需要登录才能调用的接口(如新增、修改;前台的用户个人信息,资金信息等)后面需要加/u,即:/a/u;中间一般放表名或者能表达这个接口的单词;请求参数和返回参数通常包括:字段、说明、类型、备注、是否必填等信息。
以查看列表接口的接口文档为例,参考表1,表1为本申请实施例提供的查看列表接口的接口文档。在该查看列表接口的接口文档中包括了接口名称接、口类型、URL、传入参数、返回参数等信息;其中,该接口文档的请求方法为POST,接口类型为HTTP RESTFUL,输入参数包括reqeustTime(请求时间戳)、sign(签名)、depCode(营业组编码)、pageCount(获取数量)等,以及返回参数包括code(返回状态码)、message(返回信息)、data(返回具体业务信息)等。可以理解的是,该接口文档中还可以包括其他信息,例如接口对接人、调用者、code的具体编码含义等信息。
表1查看列表接口的接口文档
102:测试端根据上述输入参数信息生成测试数据。
其中,输入参数信息主要包括输入字段、输入字段描述、输入字段的类型和长度。其中,输入字段相当于待测接口需要输入的参数的参数名称,输入字段描述则相当于是对输入参数的功能限定的描述。
在本申请实施例中,在获取到待测接口的接口文档之后,测试端则对待测文档进行解析,得到接口文档中的输入参数信息,然后根据得到的输入参数信息生成测试时需要的测试数据。
103:测试端根据上述返回参数信息和上述测试数据生成上述测试数据的期望结果。
其中,上述,返回参数信息主要包括返回字段、返回字段描述、返回字段的类型和长度。其中,返回字段相当于待测接口针对输入参数返回的参数的参数名称,返回字段描述则相当于是对返回参数的功能限定的描述。
由于在对待测接口进行测试时,需要对接口针对输入参数的返回接口与输入参数的期望结果进行比对,以判断待测接口是否异常。因此在生成上述测试收据之后,测试端还需要的到与上述测试数据对应的期望结果。
在本申请实施例中,当生成上述测试数据之后,测试端根据上述接口文档中的返回参数信息以及该测试数据生成与该测试数据对应的期望结果。在根据上述接口文档中的返回参数信息以及该测试数据生成与该测试数据对应的期望结果时可以根据待测接口的类型来具体得到测试数据对应的期望结果。
104:测试端根据上述接口文档生成接口脚本。
在本申请实施例中,还可以根据接口文档中的信息自动生成用于测试的接口脚本。具体的,测试端从上述接口文档中解析出输入参数信息、返回参数信息、URL、接口类型以及请求方法,然后根据接口类型和请求方法获取预存的接口脚本模板,并将输入参数信息、返回参数信息、URL等信息添加到模板中,以得到上述待测接口的接口脚本。
105:通过上述测试数据和上述期望结果触发上述接口脚本,得到上述测试数据的响应结果,对上述响应和期望结果进行匹配得到测试结果。
在本申请实施例中,当测试端得到测试数据和对应的期望结果以及待测结构的接口脚本后,便通过上述测试数据和上述期望结果触发上述接口脚本,得到上述测试数据的响应结果,对上述响应和期望结果进行匹配得到测试结果。
具体的,测试端调用待测接口,并将上述测试数据作为上述待测接口的输入,得到上述待测接口的响应结果;接着判断上述响应结果和上述期望结果是否匹配;若上述响应结果与上述期望结果匹配,则输出正确结果报告;若上述响应结果与上述期望结果不匹配,则输出错误结果报告。
作为一种可选的实施方式,由于需要将测试数据和期望结果作为执行接口脚本时的输入。在此之前,需要将将测试数据和期望结果转换为代码能够识别的测试数据和期望结果。具体的,测试端获取预存的测试数据样例模板和期望结果样例模板,然后将测试数据和期望结果添加到对应的测试数据样例模板和期望结果样例模板中,以得到测试样例和期望结果样例,然后在执行接口脚本时,将测试样例和期望结果样例作为输入,以使接口脚本代码能够识别测试数据和期望结果。
在本申请实施例中,测试端通过解析待测接口对应的接口文档,得到接口文档中的输入参数和返回参数等信息,然后根据解析得到的信息自动生成测试数据和期望结果,并根据接口文档中自动生成待测接口对应的接口脚本,最后将生成的测试数据和期望结果作为执行接口脚本时调用待测接口的输入,以得到测试结果。由于可以自动生成测试数据期望结果以及测试用的接口脚本,所以通过本申请实施例,可以节省人力资源,提升测试效率。
图2是本申请提出的另一种测试方法的流程图,上述方法应用于测试端,上述测试端可以是台式电脑、笔记本电脑、工作站、平板电脑和手机等终端设备,上述终端设备上可以装载操作系统,可以安装和运行测试软件;上述方法包括:
201:测试端接收测试指令,上述测试指令包括待测接口的接口文档的保存路径;访问上述路径读取上述接口文档。
在本申请实施例中,当需要对待测接口进行测试时,启动上述测试端。在测试端启动完毕后,用户向上述测试端发起测试指令,该测试指令中包括待测接口的接口文档的保存路径,然后访问该路径读取指定路径中的接口文档。其中,上述接口文档可以有特定的后缀名。
其中,上述测试端可以输出操作界面,通过操作界面接收上述测试指令,上述测试指令包含上述待测文档的路径。其中,上述路径可以是相对路径,也可以是绝对路径。上述路径可以指向上述测试端本地的内存,也可以指向云端存储空间。在获得上述设置指令之后,上述测试端可以访问上述路径,读取上述接口文档。
202:测试端获取待测接口的接口文档,上述接口文档包含输入参数信息和返回参数信息。
在本申请实施例中,接口文档是指应用程序的开发人员提供的关于不同接口测试的接口参数,接口文档主要包括接口名称、接口类型、请求方法、URI、输入参数信息和返回参数信息等。
其中,输入参数信息主要包括输入字段、输入字段描述、输入字段的类型和长度。其中,输入字段相当于待测接口需要输入的参数的参数名称,输入字段描述则相当于是对输入参数的功能限定的描述。上述返回参数信息主要包括返回字段、返回字段描述、返回字段的类型和长度。其中,返回字段相当于待测接口针对输入参数返回的参数的参数名称,返回字段描述则相当于是对返回参数的功能限定的描述。
203:测试端根据输入参数信息中的输入字段、输入字段描述、输入字段的类型和长度确定上述输入字段的取值范围。
在本申请实施例中,在对待测接口进行测试之前,可以预先将接口需要输入的参数的取值范围存储在数据库中,然后在对待测接口进行测试时,就可以直接根据上述输入参数信息中输入字段和输入字段描述从数据库中获取输入字段(即输入参数)的取值范围。具体的,测试端可以根据输入字段以及输入字段的描述重数据库中查找到该输入字段,然后获取该输入字段存储的取值范围;若未查找到上述输入字段,即数据库中不存在上述输入字段的取值范围,则测试端根据该输入字段的描述和输入字段你的类型以及长度自定义该输入字段的取值范围。
204:测试端对上述输入字段的取值进行等价类划分,遍历每个输入字段的每个等价类生成上述测试数据。
由于在接口测试时,需要尽可能的覆盖所有的场景,且尽量避免不必要的重复测试,以提升测试效率。因此在生成测试数据时需要得到每个场景下的测试数据,且尽可能的避免同一个场景下生成多个数据,即避免在同一个场景下多次对等效的数据进行测试。为了达到这给目的,首先需要得到所有场景下的测试数据,即所有场景下每个输入参数的取值,然后去掉同一个场景下重复等效的测试数据,即使每个场景下保留一个有效的测试数据。具体的,测试端根据输入参数信息中的输入字段、输入字段描述以及输入字段的类型和长度来确定输入字段的取值范围,然后根据输入字段的取值范围对输入字段的取值进行等价类划分,并遍历每个输入字段的每个等价类以得到所有等价类的测试数据。
例如,假设上述待测是接口为登陆验证接口。输入字段包括账户名和密码,从场景的角度考虑对账户和密码连个输入字段进行等价了划分,账户名对应两个变量值,分别为正确和错误,即表征账户名的正确性和错误性;密码也对应两个变量名,分别为正确和错误,以表征密码的正确性和错误性。对各输入字段的各变量进行排列组合,可得到多组输入字段。即将账户名的正确、错误的变量值与密码的正确、错误的变量值进行排列,得到4种不同的组合。分别得到一组账户名和密码均正确的登录成功的测试场景,另外三组则为账户名和/或密码错误的登录失败的测试场景。此外,考虑到在对接口参数文档中各参数变量的各变量值进行排列组合生成测试数据时,可能出现重复的等效测试数据的情况,如出现两组账户名正确、密码错误。而对于账户名正确、密码错误的情形,测试时只需要输入一组正确的账户名和错误的密码,系统反馈登录失败,即可确定接口可实现账户名正确、密码错误的登录失败的场景,不需要通过两组来进行测试。此生成的两组重复的等效测试数据增加测试时的工作量,从而本实施例在得到输入字段的取值范围后,会根据输入字段的取值范围对输入字段的值进行等价类划分,并对每个等价来取其中一个输入字段的值来进行测试,可以提升测试的效率。
205:测试端根据上述返回参数信息和上述测试数据生成上述测试数据的期望结果。
由于在对待测接口进行测试时,需要对接口针对输入参数的返回接口与输入参数的期望结果进行比对,以判断待测接口是否异常。因此在生成上述测试收据之后,测试端还需要的到与上述测试数据对应的期望结果。
在本申请实施例中,当生成上述测试数据之后,测试端根据上述接口文档中的返回参数信息以及该测试数据生成与该测试数据对应的期望结果。在根据上述接口文档中的返回参数信息以及该测试数据生成与该测试数据对应的期望结果时可以根据待测接口的类型来具体得到测试数据对应的期望结果。
具体的,可以将待测接口划分为条件判断接口、数据查询接口以及逻辑运算接口三种类型的接口。
在待测接口为条件判断接口时,接口在接收到测试数据后,会根据测试数据中输入字段进行条件判断,然后返回相应结果码,通常涉及条件判断的接口有:用户鉴权接口、升级状态上报、密码修改/重置等接口。当生成这类条件判断接口的测试数据之后,则可以提取测试数据中的判断项,然后获取待测接口的判断条件,并根据判断条件和判断项的值来确定该测试数据的期望结果。
例如,假设待测接口为密码重置接口,该接口的功能为用户登录之后发起找回密码操作,用户输入邮箱信息后,应用中心将向平台服务器发送请求,平台服务器将随机为用户生成新的密码,发到用户的邮箱中。该接口的输入字段可以包括用户名userID、邮箱地址email、接口版本号version等。返回字段包括结果返回吗resultCode(返回200表示处理成功,返回300表示处理失败)。当得到该接口的测试数据后,测试端则提出判断项userID和email,然后获取该接口的判断条件:若userID和email匹配则返回处理成功,若userID和email不匹配则返回处理失败。因此,若测试数据中输入字段userID和email匹配,则对应的期望结果为200,若测试数据中输入字段userID和email不匹配,则期望结果为300。可以理解的是,改接口还包括其他异常情况的场景,例如用户ID不存在、不合法,邮箱输入格式错误、用户邮箱信息不存在或未激活等情况以及想用的判断条件,此处不在一一举出。
在待测接口为数据查询接口时,接口在接收到测试数据后,首先会验证测试是否合法,然后会根据测试数据的查询项查询数据库相应表中数据返回给客户端,通常涉及数据查询的接口有:用户基本资料/经验值/赛事信息查询、游戏列表获取、在线人数查询等接口。当生成这类数据查询接口的测试数据之后,测试端首先提取测试数据中的判断项,然后获取待测接口的判断条件,并根据判断条件和判断项的值来确定该测试数据是否合法,然后提取测试数据中的查询项,并根据查询项以及数据库中存储的数据来确定上述期望结果。
例如,假设待测接口为建立查询接口,该接口的功能为用户登录系统后,发起简历查询操作,用户输入查询条件信息后,该接口根据输入的查询条件从数据库中查询对应的简历并将查询到的简历反馈给用户。该接口的输入字段可以包括请求时间戳reqeustTtime、签名sign、营业组编码depCode、查看的简历时间resumeTime、面试流程状态interviewStatus等;返回字段包括返回状态码code(返回200表示处理成功,返回500表示系统异常等)、返回信息message、返回具体业务信息date、候选人信息records等。当该接口的到测试数据后,首先从输入字段中提取出判断项:sign;然后获取判断条件:若签名验证通过则从数据库中查询上述查询项对应的数据;接着从输入字段中提取出查询项:depCode、resumeTime和interviewStatus;最后根据查询项:depCode、resumeTime、interviewStatus和返回字段code、message、date、候选records以及数据库中的数据确定期望结果。例如,若查询成功则期望结果为:200和对应的具体业务信息和候选人信息,若查询失败则期望结果为:500。
在待测接口为逻辑运算接口时,接口在接收到测试数据后,会进行一系列逻辑运算,然后根据处理结果更新数据库中的数据,通常涉及逻辑运算的接口有:比赛成绩同步、商品支付、各种数据报表等接口。此接口比数据查询接口又更加复杂,除了用条件判断和数据查询类接口的策略对此接口进行测试用例设计之外,还需要验证对接口的算法规则进行检查。逻辑运算接口由于还涉及插入或更新数据库操作,因此测试时还需要考虑数据库特性,如数据精度问题,在MySQL数据库中,如果是浮点型数据,存入时会有精度误差(131072.32插入float(10,2)类型的数据会变为131072.31),因此对于需要用于金额计算、数据统计、成绩比较的数据,可以使用定点型。
具体的,当生成逻辑运算接口的测试数据之后,测试端除了从测试数据中提取判断项、查询项,以及获取判断条件等外,还需要从测试数据中提取逻辑运算项,以及获取逻辑运算项对应的逻辑运算规则。即在获得查询的数据后,还需要根据逻辑运算规则对获得的查询数据进行逻辑运算处理,以得到成功查询数据后的期望结果,可以理解的是该成功查询数据后的期望结果只是一种场景下的期望结果,还包括其场景下测试数据对应的期望结果,例如判断项判断失败场景下的期望结果等,此处不再一一列出。
206:测试端根据上述接口文档生成接口脚本。
在本申请实施例中,还可以根据接口文档中的信息自动生成用于测试的接口脚本。具体的,测试端从上述接口文档中解析出输入参数信息、返回参数信息、URL、接口类型以及请求方法,然后根据接口类型和请求方法获取预存的接口脚本模板,并将输入参数信息、返回参数信息、URL等信息添加到模板中,以得到上述待测接口的接口脚本。
207:测试端通过上述测试数据和上述期望结果触发上述接口脚本,得到上述测试数据的响应结果,对上述响应和期望结果进行匹配得到测试结果。
在本申请实施例中,当测试端得到测试数据和对应的期望结果以及待测结构的接口脚本后,便通过上述测试数据和上述期望结果触发上述接口脚本,得到上述测试数据的响应结果,对上述响应和期望结果进行匹配得到测试结果。
具体的,测试端调用待测接口,并将上述测试数据作为上述待测接口的输入,得到上述待测接口的响应结果;接着判断上述响应结果和上述期望结果是否匹配;若上述响应结果与上述期望结果匹配,则输出正确结果报告;若上述响应结果与上述期望结果不匹配,则输出错误结果报告。
作为一种可选的实施方式,由于需要将测试数据作为执行接口脚本时的输入。在此之前,需要将将测试数据转换为代码能够识别的测试数据。具体的,测试端获取预存的测试数据样例模板,然后将测试数据添加到对应的测试数据样例模板中,以得到测试样例。
以查看列表接口为例,该接口的接口文档的输入参数包括reqeustTime(请求时间戳)、sign(签名)、depCode(营业组编码)、pageCount(获取数量)等。当得到该接口的测试数据后,变获取测试数据样例模板:
{
"parameter-1":[
{
"parameter-11":"value-11",
"parameter-12":"value-12",
"parameter-13":"value-13",
"parameter-1n":"value-1n",
}],
"parameter-2":"value-2",
….
"parameter-n":"value-n",
};
其中,parameter表示输入参数信息中的字段,value表示字段对应的取值,若某个字段存在子字段,则子字段和子字段的取值用类似"parameter-11":"value-11"的方式表示。
然后,将测试数据添加到该测试数据样例模板中就可以得到测试数据样例:
作为一种可选的实施方式,由于需要将期望结果作为执行接口脚本时的输入。在此之前,需要将将期望结果转换为代码能够识别的期望结果样例。具体的,测试端获取预存的期望结果样例模板,然后将期望结果添加到对应的期望结果样例模板中,以得到期望结果样例。
还是以查看列表接口为例,该接口的接口文档的返回参数包括code(返回状态码)、message(返回信息)、data(返回具体业务信息)、总共条数total、每页条数size、总页数pages等。当得到该接口的期望结果后,变获取期望结果样例模板:
{
"parameter-1":[
{
"parameter-11":"value-11",
"parameter-12":"value-12",
"parameter-13":"value-13",
"parameter-1n":"value-1n",
}],
"parameter-2":"value-2",
….
"parameter-n":"value-n",
};
其中,parameter表示输入参数信息中的字段,value表示字段对应的取值,若某个字段存在子字段,则子字段和子字段的取值用类似"parameter-11":"value-11"的方式表示。
然后,将期望结果添加到该期望结果样例模板中就可以得到期望结果样例:
在本申请实施例中,在上述测试端得到上述测试样例和期望结果样例后,上述测试端则通过上述测试样例和上述期望结果样例触发上述接口脚本,得到上述测试数据的响应结果,对上述响应和期望结果进行匹配得到测试结果。
具体的,测试端调用待测接口,并将上述测试样例作为上述待测接口的输入,得到上述待测接口的响应结果;接着判断上述响应结果和上述期望结果样例是否匹配;若上述响应结果与上述期望结果样例匹配,则输出正确结果报告;若上述响应结果与上述期望结果样例不匹配,则输出错误结果报告。
在本申请实施例中,测试端通过解析待测接口对应的接口文档,得到接口文档中的输入参数和返回参数等信息,然后根据解析得到的信息自动生成测试数据和期望结果,并根据接口文档中自动生成待测接口对应的接口脚本,最后将生成的测试数据和期望结果作为执行接口脚本时调用待测接口的输入,以得到测试结果。由于可以自动生成测试数据期望结果以及测试用的接口脚本,所以通过本申请实施例,可以节省人力资源,提升测试效率。另外在生成测试数据时,获取所有场景下各个输入字段的取值,使得测试数据覆盖场景广,并对上述输入字段的取值进行等价类划分,遍历每个输入字段的每个等价类生成上述测试数据,避免对等效的测试数据进行重复测试,因此通过本申请实施例可以提升测试数据的覆盖率,以及进一步提升测试效率。
本发明实施例还提供一种测试装置300,该测试装置用于执行前述任一项的方法的单元。具体地,参见图3,图3是本发明实施例提供的一种测试装置的示意框图。本实施例的测试装置包括:获取单元301、测试数据生成单元302、期望结果生成单元303、脚本生成单元304、测试单元305。
获取单元301,用于获取待测接口的接口文档,上述接口文档包含输入参数信息和返回参数信息;
测试数据生成单元302,用于根据上述输入参数信息生成测试数据;
期望结果生成单元303,用于根据上述返回参数信息和上述测试数据生成上述测试数据的期望结果;
脚本生成单元304,用于根据上述接口文档生成接口脚本;
测试单元305,用于通过上述测试数据和上述期望结果触发上述接口脚本,得到上述测试数据的响应结果,对上述响应和期望结果进行匹配得到测试结果。
作为一种可选的实施方式,上述获取单元,还用于获取预存的测试数据样例模板和期望结果样例模板;
上述测试装置还包括:
添加单元,用于将测试数据和期望结果添加到对应的测试数据样例模板和期望结果样例模板中,以得到测试样例和期望结果样例;
上述测试单元,用于通过上述测试样例和上述期望结果样例触发上述接口脚本,得到上述测试数据的响应结果,对上述响应和期望结果进行匹配得到测试结果。
作为一种可选的实施方式,上述测试单元305包括:
调用子单元,用于调用上述待测接口,将上述测试数据作为上述待测接口的输入,得到上述待测接口的响应结果;
判断子单元,用于判断上述响应结果和上述期望结果是否匹配;
输出子单元,用于若上述响应结果与上述期望结果匹配,则输出正确结果报告;若上述响应结果与上述期望结果不匹配,则输出错误结果报告。
作为一种可选的实施方式,上述接口文档还包括资源统一定位符URL、接口类型和请求方法;
上述脚本生成单元304包括:
第一确定子单元,用于根据上述接口类型和请求方法确定接口脚本模板;
添加子单元,用于将上述输入参数信息、返回参数信息和URL添加到上述接口脚本模板中,生成上述接口脚本。
作为一种可选的实施方式,上述输入参数信息包括输入字段、输入字段描述、输入字段的类型和长度;
上述测试数据生成单元302包括:
第二确定子单元,用于根据上述输入字段、输入字段描述、输入字段的类型和长度确定上述输入字段的取值范围;
分类子单元,用于根据上述取值范围对上述输入字段的取值进行等价类划分,遍历每个输入字段的每个等价类生成上述测试数据。
作为一种可选的实施方式,上述第二确定子单元,用于根据上述输入字段、输入字段描述查找上述输入字段在数据库中存储的值;若未查找到上述输入字段在上述数据库中存储的值,则根据上述输入字段的描述和上述输入字段的类型和长度自定义上述输入字段的值。
作为一种可选的实施方式,上述获取单元301,用于接收测试指令,上述测试指令包括上述接口文档的路径;访问上述路径读取上述接口文档。
在本申请实施例中,测试端通过解析待测接口对应的接口文档,得到接口文档中的输入参数和返回参数等信息,然后根据解析得到的信息自动生成测试数据和期望结果,并根据接口文档中自动生成待测接口对应的接口脚本,最后将生成的测试数据和期望结果作为执行接口脚本时调用待测接口的输入,以得到测试结果。由于可以自动生成测试数据期望结果以及测试用的接口脚本,所以通过本申请实施例,可以节省人力资源,提升测试效率。另外在生成测试数据时,获取所有场景下各个输入字段的取值,使得测试数据覆盖场景广,并对上述输入字段的取值进行等价类划分,遍历每个输入字段的每个等价类生成上述测试数据,避免对等效的测试数据进行重复测试,因此通过本申请实施例可以提升测试数据的覆盖率,以及进一步提升测试效率。
请参阅图4,图4是本申请实施例提供的一种测试装置400的结构示意图,如图4所示,测试成装置400包括处理器、存储器、通信接口以及一个或多个程序,其中,上述一个或多个程序不同于上述一个或多个应用程序,且上述一个或多个程序被存储在上述存储器中,并且被配置由上述处理器执行。上述程序包括用于执行以下步骤的指令:获取待测接口的接口文档,上述接口文档包含输入参数信息和返回参数信息;根据上述输入参数信息生成测试数据;根据上述返回参数信息和上述测试数据生成上述测试数据的期望结果;根据上述接口文档生成接口脚本;通过上述测试数据和上述期望结果触发上述接口脚本,得到上述测试数据的响应结果,对上述响应和期望结果进行匹配得到测试结果。
应当理解,在本申请实施例中,所称处理器可以是中央处理单元(CentralProcessing Unit,CPU),该处理器还可以是其他通用处理器、数字信号处理器(DigitalSignal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
在本申请的另一实施例中提供一种计算机可读存储介质,上述计算机可读存储介质存储有计算机程序,上述计算机程序被处理器执行时实现:获取待测接口的接口文档,上述接口文档包含输入参数信息和返回参数信息;根据上述输入参数信息生成测试数据;根据上述返回参数信息和上述测试数据生成上述测试数据的期望结果;根据上述接口文档生成接口脚本;通过上述测试数据和上述期望结果触发上述接口脚本,得到上述测试数据的响应结果,对上述响应和期望结果进行匹配得到测试结果。
上述计算机可读存储介质可以是前述任一实施例上述的终端的内部存储单元,例如终端的硬盘或内存。上述计算机可读存储介质也可以是上述终端的外部存储设备,例如上述终端上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(SecureDigital,SD)卡,闪存卡(Flash Card)等。进一步地,上述计算机可读存储介质还可以既包括上述终端的内部存储单元也包括外部存储设备。上述计算机可读存储介质用于存储上述计算机程序以及上述终端所需的其他程序和数据。上述计算机可读存储介质还可以用于暂时地存储已经输出或者将要输出的数据。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、服务器和方法,可以通过其它的方式实现。例如,以上所描述的样本生成装置实施例仅仅是示意性的,例如,上述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口、样本生成装置或单元的间接耦合或通信连接,也可以是电的,机械的或其它的形式连接。
上述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本申请实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以是两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
上述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分,或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例上述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。

Claims (10)

1.一种测试方法,其特征在于,包括:
获取待测接口的接口文档,所述接口文档包含输入参数信息和返回参数信息;
根据所述输入参数信息生成测试数据;
根据所述返回参数信息和所述测试数据生成所述测试数据的期望结果;
根据所述接口文档生成接口脚本;
通过所述测试数据和所述期望结果触发所述接口脚本,得到所述测试数据的响应结果,对所述响应和期望结果进行匹配得到测试结果。
2.根据权利要求1所述的方法,其特征在于,在所通过所述测试数据和所述期望结果触发所述接口脚本,得到所述测试数据的响应结果,对所述响应和期望结果进行匹配得到测试结果之前,所述方法还包括:
获取预存的测试数据样例模板和期望结果样例模板;
将测试数据和期望结果添加到对应的测试数据样例模板和期望结果样例模板中,以得到测试样例和期望结果样例;
所述通过所述测试数据和所述期望结果触发所述接口脚本,得到所述测试数据的响应结果,对所述响应和期望结果进行匹配得到测试结果,包括:
通过所述测试样例和所述期望结果样例触发所述接口脚本,得到所述测试数据的响应结果,对所述响应和期望结果进行匹配得到测试结果。
3.根据权利要求1所述的方法,其特征在于,所述通过所述测试数据和所述期望结果触发所述接口脚本,得到所述测试数据的响应结果,对所述响应和期望结果进行匹配得到测试结果,包括:
调用所述待测接口,将所述测试数据作为所述待测接口的输入,得到上述待测接口的响应结果;
判断上述响应结果和所述期望结果是否匹配;
若所述响应结果与所述期望结果匹配,则输出正确结果报告;
若所述响应结果与所述期望结果不匹配,则输出错误结果报告。
4.根据权利要求1所述的方法,其特征在于,所述接口文档还包括资源统一定位符URL、接口类型和请求方法;
所述根据所述接口文档生成接口脚本包括:
根据所述接口类型和请求方法确定接口脚本模板;
将所述输入参数信息、返回参数信息和URL添加到所述接口脚本模板中,生成所述接口脚本。
5.根据权利要求1所述方法,其特征在于,所述输入参数信息包括输入字段、输入字段描述、输入字段的类型和长度;
所述根据所述输入参数信息生成测试数据,包括:
根据所述输入字段、输入字段描述、输入字段的类型和长度确定所述输入字段的取值范围;
根据所述取值范围对所述输入字段的取值进行等价类划分,遍历每个输入字段的每个等价类生成所述测试数据。
6.根据权利要求5所述的方法,其特征在于,根据所述输入字段、输入字段描述、输入字段的类型和长度确定所述输入字段的取值范围,包括:
根据所述输入字段、输入字段描述查找所述输入字段在数据库中存储的值;
若未查找到上述输入字段在所述数据库中存储的值,则根据所述输入字段的描述和所述输入字段的类型和长度自定义所述输入字段的值。
7.根据权利要求1-6任一项所述的方法,其特征在于,所述获取待测软件的接口文档,包括:
接收测试指令,所述测试指令包括所述接口文档的路径;
访问所述路径读取所述接口文档。
8.一种测试装置,其特征在于,包括用于执行如权利要求1-7任一权利要求所述的方法的单元。
9.一种测试装置,其特征在于,包括处理器、输入设备、输出设备和存储器,其中,所述存储器用于存储计算机程序,所述计算机程序包括程序指令,所述处理器被配置用于调用所述程序指令,用以执行如权利要求1-7任一项所述的方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行以实现权利要求1-7任意一项所述的方法。
CN201910632928.4A 2019-07-12 2019-07-12 一种测试方法、装置及计算机可读存储介质 Pending CN110471842A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910632928.4A CN110471842A (zh) 2019-07-12 2019-07-12 一种测试方法、装置及计算机可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910632928.4A CN110471842A (zh) 2019-07-12 2019-07-12 一种测试方法、装置及计算机可读存储介质

Publications (1)

Publication Number Publication Date
CN110471842A true CN110471842A (zh) 2019-11-19

Family

ID=68508567

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910632928.4A Pending CN110471842A (zh) 2019-07-12 2019-07-12 一种测试方法、装置及计算机可读存储介质

Country Status (1)

Country Link
CN (1) CN110471842A (zh)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110955600A (zh) * 2019-11-27 2020-04-03 中国银行股份有限公司 接口测试方法及装置
CN111143221A (zh) * 2019-12-28 2020-05-12 中国银行股份有限公司 一种测试方法及装置
CN111881021A (zh) * 2020-07-07 2020-11-03 上海中通吉网络技术有限公司 接口测试方法、装置和系统
CN111897712A (zh) * 2020-06-20 2020-11-06 中国建设银行股份有限公司 测试案例生成方法、装置、电子设备及可读存储介质
CN112395202A (zh) * 2020-11-26 2021-02-23 苏宁云计算有限公司 接口自动化测试方法、装置、计算机设备和存储介质
CN113282513A (zh) * 2021-06-28 2021-08-20 平安消费金融有限公司 接口测试案例的生成方法、装置、计算机设备及存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107797911A (zh) * 2016-09-02 2018-03-13 北京京东尚科信息技术有限公司 用于测试http接口的方法和装置
CN108415832A (zh) * 2018-02-07 2018-08-17 平安科技(深圳)有限公司 接口自动化测试方法、装置、设备及存储介质
CN109947646A (zh) * 2019-03-13 2019-06-28 平安信托有限责任公司 接口测试方法、装置、计算机设备和存储介质

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107797911A (zh) * 2016-09-02 2018-03-13 北京京东尚科信息技术有限公司 用于测试http接口的方法和装置
CN108415832A (zh) * 2018-02-07 2018-08-17 平安科技(深圳)有限公司 接口自动化测试方法、装置、设备及存储介质
CN109947646A (zh) * 2019-03-13 2019-06-28 平安信托有限责任公司 接口测试方法、装置、计算机设备和存储介质

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110955600A (zh) * 2019-11-27 2020-04-03 中国银行股份有限公司 接口测试方法及装置
CN110955600B (zh) * 2019-11-27 2023-11-10 中国银行股份有限公司 接口测试方法及装置
CN111143221A (zh) * 2019-12-28 2020-05-12 中国银行股份有限公司 一种测试方法及装置
CN111143221B (zh) * 2019-12-28 2024-01-30 中国银行股份有限公司 一种测试方法及装置
CN111897712A (zh) * 2020-06-20 2020-11-06 中国建设银行股份有限公司 测试案例生成方法、装置、电子设备及可读存储介质
CN111881021A (zh) * 2020-07-07 2020-11-03 上海中通吉网络技术有限公司 接口测试方法、装置和系统
CN112395202A (zh) * 2020-11-26 2021-02-23 苏宁云计算有限公司 接口自动化测试方法、装置、计算机设备和存储介质
CN112395202B (zh) * 2020-11-26 2023-04-14 深圳市云网万店科技有限公司 接口自动化测试方法、装置、计算机设备和存储介质
CN113282513A (zh) * 2021-06-28 2021-08-20 平安消费金融有限公司 接口测试案例的生成方法、装置、计算机设备及存储介质

Similar Documents

Publication Publication Date Title
CN110471842A (zh) 一种测试方法、装置及计算机可读存储介质
CN111177005B (zh) 业务应用的测试方法、装置、服务器和存储介质
CN105099811B (zh) 一种接口测试方法和装置
US8495718B2 (en) Authentication method and apparatus
CN110554958B (zh) 图数据库测试方法、系统、设备和存储介质
CN109040329B (zh) 联系人标签的确定方法、终端设备及介质
CN108628748B (zh) 自动化测试管理方法和自动化测试管理系统
US10452522B1 (en) Synthetic data generation from a service description language model
CN110362473A (zh) 测试环境的优化方法及装置、存储介质、终端
CN109740129B (zh) 基于区块链的报表生成方法、装置、设备及可读存储介质
CN114116496A (zh) 自动化测试方法、装置、设备及介质
CN110415044A (zh) 作弊检测方法、装置、设备及存储介质
CN110120971A (zh) 一种灰度发布方法、装置及电子设备
CN110764996A (zh) 一种契约测试方法、系统、存储介质及终端设备
CN112433936A (zh) 测试方法、装置及存储介质
CN111932076A (zh) 一种规则配置和发布方法、装置及计算设备
CN116700778A (zh) 接口差异分析方法、设备、存储介质及装置
CN113704123B (zh) 接口测试方法、装置、设备以及存储介质
CN117131545A (zh) 数据处理方法及装置、存储介质、终端
CN112597036A (zh) 一种通用测试挡板方法及装置
CN112131100A (zh) 一种基于元数据的前后端校验方法及装置
CN113485942B (zh) 一种基于独立模块的自动化测试方法及装置
CN110717748A (zh) 一种网络支付的方法以及相关设备
CN114020365B (zh) 流计算处理引擎的参数配置方法和相关设备
CN110287191B (zh) 数据对齐方法及装置、存储介质、电子装置

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