一、何为接口测试
接口测试原理: 模拟客户端向服务器发送请求报文,服务器接收请求报文后对相应的报文做处理并向客户端返回应答,客户端再接收应答的一个过程;
接口测试范围: 接口的功能、性能、安全性。重点关注数据的交换,传递和控制管理过程,还包括处理的次数;
二、Postman的应用场景
1、基于http协议的rest架构接口;
2、支持https;
3、单接口测试;
4、接口抓包;
5、接口集自动化测试;
6、接口自动化持续集成测试
三、Postman的优缺点
四、Postman的结构
基本的测试框架结构: 测试项目(project)-测试模块(testsuit)-测试用例(testcase)
Postman:Collection就相当于是Project,而Collection中可以创建不定层级的Folders,可以自己组织TestSuite。每个Request可以当做是一个TestCase或者Step
五、Postman的界面简介
界面操作详情介绍:https://www.realaction.cn/views/page2/3.html
(1)抓包
1、点击上图的设置代理按钮;
2、在弹出框中填写端口和存放的文件夹点击连接;
3、手机端设置代理;
4、在存放的文件夹中查看抓包 接口;
(2) Get请求
1、请求方式设为GET, 同时输入完整的url, 跟访问浏览器一样, 或者输入接口url, 点击“Params” 输入需要的key 以及value, 点击“Send”, 即可在 “Response” 中查看返回的结果; 2、有些get接口需要headers;
(3)post请求
选择请求方式为post,输入请求的url,以及输入必要的"Authorization" , "header" 和"Body" 数据。post请求可以发送key-value, json格式,file等
post请求可以有5种发送内容方式:
1、URI 传参:跟get接口方式相同;
2、Form-data 传参:即可上传传键值对也可上传文件;
3、x-www-form-urlencoded传参 :相当于url传参,只是没有长度的限制,只能上传键值对;
4、raw:目前使用最多的方式,可上传任意格式的文本,我们一般默认使用json;
5、binary 传参:一次只能上传一个文件;
六、自动化相关
(1)全局变量和环境变量
环境变量: 用于定义不同的环境(一般是服务器地址/api版本/header信息等),作用域是当前环境 全局变量:可全局使用的变量 引用方式: {{variable_name}},可以在 url地址栏,Headers,body,Pre-request Script,Tests中引用 环境变量和全局变量的key值名称必须是唯一的
环境(全局)变量的常用使用位置: 1)URL地址 2)使用GET方法时的Params的value值 3)使用POST方法时Body中value值 4)Header的value值
(2)postman中的动态参数设置
应用场景:构建包含动态参数的request, request之间传递数据等 三种实现方式:
1.Postman有以下内建变量,适合一次性使用 ①{{$guid}}//生成GUID ② {{$timestamp}}//当前时间戳 ③{{$randomInt}}//0-1000的随机整数
2.参数依赖上一个请求的返回 上个请求的Tests里提取参数存环境变量,这个请求里用{{变量名}}取值
3.参数每次都不同,但之后的断言或别的请求里可能还要用 在Pre-request Script里写代码处理,存为环境变量,参数里用{{变量名}}取值
第2和第3中方式说明: 1. 在发送request之前,编写pre-request script,定制化request; 2. 收到response之后,用test script,处理返回的数据; 流程:
相关:动态参数都是使用环境变量或全局变量的方式
常用的提取方式举例:
登录接口提取uid和token:
1、在tester中定义: var data = JSON.parse(responseBody);//定义data读取返回的json postman.setEnvironmentVariable(“uid”, data.result.userid);//把userid读取出来赋给环境变量 uid postman.setEnvironmentVariable(“token”, data.result.token);//把token读取出来赋给环境变量 token
2、运行后查看环境变量:
3、其他接口中使用:
(3)常用tests断言语法
1、判断接口状态码: Tests["Status code is 200"] = responseCode.code = 200;
2、检查response是否包含一个字符串: tests["Body matches string"] =responseBody.has("true"); 3、检查response是否等于一个字符串: tests["Body is correct"] = responseBody === "response_body_string";
4、检查JSON值: var data = JSON.parse(responseBody); tests["Your test name"] = data.value === 100;
5、响应时间在一个特定的范围内(包括下限和上限): tests["Response time is acceptable"] = _.inRange(responseTime, 100, 1001);
6、将xml体转换为JSON对象: var jsonObject = xml2Json(responseBody);
更详细的介绍:https://blog.csdn.net/qq1124794084/article/details/78049456
(5)runner
1、用例集(collection)选择;
2、环境变量选择;
3、执行次数,注意:当选择本地数据时,这个执行次数会根据本地数据的条数自动更新的;
4、间隔时间;
5、日志打印级别选择;
6、可以选择加载一个 CSV/JSON的数据文件,通常作为本地参数使用;
(6)团队协作
1、支持collection的导入导出,json格式;
2、支持环境的导入导出,json格式;
3、导出用例至各种编码格式;
4、导出运行结果,json格式;