一、接口测试定义及分类
接口测试是测试系统组件间接口的一种测试。
分类:
测试外部接口:测试被测系统和外部系统之间的接口(只需要测试正例即可)
测试内部接口:
1.内部接口只提供给内部系统使用。(只需测试正例即可)
2.内部接口提供给外部系统使用。(测试必须非常全面,正例,各种场景,权限控制)
二、接口测试的流程以及用例设计
1.拿到接口api文档(通过抓包工具获取),熟悉接口业务、接口地址、鉴权方式、入参、出参、错误码。
2.编写接口用例以及评审:
思路:
正例:输入正常参,接口能够成功返回数据
反例:
鉴权码反例:鉴权码为空、错误、过期
参数反例:参数为空、类型异常、长度异常
错误码覆盖:根据业务而定
其他错误场景:接口黑名单、接口调用次数限制、分页场景。
3.使用接口测试工具postman执行接口测试
4.postman+Newman+Jenkins是先持续集成,并且输出测试报告并且发送邮件。
三、接口测试实践(微信公众平台接口)
获取权限:
appid(ID):
secret(密钥):
四、postman工具的使用
1、界面介绍:
workspace 工作空间
collections 集合、项目集合
Apis api文档
Environments 环境变量
Mock Server 虚拟服务器
Monitors 监听器
History 历史记录
五、postman执行接口测试
请求页面
params:get请求参数
authorization:鉴权
headers:请求头
body:post请求参数
none:没有参数
form-data:既可以传键值对参数,也可以传文件
x-www-form-urlencoded:只能传键值对参数
raw:josn、text、xml、html、javascript
binary:把文件以二进制的方式传参
pre-request-script:请求之前的脚本
tests:请求之后的脚本
cookies:用于管理cookie信息
响应页签
body:接口返回的数据
pretty:以json、xml、html、等不同的格式查看返回的数据
raw:以文本的方式查看返回的数据
preview:以网页的方式产看返回的数据
cookies:响应的cookie信息
headers:响应头
test results:断言的结果
200-状态码
ok-状态信息
681ms-响应时间
343B-响应的字节数
面试题:
get请求和post请求的区别:
1、get请求一般是获取数据,post请求一般是提交数据
2、post请求比get请求更安全
3、本质区别是传参方式不一样:
get请求在地址栏后面以?的方式传参,,多个参数之间用&分隔
post请求在请求体body以表单的方式传参
问题:
多种环境:开发环境、测试环境、生成环境
接口关联:手动关联
参数需要手动修改
六、环境变量以及全局变量
环境变量:就是全局变量
在environment中都命名为ip,开发测试环境的值为×××.××.××,生成环境变量的值就是域名
全局变量:是能够在任何接口里面访问的变量
获取环境变量和全局变量:{{变量名}}
七、接口关联
1、使用json提取器实现接口关联
第一个接口
//把返回的字符串格式的数据转换成对象形式
var result=JOSN.parse(responseBody);
//打印
console.log(result.access_token);需要获取的参数的键
//把access_token设置为全局变量
pm.globals.set("access_token",result.access_token);
第二个接口
{{access_token}}
2、使用正则表达式提取器实现接口关联
//使用正则表达式提取器实现接口关联,match匹配
var result=responseBody.match(new RegExp('"acccess_token":"(.*?)"'));
console.log(result[1]);
//设置全局变量
pm.golbals.set("access_token",result[1]);
八、postman内置动态参数以及自定义动态参数
1、postman内置动态参数(加在参数后):
{{$timestamp}} 生成当前时间的时间戳
{{$randomInt}} 生成0-1000之间的随机数
{{$guid}} 生成一个随机的GUID字符串
2、自定义动态参数:
//手动的获得时间戳
var times=Data.now();
//设置为全局变量
pm.globals.set("times",time);
//使用时使用:{{times}}
九、postman断言处理(常用的)
status code:Code is 200 检查返回的状态码是否为200
Response body:Contains string 检查响应中包括其指定字符串
Response body:Json value check 检查响应中其中json的值
Response body:is equal to a string 检查响应等于一个字符串
Response body:Content-type... 检查是否包含响应头Content-type
Response time is less than 200ms:检查请求耗时小于200ms
在断言中获取自定义全局变量(动态参数)的方法:
pm.globals.get("variable_key");
globals["variable_key"]
globals.variable_key
全局断言