记录在学习接口自动化的笔记以及课堂上练习的代码,文章图部分源于我在听课的时候所截的屏,所以有些不清晰,请见谅。
目录
[第二步:add a request创建一个接口请求](#第二步:add a request创建一个接口请求)
一、Postman接口自动化说明和测试流程
内部接口:被测系统内部各功能模块的接口。(测试详细)用户模块:增,删,改,查。
外部接口:被测系统与外部系统之间的接口。(测试功能)
接口测试重点:测接口数据交换是否符合需求,以及对各种异常情况的容错处理,以及权限的控制。


接口测试流程:
-
拿到接口文档(没有需要抓包),熟悉接口业务,接口请求四要素和响应四要素,接口鉴权方式,错误码业务等。
-
编写接口测试用例(测试点 XMIND)并评审(怎么测)
正例:
正常输入接口的请求四要素,查看并验证接口响应数据的正确性。
接口请求四要素:请求方式,请求路径,请求头,请求数据(给)
接口响应四要素:响应码,响应信息,响应头,响应数据。(返)
反例:
接口鉴权反例:鉴权码为空,错误,过期等
接口参数反例:参数为空,参数类型异常,参数长度异常。
业务场景反例:黑名单,接口调用次数,分页(100 条,每页 10 条)
- 使用 Postman 执行接口测试4. 通过 Postman+Newman+Jenkins 实现接口自动化测试持续集成。并且输出报告以及进行邮件,企微,钉钉通知。
二、Postman接口自动化工具的安装和使用
1.接口自动化工具postman,jmeter,apifox,soupui(银行)
2.Postman使用

登陆之后进入worksapce工作空间:

Collections:收藏(项目)
Enviromments:环境变量/全局变量
History:历史请求
第一步:创建一个Collections项目
概述:可以更改项目名
鉴权:
脚本:前置和后置
变量:自定义
运行:




第二步:add a request创建一个接口请求

请求:接口请求四要素:请求方式,请求路径,请求头,请求数据(给)

Params(第一种传参):查询字符串参数:即在请求路径后以?传递的参数,多个参数之间用&分
割。它是URL的一个部分,是所有人都可见。会自动填写。
Authorization:鉴权
Headers:请求头
Body(第二种传参):Body参数,不会显示在URL,相对安全,它包括:JSON,表单,文件等等。

none:没有body参数
form-data:即有参数,又有文件。
x-www-form-urlencoded:只有参数
raw:json,xml,html,js等等
binary:二进制数据
GraphQL:facebook在2012开发一个查询语言。
Scripts:前置脚本和后置脚本,后置脚本一般是我们在断言是对还是错的时候会用到。
Settings:设置
Cookies:请求Cookie,属于请求头
响应:接口响应四要素:响应码,响应信息,响应头,响应数据。(返)
Body:响应数据
Cookies:响应Cookie,属于响应头
Headers:响应头
Test Results:断言接口是否请求成功
第三步:继续增加请求,测试各个接口,接口实战
六个接口实战,有发现什么问题?
1.{{$timestamp}}是一个时间戳。可以理解成随机数
2.token鉴权码每一次执行都是变化的,我们不可能每一次都手动去操作。
3.有增,改,删的接口,那么是否可以避免脏数据(比如不能每次测试都添加没用的数据),形成数据闭环。
成功获取token:

输入token才会成功:

删除:

已经没有7729标签的信息了:

编辑:

成功修改:

文件上传

浏览器验证:

新增标签:
创建时加入时间戳,防止标签重复


三、Postman接口关联
1. 什么是接口关联
当在接口测试中出现上一个接口的返回值需要作为下一个接口的参数。(token鉴权码每一次执行都是变化的,我们不可能每一次都手动去操作。)
2. 接口关联如何实现
(1) 获取上一个接口返回值中的指定的数据(access_token)
全局变量的作用域比环境变量作用域要大

全局变量
方式一:可以使用json对象取值,保存到全局变量(在所有接口中都能使用的变量)。
//从响应数据中获取到json数据保存到jsonData
var jsonData = pm.response.json();
//把jsonData的access_token字段数据打印到控制台
console.log(jsonData.access_token);
//把access_token保存到全局变量
pm.globals.set('access_token', jsonData.access_token);

查看,成功设置

在后续接口测试中,可以直接用{{access_token}}来调用

正则提取
方式二:可以使用正则提取,保存到全局变量。
//使用正则方式
//获取响应文本
var responseText = pm.response.text();
//使用正则表达式匹配access_token
var match = responseText.match('"access_token":"(.*?)"');
console.log(match[1]);
pm.globals.set('access_token', match[1]);
我们这里获取到的是两个文本信息,我们使用第二个,即match1的值

修改脚本代码

设置为全局变量:

形成数据闭环
3.有增,改,删的接口,那么是否可以避免脏数据(比如不能每次测试都添加没用的数据),形成数据闭环。
我们新增之后,会有标签的id,那我们再将该标签的id设置为全局变量,后面的编辑和删除需要标签的id来进行操作。
执行测试新增时,设置全局变量:


修改编辑和删除接口测试的数据:
编辑标签接口:

查询,修改成功

设置删除接口:

成功删掉id为7954的标签内容:

至此,实现了新增、编辑、删除接口测试的闭环,避免了脏数据的产生。
把测试导出为测试用例,到时候可以让其他人直接导入就行了:

{{$}}和{{}}区别:前置是postman内置的参数,后者是我们自己设置的参数。
四、Postman全局变量和环境变量的应用
1.全局变量
能够在Postman整个应用中都能使用的变量。

变量名,类型,初级值,当前值
使用:{{变量名}}
2.环境变量
实际工作中,一套脚本希望能够在开发环境,测试环境,生产环境都能测试。
它和全局变量的区别在于:它的作用域比全局变量小 。只能在单一环境使用。全局变量可以在所有环
境使用。
环境变量就是应用在接口上,就是IP和端口
多种环境的区别在于:IP或者域名不一样。
开发环境:192.168.0.100 (不能跑通)
生产环境:192.168.0.200 (不能跑通)
测试环境:api.weixin.qq.com (能跑通)
第一步在postman中创建不同的环境

创建生产环境:

创建开发环境:

创建测试环境:

注意:我们所创建的这三个环境的环境名称必须一致,这里我设置的都是ip
第二步修改我们项目的路径参数以及测试环境

即我们不要将其写死,选择环境,我们根据实际情况选择即可:

选择测试环境,测试通过:

选择开发环境,测试不通过,因为我们这里没在开发环境部署,但我们可以看到测试的路径已成功修改为我们所设置开发环境的地址:

五、postman批量运行(接口测试+性能测试)
项目(集合)批量运行

接口功能测试
第一种:手动运行


如果是手动运行的话我们只要去选个运行次数和延迟即可,左侧可以将我们想运行的该项目下的接口进行勾选。

还可以把这个报告进行导出,它是一个JSON文件。

第二种:定期运行
直接在界面完成


点击之后:

第三种:通过CLI自动运行( 主要是用于Jenkins持续集成接口自动化测试 )
第一步:安装Postman CLI命令行运行方式,在目录下
C:\Users\19897\AppData\Local\Microsoft\WindowsApps生成postman.exe


在Windows命令窗中进行安装:

在我们文件夹中找到postman.exe,直接输入
%USERPROFILE%\AppData\Local\Microsoft\WindowsApps 这个命令即可

第二步:配置PATH路径:C:\Users\19897\AppData\Local\Microsoft\WindowsApps

第三步:在DOS窗口通过CLI命令行运行
先获取一个API Key


把这两步命令粘贴到我们的Windows命令框中运行即可。

postman login --with-api-key PMAK-6933eecebb53c30001170e57-34e3561485349bd00ce7907608e888043f
postman collection run 50591223-d8f0b870-f613-476c-93aa-6197a4d7c65b -e 50591223-ede1d8db-598f-4fcd-938e-424f1bc49d1a

由于一致找不到环境变量,所以我直接用命令行方式来指定了
postman collection run 50591223-d8f0b870-f613-476c-93 \
-e 50591223-ede1d8db-598f-4fcd-938e-4 \
--env-var "ip=api.weixin.qq.com"


接口性能测试
( 受限,一个月只能使用25次,最大虚拟用户数100,最大的持续时间60分钟 )

Fixed:固定
Ramp up:逐步加强
Spike:尖刺
Peak:尖峰
Virtual users:虚拟用户数
Test duration:持续时间
我这里选择虚拟用户数为10,持续时间为1分钟,选择Fixed模式


可以导出测试报告






可以在我们的项目的Runs下查看

重大的坑:批量运行的时候,图片附件是有问题的。
输出提示信息,找不到我们上传的文件:

因为我们测试的时候文件是在本地,所以我们应该将附件上传到团队云端。

上传成功:

再次打开批量运行设置,已经不会再有警告提示了:

这篇文章就先更新到这里,接下来的内容可查看我的下一篇博客,感谢观看,希望对你有帮助。