首页 > 其他分享 >接口测试用例生成工具介绍及应用

接口测试用例生成工具介绍及应用

时间:2023-05-24 20:55:47浏览次数:44  
标签:例集 组装 接口 生成 用例 测试用例 参数 测试

目前,接口测试是开展项目测试实施过程中非常重要的环节,对于新增接口和修改接口更是需要做到应测必测,但是在实施过程中普遍存在一些问题,经分析总结如下:

1.耗时长: 接口测试整体流程较长,对每个字段都需要进行各种校验,且人工进行基础性字段验证的过程极为痛苦重复。

2.无数据留存: 每次接口测试所使用的完整的测试用例、测试数据、测试结果不易留存,不方便复测和排查问题。

3.容易遗漏: 纯手工测试,受制于测试人员的能力、经验,测试的覆盖度无从追溯,且枯燥乏味的字段校验极容易遗漏。

基于以上问题,我们需要研发一种可以通过预配置实现、基于经验积累、满足多种测试要求的接口测试工具。

工具实现思路
本章将通过对接口测试的步骤和用例组装过程进行拆分来介绍工具实现的总体思路。

图一 接口用例自动化生成的总体思路

工具将接口测试划分为三个阶段,分别为准备阶段、执行阶段以及后续工作。准备阶段主要是准备接口测试所需要素和配置,执行阶段主要为工具自动化执行生成测试用例、数据和接口测试的执行,后续工作主要为生成擎云所需要的自动化测试文件,对执行结果进行断言判断,手工录入tfs进行缺陷跟踪等。

其中,工具将接口测试的重点聚焦于接口测试的准备阶段,通过air接口文档或自定义格式接口文档进行,通过配置“用例集”与参数“组装规则”生成执行阶段所需要的完备测试用例与数据,然后通过工具自动进行执行。

图二 接口用例自动化生成的具体细节

工具将接口用例组装过程拆分成接口层、参数层、用例集组装层、兜底测试组装层、参数组装规则层这几部分,下面对这几层进行详细的介绍。

1.接口层:接口层中包含的是接口的整体信息,主要有接口的类型(post/get),接口所包含的参数,接口可能所需要的header头等信息。该部分信息可以通过读取air接口文档或自定义接口文档或者手工录入的方式进行维护。

2.参数层:该层聚焦于接口中的某个具体参数,如图二中的单个“phoneNo”参数,该层主要为了聚焦单个参数并将其送至后续的“用例集组装层”、“兜底测试组装层”进行衍生和变形。

3.用例集组装层:该层通过预先配置好的“用例集”对参数进行组装,从而生成单个参数所需要衍生出的测试用例与数据。譬如某条用例集“反例/首位为1,小于11位数字/1341111111”,那么工具会根据该条用例衍生出“phoneNo”:“1341111111”的数据和“被测接口phoneNo参数首位为1,小于11位数字”的反向测试用例。

参数与用例集的匹配有自选和工具根据参数名进行匹配两种方式,关于“用例集”这一概念的具体设计思路我们将在下文进行详细解释。

4.兜底测试组装层:所谓的兜底测试,就是指我们在接口测试中,需要反复的对每一个字段都进行测试的基础性验证。如参数为空、为空格的情况,参数超出和少于长度限制的情况,参数类型与规定类型不同的情况。该种验证极易检测出代码中的异常捕获缺失与代码异常错误泄露的缺陷,但人工进行该种检测极为枯燥重复,所以需要使用工具对参数进行兜底用例的衍生与测试。

兜底测试组装层的用例和数据的衍生规则与用例集组装层是类似的,不同的是兜底测试组装层会对每个参数都进行相应的兜底测试,兜底测试也不需要选择相应的用例集。

5.参数组装层:参数组装层主要是为了将参数层衍生出的众多单个参数的案例根据一定逻辑和规则组装到一起,最终形成完整的测试报文与测试案例,目前使用的参数组装规则主要有以下三种:控制变量法、正交法、parwise法。

关于“参数组装规则”这一概念的具体设计思路我们将在下文进行详细解释。

用例集
用例集是自动化接口测试的“血肉”,是完成数据预配置、经验积累的实现方式,是对接口数据进行衍生和测试的基础。用例集中包含了测试系统、参数属性、内容、用例内容的信息,下面我们对这几个字段进行详细解释。

