背景

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

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条。


资源分享

下方这份完整的软件测试视频学习教程已经上传CSDN官方认证的二维码,朋友们如果需要可以自行免费领取 【保证100%免费】

接口测试用例生成工具介绍及应用相关推荐

  1. 基于bboss开发平台eclipse开发工程生成工具介绍

    为什么80%的码农都做不了架构师?>>>    基于bboss开发平台eclipse开发工程生成工具介绍 一.工具简介   bboss开发平台发布出两个资源包:  war部署包  数 ...

  2. python接口自动化--接口测试工具介绍(详解)

    目录 简介 接口测试工具 1.Fiddler 2.PostMan 4.Java代码做接口测试 5.Python代码做接口测试 6.LoadRunner 7.JMeter 总结 简介 "工欲善 ...

  3. Ed2k链接生成工具介绍

    1.ed2k_hash 链接:http://ed2k-tools.sourceforge.net/ed2k_hash.shtml 介绍:包含命令行程序及gui程序,能批量生成链接. 2.LinkCre ...

  4. 生成微信支付接口的签名工具

    <signCreateUtil>package com.*.utilsTest;import java.security.MessageDigest; import java.util.* ...

  5. 软件测评师--第21小时 测试工具介绍

    配置/过程管理工具 TestDirector   测试管理系统 AllChange      变更管理和配置管理集成一体 IRqA           需求管理工具 DOORS          需求 ...

  6. soapui工具_python接口自动化(四)--接口测试工具介绍(详解)

    简介 "工欲善其事必先利其器",通过前边几篇文章的介绍,大家大致对接口有了进一步的认识.那么接下来让我们看看接口测试的工具有哪些. 目前,市场上有很多支持接口测试的工具.利用工具进 ...

  7. python接口自动化(四)--接口测试工具介绍(详解)

    简介 "工欲善其事必先利其器",通过前边几篇文章的介绍,大家大致对接口有了进一步的认识.那么接下来让我们看看接口测试的工具有哪些. 目前,市场上有很多支持接口测试的工具.利用工具进 ...

  8. 有了这些接口测试用例+工具,测试效率想不提升都难

    写在前面:在日常开发过程中,有人做前端开发,有人负责后端开发.接口的主要作用就是连接前后台.但是,由于前端和后端开发的速度可能不一样,尤其是后端开发好了,但前端还未开发.这种时候我们需要做接口测试吗? ...

  9. 【1个月快速学习自动化测试】接口自动化测试(4) —— 接口自动化测试工具介绍

    接口测试的全称是应用程序编程接口(API)测试,从原理上来说,接口测试是模拟客户端向服务器端发送请求,然后检查能否获得正确的返回信息.接口测试用于测试RESTful API.SOAP Web服务,这些 ...

  10. 为啥要做接口测试?接口测试用例怎么写?哪些工具可以用?

    原文链接https://blog.csdn.net/u011541946/article/details/77745217 目录 1. 为什么要做接口测试 2.什么是接口测试 3.接口的分类 HTTP ...

最新文章

  1. [CF587F]Duff is Mad[AC自动机+根号分治+分块]
  2. python如何去掉方括号_python从入门到实战外星人入侵
  3. 为什么说多道程序概念得到了中断和通道技术的支持?
  4. Oracle使用startup与startup force启动的区别
  5. 在c语言中文件的指针是什么,C语言中文件描述符和文件指针的本质区别
  6. 论文必备神器,1行代码搞定Latex公式编写,这个4.6M的Python小插件
  7. LCFinder 0.3.0 Beta 发布,图像标注与目标检测工具
  8. 昆仑通态9针通讯口定义_昆仑通态触摸屏与常见PLC的连接方法(3)——OmronHostLink...
  9. Bugfree安装与使用
  10. exam1802 Bounty Hunter II(DAG的最小路径覆盖)
  11. 手机突然变卡,不得不重置
  12. 控件Repeater的嵌套使用
  13. WPF解析Fnt字体
  14. NIO消息边界问题处理
  15. 渗透测试-----ARP攻击
  16. java进度条_Java web实时进度条整个系统共用(如java上传、下载进度条、导入、导出excel进度条等)...
  17. cad特性匹配快捷键命令_CAD复制图形或特性的相关命令和操作
  18. 春晚郎朗宋祖英不合作 本山欲请张艺谋导演小品
  19. ANSYS FLUENT二维结构网络数值计算及后处理——流动传热
  20. CAD怎么打印彩色图纸

热门文章

  1. 如何部署局域网即时通讯软件
  2. visio中公式太小_多元醇羟值、羟基含量与分子量之间的关系及计算公式
  3. AmazeUI 离线文档
  4. STM32读取HMC5883L的偏航角数据
  5. java speex转码_JAVA版-微信语音.speex转.wav
  6. 广州大学机器学习与数据挖掘实验一:线性回归
  7. Python生成Wifi二维码 一键联网
  8. ios 融云 重写对话列表_iOS消息体系架构详解-融云即时通讯云
  9. echarts:中国地图-省市区二级联动
  10. 简单的在线出入库管理用哪个系统好