Postman使用
- 什么是接口:分为内外部接口,软件给外部提供的一种服务,用于数据传输
- 软件为什么需要接口:接口能让内部数据被外部进行修改
- 为什么要做接口测试:前后端分离,开发进度不一,测试左移,尽早测试。基于安全考虑,前端认证容易绕过,需要测试接口安全性。
*接口测试的本质:就是测试接口能否正常的交互数据,权限控制以及异常场景
接口测试协议
webservice协议:接口地址类型:http://..........?wsdl
通信协议soap,wsdl作为描述
协议变更:
restful规则:get获取数据,post提交数据,put修改数据,delete删除数据
dubbo协议:接口地址:dubbo://..........
由阿里发行的,适用于小量数据的传输,大并发
http协议:接口地址:http://............
什么是http协议:
超文本传输协议,用于浏览器和服务器之间交互数据的协议,交互由两个部分。
请求方法:get/post/put/delete/head/connect/options/trace
请求头:
响应:
请求内容:
响应内容:
企业接口测试流程和方案
拿到api接口文档,熟悉接口业务,接口地址、鉴权、入参、出参、错误码
接口测试计划和方案:思路:
正例:输入正查昂的入参,查看接口是否返回成功
反例:
鉴权反例:鉴权为空、鉴权码错误、鉴权码过期
参数反例:参数为空、参数类型异常、参数长度异常、错误码的覆盖
其他场景:分页异常
编写测试用例
执行接口测试
输出测试报告
Postman用于在get请求传参
Authorization:Postman自带鉴权功能
Headers:请求头
Body:post请求传参
none:没有参数
form-data:既有文件又有键值对
x-www-form:只传键值对
raw:传Json、txt、xml、html
binary:把文件以二进制方式传输
Pre-request Script:接口请求之前的脚本。JS
Tests:断言代码
Settings:设置
Cookies:Postman的coolies管理器
code:生成接口自动化脚本
Body:返回的数据
- Peretty:以Json格式展示
- Raw:以文本格式展示
- Preview:以网页的格式展示
Cookies:返回的coolies信息
Headers:响应头
Test Results:断言
Postman内置动态参数
时间戳:{{$timestamp}}
生成0-1000的随机整数:{{$randomint}}
生成一个GUID的字符串:{{$guid}} 一个长字符串
Postman环境变量和全局变量
在测试过程中,可能需要在不同的环境中进行测试:开发环境、测试环境、预发布环境、线上环境等,这时就需要进行环境变量设置。
通过{{variable}}调用
不管是环境变量还是Globals都是全局变量
Postman接口关联(相当于jmeter的json提取器)
一、通过提取保存并设置全局变量来达到关联目的,通过设置{{variable}}调用
提取返回的access_token值,在断言(Tests)中输入:
var jsValue = JSON.parse(responseBody)
console.log(jsValue.access_token)
把提取到的值保存到全局变量Globals中
pm.globals.set("access_token",jsValue.access_token);
// 设置变量名,添加变量参数
调用{{access_token}}
二、通过正则表达式提取
responseBody表示返回的数据内容
var flag_id = responseBody.match(new RegExp('"id":(.+?),'))[1]
console.log(flag_id)
pm.globals.set("flag_id",flag_id);
调用{{flag_id}}
三、cookie提取器
var csrf_token = postman.getResponseCookie('csrf_token').value;
pm.globals.set("csrf_token",csrf_token);
Postman八种断言方式
- 断言返回码为200:Status code:Code is 200 状态断言
- 断言返回结果种包括有一个指定的字符串:Response body:Contains striing 业务断言
- 对返回的结果做JSON字段检查:Response body:JSON value check 业务断言
- 断言返回的结果等于一个字符串:Response body:Is equal to a string 业务断言
- 断言响应头中包含有指定的响应头:Response body:Content-Type header check 业务断言
- 断言接口请求时间少于200毫秒:Response time is less than 200ms 性能断言
- 断言一个post请求的返回状态码是否在指定的范围里:Status code:Successful POST request
- 断言返回的状态码信息中包含指定的字符串:Status code:Code name has string
123较为常用:状态断言+业务断言
精确断言:在pre-request-script中添加前置脚本,添加全局变量。然后在断言里面调用全局变量。调用使用拼接的方式。
postman+newman+jenkins持续集成
postman导出用例+环境+全局变量
使用newman命令执行操作:newman run "<用例路径>" -e "<环境路径>" -g "<全局变量路径>" -r cli,html,json,junit --reporter-html-export "<输出路径>"
Jenkins添加Groovy script 脚本为了能看到报告:System.setProperty("hudson.model.DirectoryBrowserSupport.CSP","")