图三 最小用例集

1.测试系统:标志了该用例集所在的测试系统,由于不同系统中所使用的测试数据、测试考量点不同,所以用例集需要根据系统对接口参数进行匹配,同时标识系统也方便了同系统的测试人员对数据进行分享和复用。

2.参数属性:标志了该用例集为参数类型还是参数名,如果为参数名的话,就当作普通的用例集对该参数名进行优先匹配,如果为参数类型的话,工具就会自动对该系统内该种参数类型的参数进行兜底测试。

3.内容:与参数属性相对应的参数名称或参数类型。

4.用例内容:包含了用例描述、正反向类型和测试数据。其中,测试数据为非必选项,如果测试数据为空的话,那么仅可以生成接口测试用例而不可以生成接口测试报文。

图四 不同接口测试维度的测试颗粒度与用例集维护难度关系图

工具生成用例的测试多样性和覆盖度离不开我们对用例集的设计。通常,我们设计接口测试用例集从以下三个角度进行。

1.兜底测试:指每个参数都需要进行校验的情况,如参数为空,参数过长等,该种情况往往通过设置参数类型的用例集和工具自动识别来进行测试,兜底测试的数据几乎不会改变,也不需要进行维护。

2.功能测试:指满足功能需求,有一定功能含义的测试用例,如对卡号这个参数来说,已销户的卡号对大多数交易来说就是一个有功能含义的反例,对于功能测试,大多数测试用例与数据是有一定的时效性和可复用性的,但对数据的维护仍需要一定成本,对于经常变动的数据,目前的解决方案是通过sql语句进行动态提取。

3.安全测试:满足横向越权、竖向越权等安全测试要求的测试用例,测试人员需要对越权类场景进行识别与设计,同时对越权测试所使用数据也需要进行精心的构造,一旦完成了对数据的构造,那么安全测试的测试用例和数据也可以看成一种特殊的“功能测试”添加进对应参数的用例集中。

参数组装规则
如果说用例集是自动化接口测试的“血肉”的话,参数组装规则就是自动化接口测试的“骨”,规则将各个参数所衍生出的用例根据一定的逻辑紧密联系到一起,最终形成覆盖度高却不冗余的测试用例。目前支持的规则主要有以下三种。

图五 使用控制变量法进行自动化接口测试

1.控制变量法:功能测试的经典方法,控制其他参数不变,修改某一参数进行衍生用例进行测试。

2.正交法:将所有单个参数衍生出的全部用例进行正交组合,可以覆盖测试中的所有情况。

3.Parwise法:基于Pairwise统计学的用例计算方法,原理为双因子之间进行正交,实际为对正交法的一种科学的裁剪,适合没有明确正反向的高效接口自动化测试。

推广使用效果
通过配置用例集我们实现了对测试经验的积累,对测试场景的全覆盖。通过配置用例生成规则,我们保证了生成用例的覆盖度高而又不冗余,最终完成我们对接口测试的高效率、高覆盖度、高质量的要求。

图六 部分系统推广使用效果图

该工具目前已在掌银信用卡频道、微银行信用卡模块、星云、PDS等26个系统模块中使用,共对304个接口生成测试用例3638条。

最后:这里有我建立的一个专门交流软件测试方面问题的学习群,里面也有很多大公司的技术大牛。很多时候,技术大牛的几句话就会让我们醍醐灌顶,少浪费时间,如果想要多跟有经验的人学习,就找我加入我的软件测试交流群,以后有工作的内推机会都相互推荐一下,毕竟我们是关系社会。

软件测试技术交流群社:786229024 等待你的加入... 大家可以一起探讨交流,共同学习软件测试技术、面试等软件测试方方面面,还会有免费直播课,收获更多测试技巧,我们一起进阶Python自动化测试/测试开发,走向高薪之路。

标签:例集,组装,接口,生成,用例,测试用例,参数,测试
From: https://www.cnblogs.com/ccssx/p/17429466.html

