最近做的项目中需要进行接口相关的测试,于是使用Postman模拟HTTP请求,并将自己遇到的问题及工具的基本用法进行总结,以供自己后期回顾。Postman作为一个图形界面的接口测试工具,因为其简单易用、功能强大,备受大家欢迎
一、 软件安装
Postman支持在windows、linux、MacOS系统中安装,其安装比较简单;官网下载相应版本后,直接下一步安装即可;安装完成后,可以注册账号,这样只要登录了该账号,在任何连接了互联网的电脑上都可以同步已创建的脚本;
二、 基本用法
1、 HTTP请求方法:基本的请求方法有:GET、POST、PUT(传输文件)、HEAD(获得报文首部)、DELETE(删除文件,与PUT相反)、OPTIONS(询问支持的方法)、TRACE(追踪路径)、CONNECT(要求用隧道协议连接代理);
注:目前我们接口用到的大多是GET和POST;请求方法区分大小写,为大写字母;
2、 请求URL(统一资源定位符): https://xxx.xxx.com/xxx/xx/xxx/ /xxx?appType=1&userName=1234567890
https:为协议方案名;xxx.xxx.com:服务器地址(可以是域名、IPv4、IPv6地址);xxx/xx/xxx/ xxx :文件路径;appType=1:查询字符串;
3、 请求参数:填写接口的请求参数;
4、 请求参数名和参数值;
5、 请求头;
6、 请求体:POST方法中填写请求参数;
7、 预处理脚本(js):脚本执行时,最先执行这里的脚本,可以在这里生成动态变量,设置变量等;
8、 测试脚本(js):可以使用断言判断接口执行情况,还可以用来提取变量,用于其他接口执行;
9、 响应体:返回脚本响应结果;
10、测试集合:分类管理测试请求,集合内部还可以创建子集合;
11、环境变量:使用{{xxx19}}格式调用变量
12、设置的变量值:变量调用格式;
13、响应状态码:格式:200(3位数字,其中第1位表示响应类别) OK(原因短语):返回响应结果,标记服务端处理是否正常;响应类别共5种:
下面列举经常遇到的响应状态码:
200 OK:表示客户端发送的请求被服务端正常处理了;
204 No Content:服务端成功处理了请求,但不返回任何内容;
301 永久重定向:请求的资源的URI已被更新,以后都是用新的URI;
302 临时重定向:与301的不同是,URI可能还会变动;
400 Bad Request:表示请求报文中存在语法错误;
403 Forbidden:服务器拒绝访问请求资源;
404 Not Found:服务器上没有请求的资源;
500 Internal Server Error:服务端内部错误;
503 Server Unavailable:服务器不可用;
14、响应时间;
15、Code:将测试脚本转换为常见测试框架支持的代码(可实现CI/CD),如下:
三、 接口测试步骤
上面介绍了Postman界面的基本用法,下面结合实际项目阐述接口测试步骤,该步骤仅代表个人测试步骤,若有更好的方法,欢迎补充;
1、 编写接口用例
根据开发提供的接口文档编写用例,不再赘述;
2、 编写接口脚本
(1) 设置环境变量xxx19,由于测试环境可能会发生变化,并且域名较长,因此使用环境变量代替;
(2) 脚本编写原则,除了测试正常场景外,还会遍历测试参数缺失、错误、类型错误场景;
注:这里应该还需要测试其他场景,但不知道还需要测试哪些
(3) tests断言判断脚本执行结果,一般判断code值是否正确,其他参数返回按需测试;下面简述我的断言测试内容,接口详情如下:
1)我的脚本在这里需要提取变量,作为后面脚本的参数,在tests中编写如下代码:
图中,将接口的返回Body中的uuid值提取出来后,设置为全局变量uuid-ddt-all给后面的接口调用;
2)使用Ctrl+Alt+C调出Postman Console,可以看到响应Body的值:
3)编写脚本测试code值为0,测试qiYuMobile值为输入的参数userName的值(环境变量app-all),方法如下:
(4) 预请求脚本Pre-request Script,用来生成动态变量,如下接口请求头中需要两个参数,这两个参数都需要获取当前时间:
其中,authTime值为当前时间(按年月日时分秒格式),token值为固定值+authTime+字符串的MD5值,使用js脚本实现如下:
在console中可以看到打印结果,如下:
(5)顺序执行集合中的脚本,如下步骤:
如果需要测试接口在不同的数据输入时运行情况,可以使用数据文件,数据文件可以是JSON/CSV两种格式,我们这里使用ISON格式,数据文件如下:
接口调用该参数: