在工作中,接口测试势必是最有效的测试途径。因此,学习接口测试的基础和工具是很有必要的,从Postman开始吧~
目录
1. 接口测试简介
2. 接口测试流程及用例设计
3.使用Postman执行接口测试
4. Postman的环境变量以及全局变量
5. 接口关联
6. Postman内置动态参数以及自定义的动态参数
7. Postman断言
接口测试就是测试系统组件接口之间的一种测试。
分类:
测试外部接口:
测试被测系统和外部系统之间的接口。这种接口只需要保证被测系统可以调通外部系统,因此,只需要测试正例就足够了
测试内部接口:
1.内部接口只提供给内部系统使用。这种情况下,调用关系都很明确,像公司内部的预算系统,承保系统等,只需要测试正例即可
2.内部接口提供给外部系统使用。这种情况下,我们不知道会外部调用我们的接口时,会出现哪些异常,因此,测试此须非常全面,正例,各种异常场景,权限控制等都要进行测试
价值:
看过一本书,是这样描述的:UI测试无法覆盖复杂的组件交互网络,因此绕过客户端,直接使用接口测试对服务端进行测试~
测试过程,研发会提供接口api文档,有时也可以通过抓包工具获取,需要熟悉接口业务,接口地址,鉴权方式,入参,错误码等信息后,就要编写相关的接口测试用例。
根据日常遇到的问题,做了如下总结:
正例:输人正常入参,接口能够成功返回数据
反例:
鉴权反例:鉴权码为空,鉴权码错误,鉴权码过期
参数反例:参数为空,参数类型异常,参数长度异常
错误码覆盖:根据业务而定
其他错误场景:接口黑名单,接口调用次数限制,分页场景等
官网安装 安装完进行注册和登录
以上是比较常用的功能。
一般就是新增Collections新增集合->add Request新增接口。在接口中填入域名、入参、Headers信息,全都正确的情况下,就可以返回所需要的数据~
当然,接口也是非常复杂的,首先就会有不同的方法,最常见的就是Post和Get方法,两种方法的区别也简单做了总结:
Get请求和Post请求的区别:
1. get请求一般是获取数据,post请求一般是提交数据
2. post请求比get请求安全
3. 本质区别是传参的方式不一样:
get请求在地址栏后面以?的方式传参,多个参数之间用&分割
post请求是在body以表单的方式传参
逐个接口的测试还是比较简单的,参数正确,用例全面,进行验证即可。但是,接口测试还存在一些问题:
多种环境:开发环境,测试环境,生产环境,
接口关联:需要手动关联
参数需要手动修改
因此,需要解决这些问题,强大的Postman还是能做到的。
多种环境需要 来回切换,可以设置环境变量也进行问题的简化
环境变量:环境变量就是全局变量
全局变量:全局变量是能在任何接口里面访问的变量
获取环境变量和全局变量的值通过:{{变量名}}
5.1 使用Json提取器实现接口关联
第一个接口:
//使用json提取器提取accesss_ token值。
//把返回的字符串格式的数据转换成对象的形式
var result = JSON.parse(responseBody);
//把access token设置为全局变量
pm.globals.set ("access_token", result.access_token);
第二个接口:
{(access_token}}
5.2 使用正则表达式提取器实现接口关联
第一个接口:
//使用正则表达式提取器实现接口关联,match匹配
var result = responseBody.match(new RegExp ('"access_token": " (.*?)"')
console.log(result[1]);
//设置为全局变量
pm.globals.set("access_token",result[1]);
第二个接口:
{{access_token}}
这样就可以关联接口的数据,Postman内置方法还有好多,需要进一步探索交流。。
postman内置动态参数:
{{$timestamp}} 生成当前时间的时间戳
{{$randomInt}} 生成0-1000之间的随机数
{{$guid}} 生成速记GUID字符串
自定义动态参数:
//手动的获得时问戳
var times = Date.now();
//设置为全局变量
pm.globals.set("times",times);
使用时使用:{{times}}
列举下场景的六种断言方式,方法很多种,最终目的是到达到核对接口的数据是否正确。
常规六种断言
Status code:Code is 200 检查返回的状态码是否为200
Response body:Contains string 检查响应中包括指定字符串
Response body:Json value check 检查响应中其中ison的值
Response body: is equal to a string 检查响应等于一个字符串
Response headers:Content-Type 检查是否包含响应头Content-Type
Response time is less than 200ms:检直请求耗时小于200ms
陆续学习输出,指正 共勉~