一、接口测试分类,流程,用例设计方案
分类:
测试外部接口:是被测系统和外部系统之间的接口。(一般只要正常调用即可)
测试内部接口:是被测系统内部各个模块之间的接口。
内部接口提供给内部系统使用(一般只测试正例即可)
内部接口提供给外部系统使用(测试必须非常全面)
接口测试重点测试什么:
接口参数传递的正确性
接口功能的正确性
以及各种异常情况系统的容错能力
接口的权限控制
接口的兼容性
二、接口测试流程,用例设计方案
拿到api接口文档(可以从开发拿,也可以抓包或者录制后自己创建),熟悉接口文档业务,接口地址,接口的鉴权方式,接口入参,出参,是否有完善的错误码机制。
编写接口测试用例以及评审。
思路:
正例:输入正常的入参,接口能够正常返回。(get/post)
反例:
鉴权反例:必填,错误的鉴权码,鉴权码已过期......
参数反例:必填,参数类型异常,参数的长度异常......
错误码反例:
其它场景:黑名单,接口调用次数限制,分页场景......
接口的兼容性:一个接口是否能兼容多个版本的前端。
使用接口测试工具Postman/jmeter/apifox执行接口测试,提交BUG,以及BUG验证。
postman+Newman+Jenkins+git实现持续集成并且生成报告。
三、执行接口测试
请求: 请求方式,请求路径,请求头,请求参数
Params: get请求传参。
Authorization: 鉴权
Headers: 请求头
accept: 客户端接收的数据类型
content-type: 客户端发送给服务器的数据类型
user-agent: 客户端的类型
xmlhttprequest: 异步请求
......
Body: post请求传参
none: 没有参数
form-data: 文件上传(包含键值对和文件上传)
x-www-form-urlencoded: 表单请求(键值对)
raw: 使用原始数据格式请求(JSON, XML, HTML, Text, Javascript)
binary: 二进制文件上传
Pre-request Script: 请求之前的脚本
Tests: 请求之后的脚本
Setting: 设置
Cookies: 是Postman用于自动管理Cookie的功能
响应:
Body: 返回的值
Pretty: 以不同的格式查看返回结果
Raw: 以文本格式查看返回结果
Preview: 以网页格式查看返回结果
Cookies: 响应的Cookie
Headers: 响应头
TestResults: 断言的结果
调试:
console控制台
面试题:get请求和post请求的区别是什么?
get请求一般用于获取数据,post一般用于提交数据。
传参的方式不一样:
get请求在接口地址里面以?的方式传参,多个参数用&分隔。
post是在body当中传参。
post比get请求安全。
get请求只发一个数据报文,post请求发送两个数据报文。
四、接口关联
第一种方式
1.取值并设置全局变量
var token = response.json.access_token
apt.globals.set("token", token);
2.在需要的接口里面通过{{变量名}}取得全局变量的值: {{token}}
json: 是一种数据格式。
1.对象(字典)(键值对,key: value)
2.数组(列表) [a, b, c, d]
第二种方式
正则表达式提取器
var datas = response.raw.responseText.match(new RegExp('"access_token":"(.*?)"'));
apt.globals.set("token", datas[1]);
五、环境变量和全局变量
全局变量:在所有接口里面都可以访问的变量。
环境变量:在当前环境里面都可以访问的变量。
设置环境变量
把所有的请求中的ip地址改成获取环境变量的方式{{ip}}
在postman的右上角选择不同的环境即可。
六、遗留的问题
多种接口关联方式以及Tests里面右边的功能
创建接口里面标签名需要手动修改
接口流程案例