相关文章

  • 【IntelliJ IDEA】idea中的插件之一:Free Mybatis plugin跳转插件的使用(方便在Dao接口
    本文目录一、安装二、使用最近在使用一个非常好用的跳转插件,用着很顺手,效率比之前提高了很多。之前使用MyBatis框架或者是在IDEA中,发现Mapper接口和XML文件之间跳转十分的麻烦,我之前经常的操作是在Mapper接口中将接口名称复制一下,然后去查找对应的XML文件,打开后CRTL+F查找对应的xml......
  • fastposter v2.15.0 从繁琐到简单,简洁好用的海报生成器
    fastposterv2.15.0从繁琐到简单,简洁好用的海报生成器从繁琐到简单,简洁好用的海报生成器我很高兴向大家推荐一款令人兴奋的工具——Fastposter海报生成器。作为一名开发者,我们深知在项目中创建专业级海报的重要性,但常常面临时间和设计技能的限制。现在,Fastposter海报生成器为我们......
  • 调用EasyCVR平台base64编码接口转换图片,格式出现异常是什么原因?
    EasyCVR视频融合平台基于云边端智能协同架构,具有强大的设备接入、视频汇聚管理、全网分发、按需调阅、鉴权播放、智能分析等视频能力与服务。平台开放度高、兼容性强、可支持灵活拓展与第三方集成。有用户反馈,获取通道实时快照的返回结果,放到在线转换为图片的工具中出现了转换失败......
  • ubuntu下core file文件生成及调试
    1.简介:corefile是Linux下程序崩溃时生成的文件,可以用来分析程序崩溃的原因,因为它内部包含了程序崩溃时的堆栈信息。2.corefile的设置默认情况下,程序崩溃是不会生成corefile的,因为被操作系统限制。可以通过命令:ulimit-c来查看,如果值为0则表示被限制了,所以不能生成corefile文......
  • 淘宝京东1688拼多多商品详情API接口,关键词搜索,按图搜索,店铺所有商品
    商品详情API接口数据:淘宝提供了商品的基本信息,包括商品名称、描述、规格、价格、销量、库存等信息。此外,也可以通过淘宝提供的API接口来获取商品的图片、评价、物流信息等详细数据。item_get-获得京东商品详情请求参数(API接口接入点击上方API)请求参数:num_iid=10558877110参......
  • 1688阿里巴巴中国站按关键字搜索抓取新品数据API接口展示示例(封装可高并发)(Java系列)
    ​一、电商平台上新的重要性 电商平台上新非常重要。 首先,持续的新品上线可以吸引更多的用户访问平台和留存用户的兴趣。新品可以激发用户想要知道更多、购买更多的欲望,从而提高用户的使用频率和转化率。此外,新品上线也可以使电商平台更具竞争力,吸引更多的品牌入驻并增强......
  • fastposter v2.15.0 从繁琐到简单,简洁好用的海报生成器
    fastposterv2.15.0从繁琐到简单,简洁好用的海报生成器从繁琐到简单,简洁好用的海报生成器我很高兴向大家推荐一款令人兴奋的工具——Fastposter海报生成器。作为一名开发者,我们深知在项目中创建专业级海报的重要性,但常常面临时间和设计技能的限制。现在,Fastposter海报生成器为我......
  • 简单接口限流能力实现
    使用AOP注解方式在controller接口上实现的请求接口限流一:核心逻辑packagecom.simple.common.aop;importcom.simple.common.model.ErrorCode;importcom.simple.common.model.OperationRateLimit;importcom.simple.common.model.ServiceException;importcom.simple.comm......
  • Java如何生成随机数?要不要了解一下!
    前言我们在学习Java基础时就知道可以生成随机数,可以为我们枯燥的学习增加那么一丢丢的乐趣。本文就来介绍Java随机数。一、Random类介绍在Java中使用Random工具类来生成随机数,该类在java.util包下,在JDK1.0版本就存在了。Random单词本身就是随机、随意、任意的意思......
  • 通过商品API接口获取到数据后的分析和应用
    一、如果你想要分析商品API接口获取到的数据,可以按照如下的步骤进行:了解API接口返回值的格式,如JSON格式、XML格式、CSV格式等,选择适合你的数据分析方式。使用API请求工具(如Postman、curl)调用API接口,并接收HTTP响应。一般来说,API接口的访问需要使用APIKey等认证机制,需要提前......