postman学习
一、为什么要做接口测试
接口的由来:连接前后端、客户端与服务端之间数据交互的桥梁,用来传递请求和返回数据,实现各端业务联通;
为什么做接口测试:
- 尽早发现bug:接口时业务核心,提前测接口,能在前端页面没写完时就查出逻辑错误、参数错误、数据异常、修复成本低
- 不受页面进度限制:前端、后端、移动端开发进度不一致,后端接口先开发完成,不用等页面写完就能直接测试
- 保障底层业务稳定:页面只是展示,核心业务逻辑、数据计算、权限校验都在接口,接口稳定整体系统才稳定
- 覆盖更广的场景:可轻松测异常参数、边界值、高并发、超时、权限拦截、手工页面测试很难全覆盖
- 方便自动化和回归:接口脚本稳定,后续迭代直接跑自动化回归,大幅节省测试时间
- 定位问题更快:出现报错直接判断时后端逻辑问题还是前端传参问题
二、postman简介
Postman是一个可扩展的API开发和测试协同平台工具,可以快速集成到CI/CD管道中。旨在简化测试开发中的API工作流
Postman工具由Chrome扩展和独立客户端,推荐安装独立客户端
Postman有个workspace的概念,workspace分为personal和team类型。Personal workspace只能自己查看的API,Team workspace可以添加成员和设置成员权限,成员之间可以共同管理API
因为API里很多数据是敏感的,含Token或者一些私密信息,虽然Postman由强调这样安全,不会窥探用户信息,但还是要有效防范,敏感数据不要上传,网络没有绝对的安全
每次测试后将数据(case)保存在本地,下次使用或者更换设备再把数据拷过去可以继续使用
三、为什么选择Postman
如今,Postman的开发者已经超过1000万,选择使用Postman原因如下:
- 简单易用:使用Postman,只需要登录自己的账户,只要在电脑上安装了Postman程序,就可以方便地随时随地访问文件
- 使用集合:Postman允许用户为他们地API调用创建集合。每个集合可以创建子文件夹和多个请求,这有助于组织测试结构
- 多人协作:可以导入或者导出集合和环境,从而方便共享文件,直接使用链接还可以用于共享集合。
- 创建环境:创建多个环境有助于减少测试重复(DEV/QA/STG/UAT/PROD),因为可以为不同地测试环境使用相同地集合。这是参数化发生的地方,后续将会介绍
- 创建测试:测试检查点(如验证HTTP响应状态是否成功)可以添加到每个API调用中,这有助于确保测试覆盖率
- 自动化测试:通过使用集合Runner或Newman,可以在多个迭代中运行测试,节省了重复测试时间
- 调试:PostMan控制台有助于检查已经检索到的数据,从而易于调试测试
- 持续集成:通过其持续集成的能力,可以维护开发实践
四、下载安装Postman
Step 1) 官网主页:https://www.postman.com/downloads/, 下载所需版本进行安装即可。
Step2)安装完成之后会要求你必须登录才能使用,没有账号可以进行注册,注册是免费的。(也可使用Google账号,不过基本不能登录,你懂的)
Step3)你将看到启动后的页面如下,这是不登录的状态下,为轻量级API客户端–Lightweight API Client
Step4)如果你有账号,或者现注册一个账号,登录或创建帐户以使用集合、环境和解锁Postman中的所有免费功能,如下图:
五、使用Postman
下面是Postman的工作区间,各个模块功能的介绍如下:
- New:在这里创建新的请求、集合或环境;还可以创建更高级的文档、Mock Server 和Monitor以及API.
- import:这里用于导入集合或者环境,有一些选项,例如从文件,文件夹导入,链接或粘贴原始文本
- Runner:可以通过Collection Runner执行自动化测试,后续介绍
- Open New:代开一个新的标签,Postman窗口或Runner窗口
- My Workspace:可以单独或以怨怼的形式创建新的工作区
- Invite:通过邀请团队成员在工作空间上进行协同工作
- History:所有请求的历史记录,这样很容易的跟踪你所做的操作
- Collections:通过创建集合来组织你的测试套件。每个集合下可能有多个子文件夹和多个请求。请求或文件夹也可以被复制
- Request tab:这将显示您正在处理的请求标题。默认对于没有标题的请求会显示“Untitled Request”
- HTTP Request:单机它将显示不同请求的下拉列表,例如GET,POST,COPY,DELETE等等,在测试中最常用的请求是GET和POST.
- Request URL:也称为端点,显示API的URL
- Save:如果对请求进行了修改,必须单机save,这样新的更改才不会丢失或覆盖
- Params:这里将编写请求所需的参数,比如key-value
- Authorization:为了访问api,需要适当的授权。它可以是Username、Password、Token等形式
- Headers:请求头信息
- Body:请求体信息,一般在POST中才会使用到
- Pre-request Scipt:请求之前先执行脚本,使用设置环境的预请求脚本来确保在正确的环境中运行测试
- Tests:这些脚本实在请求期间执行的。进行测试非常重要,因为它设置检查点来响应状态是否正常、检索的数据是否符合预期以及其他测试
- Settings:最新版本有的设置,一般用不到
界面介绍:
六、处理GET请求
get请求用于从指定的URL获取信息,不会对端点进行任何更改,使用如下URL作为演示:
https://jsonplaceholder.typicode.com/users在Postman的工作区中:
- 1、选择HTTP请求方式为GET
- 2、在URL区域输入链接
- 3、点击“send”按钮
- 4、你将看到下方返回200状态码
- 5、在正文中有10个用户的结果,代表测试成功运行
注意:在某些情况下,GET请求失败可能由于URL无效或需要身份验证。
七、处理POST请求
Post请求和Get请求不同,因为存在用户向端点添加数据的数据操作。使用之前Get请求中相同的数据,现在添加我们自己的用户
7.1、正常get请求
step 1)创建一个新的请求
step 2)在新请求中
- 1、选择HTT请求方式为POST
- 2、在URL区域输入链接:https://jsonplaceholder.typicode.com/users
- 3、切换到Body选项
step 3)Body选项
- 1、选中raw选项
- 2、选择JSON
step 4) 复制前面Get请求返回的json内容的第一节,更改id为11,更改name、username、email
[ { "id": 11, "name": "wjww", "username": "qqq", "email": "www@april.biz", "address": { "street": "Kulas Light", "suite": "Apt. 556", "city": "Gwenborough", "zipcode": "92998-3874", "geo": { "lat": "-37.3159", "lng": "81.1496" } }, "phone": "1-770-736-8031 x56442", "website": "hildegard.org", "company": { "name": "Romaguera-Crona", "catchPhrase": "Multi-layered client-server neural-net", "bs": "harness real-time e-markets" } } ]注意:检查Body里用到的JSON格式很重要,以确保数据正确。检测的工具比如:https://jsonformatter.curiousconcept.com/
step 5)发送请求
1、完成上述的信息输入,点击Send按钮
2、Staus:显示201,为创建成功
3、并在Body里返回数据
7.2、参数化get请求
Step 1) 创建一个参数化get请求
- 1、将HTTP请求设置为get
- 2、输入URL: https://jsonplaceholder.typicode.com/users,这里将链接的域名部分替换为参数,例如{{url}},请求的url现在应该是{{url}}/users
- 3、点击send按钮
结果会报错,因为我们没有设置参数的源,如下图:
Step 2)使用环境设置所需的参数
1、点击Globals的add按钮
Step 3)变量-variable
1、将名称设置为url,该url为https://jsonplaceholder.typicode.com
2、ctrl+s保存
Step 4)回到get请求页面,然后点击发送Send按钮,get请求会返回结果,如下图:
八、创建Postman Tests
postman tests在请求中添加JS代码来协助验证结果,如:成功或失败状态、预期结果的比较等等。
通常从pm.test开始,他可能与断言相比较,验证其他工具中的可用的命令
借来下创建一个包含Test的请求:
Step 1) 创建一个get请求
1、选择上方的Scripts标签
2、选择左侧的Post-response
3、从下面Snippets中选择“Status code:code is 200”,JS代码就会自动出现在窗口
Step 2)点击发送请求按钮,测试结果就显示出来了,如下图:
Step 3)再添加另一个测试,这次将比较预期结果和实际结果
1、在Snippets中选择“Response body:JSON value check”选项,会出现一段代码,这个是用来检查值是否存在
Step 4)
1、代码中“Your Test Name”指的是这个测试的名字,描述测试的目的和内容
2、jsonData.value替换为jsonData[0].name(第一条测试数据的name值,第二条数据的全部值是:jsonData[1])
3、在eql后面的括号里输入Leanne Graham,这个测试的目的是判断第一条数据的name值是不是Leanne Graham
pm.test("检查第一条用例数据的name是Leanne Graham", function () { var jsonData = pm.response.json(); pm.expect(jsonData[0].name).to.eql("Leanne Graham"); });Step 5)点击send发送请求,可以看到在Test Results里有两项显示测试通过
注意:在这里可以创建不同种类的测试,可以多探索下
九、创建测试集合
集合在组织测试套件中扮演重要角色,可以被导入或者带出,使得在团队之间共享集合和容易,本节学习如何创建和执行集合
1、点击左上角+,选择collection(集合)
2、创建collection窗口会出现在左侧,修改名称和对集合的描述
3、可以在左侧栏里观察到collection已经被创建好了
4、这就相当于文件夹,可以在里面创建各式各样的文件(请求)
十、运行集合
Step1)点击要运行集合的左边的省略号,选择Run
step 2)可以在左侧框选择要运行的Sequence,在左侧选择设置的内容,不懂的时候翻译下意思,
step 3)点击start run按钮,运行完就可以看到一些结果
十一、使用Newman运行集合
运行集合还可以通过newman,newman和collection runner之间的主要区别如下:
- Newman是postman的替代品,所以需要单独安装newman
- Newman使用命令行,而collection runner使用UI界面
- Newman可以持续集成
安装Newman并运行collection,步骤如下
Step 1)下载并安装nodejs:http://nodejs.org/download/
Step 2)打开cmd命令行窗口输入下列命令
npm install -g newmanStep 3) newman安装好后,回到postman,点击需要运行collection右侧的省略号,点击export collection
Step 4)点击export JSON导出collection集合
Step 5) 另外还需要导出我们的环境,比如global和environment,例如:点击Global,在右上角的省略号里勾选shared value,然后设置内容和Shared相同。
Step 6) 点击右上角export,将JSON文件保存在和collection的JSON文件相同的文件夹里
Step 8) 在文件夹里打开cmd,使用下面的命令运行测试集合,运行结果如图
newman run postman_collection.json -e globals.json关于Newman的一些基础命令如下:
1、只运行集合(没有环境或测试数据文件依赖关系,选择此命令)
newman run <collection name>2、运行集合和环境
newman run <collection name> -e <environment name>3、让集合迭代几遍(跑几次)
newmna run <collection name> -n <no.of iterations>(次数)4、运行数据文件
newman run <collection name> --data <file name> -n <no.of iterations>5、设置延迟时间(这一点很重要,因为如果请求在后台服务器上完成,完成前一个请求时没有延迟时间直接启动下一个请求,测试可能会失败)
newman run <collection name> -d <delay time>