一、什么是接口测试&怎么测
一般像系统内的组件接口数据交互测试、不同系统与系统之间的接口数据交互测试等,我们都可以称之为接口测试 。
那么我们应该怎么来测试接口呢?
- 接口测试就是通过测试不同情况下的入参与之相应的出参信息来判断接口是否符合或满足相应的功能性、安全性、性能方面的要求
- 测试的重点是要检查数据的交换,传递和控制管理过程,及系统间的相互逻辑依赖关系
- 简单的说:“接口测试是就是在没有前端页面或者前端还没完成的情况下,代替前端页面或者第三方使用者,来验证后端的接口实现是否符合接口规范。”
二、接口测试的好处
可以测试出接口的稳定和正确性, 可以抛开前端的影响,迅速定位到后端的缺陷,提升测试的效率
- 可以发现很多在页面上操作发现不了的bug
- 检查系统的异常处理能力
- 检查系统的安全性、稳定性
- 前端随便变,接口测好了,后端不用变
- 可以为项目带来高效的缺陷监测和管理能力,可以提高软件的整体质量
- 项目越复杂,系统越庞大,接口测试使用的越频繁,效果越明显
三、怎么做好接口测试
官方套话:
- 接口正确性是多方保障,都要进行测试
- 根据接口类型,合理进行测试分析,注意测试重点
- 注重业务逻辑分析,包括正向反向操作
- 注重数据文件检查
实质需要关注的点:
- 测试接口的功能实现,检查不同参数的数据请求时,接口返回的数据与预期结果,也就是接口文档的规范的一致性
- 测试接口的**健壮性(容错性)**, 比如说传递的数据类型是错误或者传递空数据,特殊字符等与接口规范不符的,能否正常处理
- 测试接口参数的边界值,比如说传递的数据超出了接口规范规定的范围,或者数据足够大或者为负数时能否正常处理
- 测试接口的性能,接口处理和响应数据的时间,并发性等等,当然这牵扯到代码实现的优化,需要与开发人员沟通
- 测试接口的安全性,比如登录的用户名密码等敏感数据是否明文显示,需要权限的接口是否暴露在外面
四、接口测试的原理
通过模拟客户端 or Web浏览器向服务器发送请求,服务器接收请求后对接收到的数据做处理,同时向客户端返回应答,我们模拟的客户端,接收到返回的数据后再对数据进行判断 ,如何判断呢?
1、判断请求: 是否正确, 系统默认的请求成功,会返回200状态码, 假如请求错误返回400, 404, 500等状态码
2、判断数据: 返回数据的正确性与完整性
3、判断安全性: 接口一般不会随意暴露在网上被其他人任意调用,一般我们会对接口做出一些限制,比如请求次数、请求频率限制等
简单来说:找个能联网的工具根据接口文档,向接口服务器发送请求,获取响应,检查响应是否符合接口文档的规范
五、接口测试流程&用例设计
5.1.接口文档分析
分析测试需求、接口api文档,熟悉接口业务,接口地址,鉴权方式,入参, 出参,错误码等。。。
接口文档分析4要素:
- 接口地址URL;
- 请求方式:get、post、delete、put、option。。。;
- 请求参数:URL后追加的参数、请求body参数、请求头header参数;
- 响应结果:判定接口测试是否通过的一个标准
5.1.1.接口构成图解
5.2.制定接口测试计划
测试计划就是功能测试计划基本一样就是知名的5w1h
- why—为什么要进行接口测试;
- what—测试接口包括哪些;
- when—测试接口不同阶段的起止时间;
- where—相应接口文档,接口缺陷的存放位置,测试环境等;
- who—项目有关人员组成,哪些接口分配给哪些人;
- how—使用哪些测试工具以及测试方法进行测试。
5.3.编写接口测试用例&评审
接口用例思路:
1.正例:输入正常入参,接口能够成功返回数据,一般考虑下面几个方面
所有必填参数 全部参数(必填参数+选填参数) 参数组合(必填参数+某些选填参数)
2.反例:
** 鉴权反例:**鉴权码为空,鉴权码错误,鉴权码过期 ...... **参数反例**:参数为空、null,少参,多参,参数类型异常,参数长度异常(边界值) ** 错误码覆盖**:根据业务而定的 **其他错误场景**:接口黑名单,接口调用次数限制,分页场景
5.3.1.接口测试用例参考模板
5.4.接口测试数据&脚本
参考文档主要以目前整理出来的Postman工具相关的介绍文档,后续会不断更新其他工具相关的
5.4.1.公共数据维护
1.接口用例编写中有很多重复的数据定义,每个接口都需要写服务器地址,不同的环境下服务器地址不一样,引用【环境变量】减少服务器地址改变,对接口的修改;
2.不同的接口之间,会有参数传递的现象,也就是下一个接口要使用上一个接口某个字段的返回值,此时,则可以引用【全局变量】来解决
1-2 参考文档:
Postman的环境变量和全局变量_沫沫18S的博客-CSDN博客
3.某些接口,某些字段每次均需生成新的值,可使用前置脚本设置【自定义的全局变量】供接口调用时引用
3 参考文档:
Postman内置动态参数和自定义的动态参数以及断言方式_沫沫18S的博客-CSDN博客_postman内置参数
5.4.2.多组数据测试
某些接口测试时,需要正/反向同时执行多组测试数据,创建一个CSV或JSON文件,将相关测试数据均添加进去,读取该文件,这就是著名的数据驱动测试DDT
参考文档:
Postman之CSV或JOSN文件实现数据驱动_沫沫18S的博客-CSDN博客
5.4.3.接口依赖处理
参考文档:
Postman接口关联使用正则表达式提取_沫沫18S的博客-CSDN博客
Postman的环境变量和全局变量_沫沫18S的博客-CSDN博客
5.4.4.接口结构判断:断言
参考文档:
Postman常用断言功能解析_沫沫18S的博客-CSDN博客
5.5.接口测试执行
使用接口测试工具执行接口测试
常用测试工具列表:
- Postman:post/get接口实战、接口自动化
- JMeter:post/get接口实战、接口性能、接口自动化
- Pytest+Request+Allure+即时报警:接口自动化
- Fiddler/Charles:接口抓包工具
- Loadrunner:接口性能
- Wireshark:可抓各种协议的包进行分析
- Soapui:既可以做接口测试也可以做自动化测试
- Apifox、poster、Httprequester。。。
5.6.接口测试报告
Postman+Newman+Jenkins或Jmeter+Jenkins,实现持续集成,输出测试报告并且发送邮件
参考文档:
Postman之Newman命令行运行脚本生成HTML报告_沫沫18S的博客-CSDN博客
Postman批量运行_沫沫18S的博客-CSDN博客
版权归原作者 沫沫18S 所有, 如有侵权,请联系我们删除。