一、介绍
postman是一款强大的api调试、http请求工具;可以帮助测试api,提供强大的web api 和 http请求调试,能发送任何类型的http请求(GET、POST、PUT、UPDATE、、、);并且能带参数和headers。
二、接口
api接口指的是应用程序编程接口(Application Programming Interface),是一些预先定义的函数,或指软件系统不同组成部分衔接的约定。用来提供应用程序与开发人员基于某软件或硬件得以访问的一组例程,而又无需访问原码,或理解内部工作机制的细节。本质就是函数、动作。
通俗的说,就是软件提供给外部的一种服务,主要是用于数据交互。
三、返回格式
Json格式,xml格式,HTML格式等;主要是json格式;
{error_code:code,message:返回说明,data:返回数据}
四、postman使用
创建用例集:启动 Postman 后,控制面板。
Request 是创建一个 Request 测试请求,点击 Collection 是创建一个用例集来保存测试请求。创建 Collection 完成后,左侧生成用例集文件架,每次创建的测试接口都要保存到用例集中。Collection 更常用。当我们对一个或多个系统中的很多用例进行维护时,首先想到的就是对用例进行分类管理,同时还希望对这批用例做回归测试,这就是Collection 。
五、接口测试
以创建 get 请求为例,通常需要填入 url、params、headers,会自动把 params 拼接到 url 末尾。点击 send 按钮,请求成功,会返回响应结果。
postman面板介绍:
请求参数:params:get方式传参;authorization:鉴权,用户认证;headers:请求头;body:post方式传参;form_data:表单传参;x-www-from-urlencoeed:传键值对;
Tests:请求之后的断言;settings:设置。
cookie:响应的cookie信息,用来自动化管理cookie信息;
最右侧:document:文档说明; comment:备注; Code snippet :导出接口自动化代码,支持多种编程语言(这块最重要,其他几块理解即可);Request detail :请求信息。
响应页面:body:返回的是数据;pretty:json,xml,HTML:以各种样式显示返回数据。raw:文本格式;preview:网页格式;
console:控制台,主要用于接口调试,很重要。
在Tests:写入代码,提取返回信息:
六、接口关联
1、接口关联如何处理?
2、在接口测试中,多个接口串联如何处理?
3、上一个接口的返回值,如何作为下一个接口的参数传入?
三种方式:思想都是先提取数据,然后存为全局变量,下个接口提取使用。
1、json提取器提取:把第一个接口返回的数据转为json格式,提取,设置为全局变量;在第二个接口中用双大括号{{}} 方式取值。var responseJson = JSON.parse(responseBody)
2、正则表达式提取:通过正则表达式 match 匹配,new regExt 设规则获取,然后设置为全局变量,下一个接口用双大括号{{}} 方式取值。
3、cookie提取:
变量设置:
通过点击Globals区域Add添加你需要的变量;
通过test,先把接口的返回结果设置成环境变量,后续就可以通过环境变量的值进行关联;调用 postman.setEnvironmentVariable("id",data) ;设置变量名为id的环境变量,值为data;
七、动态参数
1、内置动态参数
{{$timestamp}} :获得时间戳,如get链接带个时间戳,保证每次请求都刷新一下;
{{$randint}} :获得0-1000的随机数,
{{$guid}} :获得guid的随机字符串
2、自定义动态参数
//手动获得时间戳
var times = Date.now();
//设置为全局变量,
pm.globals.set("times", times);
//获取时,需要使用获取全集变量方法;
pm.globals.get("variable_key");
自定义函数:如接口加密、接口签名、等待一段时间再发请求等。
八、断言
断言:判断预期结果和实际结果是否一致。
提供很多方法,右侧双击即可生成对应代码。例如状态断言,判断返回状态是200,404等;业务断言,判断返回结果是否符合预期。
九、测试环境变量配置
整个过程有开发环境、测试环境、生产环境等;不同环境的测试地址 ip 、端口等不一样;因此,在每个测试环境,把这些ip 、端口等定义为全局变量,然后根据全局变量名取值;如:设置测试环境的ip值,
环境变量:要申明环境变量,首先的创建环境,然后在环境中才能创建变量 。如果要想使用环境变量,必须先选择(导入)这个环境,这样就可以使用这个环境下的变量了。需要说明的是环境也可以创建多个 。每个环境下又可以有多个变量
测试使用到该值,直接选择对应的环境,用全局变量;这样即使环境变量,也不影响。
环境变量,也是全局变量,只是作用不一样;
十、Mock功能的使用
mock就是在测试过程中,对于一些不容易构造、获取或返回的对象,用一个虚拟的对象来替代它,从而达到想要的效果,这个虚拟的对象就是Mock,模拟后台返回的响应内容来确认当前系统的正确性。
使用场景有:
1、系统接口返回的数据不满足要求时。
2、被依赖系统还未开发完成,需要对被测系统进行测试时。
3、某些系统不支持重复请求,如支付功能。
4、系统功能有访问频次限制,限制获取敏感信息的接口访问频次。
以 mock 请求 www.baidu.com 页面的返回为例; postman设置步骤:
1、新建 collection ;添加请求 GET : www.baidu.com
2、在collection 里,右键,新建 mock server;填写要mock 的请求,及返回数据;点Next
名字随便起一个;点击 create mock server ;创建成功,要把url 复制出来,或者将url生成环境变量 ,
再次发起请求;可以看到response 数据已经发生变化;
问题:Cookie、Session,Token的相同点,不同点?
相同点:都是服务端返回的,用来鉴权的。
不同点:cookie是保存在客户端的,不安全。有被非法用户截取的风险;cookie是保存在浏览器的缓存中的,过期时间是服务器端来确定的,只要浏览器关了,就会失效。session是保存在服务器端的,通过cookie来传递的。Token的出现可以解决微服务部署的跨域访问问题,用户登录请求到一个专门的认证服务上进行认证,认证成功以后,返回通过加密后的token,客户端拿到之后,保存,下次还是这个用户访问的时候,就会带着这个token进行请求,被请求得服务拿着这个token去认证中心看下是不是该用户的,是,那么就给通过,返回响应结果。