postman
postman工具:基础版本免费,足以够用。linux系统可以使用curl命令行工具进行接口测试,但是各种参数比较多,要求较高。
postman只支持http协议
1.get请求也可以直接使用浏览器访问,但是浏览器无法定制化请求,比如定制header
2.chrom版本和native版本的区别
A.native版本可以直接操作cookie,进行登录鉴权,而chrome版本需要安装扩展
B.native版本自带proxy,可以用来抓包
C.native自带菜单栏,用起来方便灵活
D.有一些headers在chrom版本上是受限的,比如Origin and User-Agent。User-Agent是身份证,通过这个服务器可以知道我们是哪个浏览器或者操作系统
E.native版本可以选择不跟踪重定向,比如可以返回300,301类的状态码
D.native自带console,可以在调试和打印的时候用,把console.log打印出来到控制台 。postman断言(检查点)一般用js语言写
http协议:
http请求:一般包含起始行,headers和body,headers其实都是一些配置,配置一些服务器的参数,请求的最后一部分是它的 body。不是所有的请求都有一个 body:例如获取资源的请求,GET,HEAD,DELETE 和 OPTIONS,通常它们不需要 body。 有些请求将数据发送到服务器以便更新数据:常见的的情况是 POST 请求(包含 HTML 表单数据)
http响应:一般包含状态行,headers和body,headers其实都是一些配置,配置一些服务器的参数。headers可以设置客户端的额cookie,响应的最后一部分是 body。不是所有的响应都有 body:具有状态码 (如 201 或 204) 的响应,通常不会有 body
Test功能:是一个js的sand box,可以执行行js的隔离环境,并不是可以访问一切的全局变量。
设置全局变量(全局公用),设置环境变量(模拟并切换测试和生成环境),拿到并处理请求的响应(一般转化成js对象),定义测试检查点和断言(检查结果,也可以根据相因时间做一些简单的性能监控)
===表是完全相等包括类型和值
sandbox:
常用的公共库:
loadsh:简化json或者迭代操作
cherrio:解析html,可以理解为简单的juery
CryptoJs:用于加密解密
chai:用于优雅格式的断言,一个框架
lodash:处理cookie,也提供了forEach语法
ui测试:可以用于ui测试,交互比较弱。一般只是获取页面HTML、对页面标签进行解析来判断元素是否存在
cookie:
console.log(pm.cookies.get('_itest5_session'));
鉴权- - -常见机制token+basic Authentication, 最主要是获取token,然后设置headers
加密,数据发送到后台是加密的。还有一个第三方登录跳转是通过OAuth2.0实现的
Pre-requestScript: 初始化一些操作,比如定义环境变量,全局变量等
collections:容器
监控和mock server收费
变量:比如测试和生产环境domain不一致,就可以定义环境变量。比如状态码或者数据和环境没关系,就可以定义为全局变量,哪个环境都能用。两个{{}}定义
变量冲突,当环境变量和全局变量冲突时,选择环境变量是,环境变量会覆盖全局变量
参数关联:
1.先创建一个环境变量,参数值不写
2.发送被依赖的接口请求,获取相应内容,并将其值设置为环境变量的值
3.在同一个环境中,使用该变量即可
数据驱动测试:就是由数据来指导测试。比如其他条件都一样,只是数据不同,有数据来决定结果成为数据驱动测试。支持json格式和cvs格式文件。
使用datatfile进行数据驱动测试,获取文件的参数需要使用data关键字。
命令行运行:可以在无界面或者持续集成系统上运行(就是执行运行脚本命令)
postman使用newman进行,Newman是个nodejs写的小工具。先安装nodejs和npm(一般cnpm,因为国内npm访问不太好)
依次安装node.js,安装cnpm
淘宝源安装
npm install -g cnpm -registry=https://registry.npm.taobao.org
配置
cnpm -v
node -v
安装newman:cnpm install newman --global
newman -h
测试报告:
CLI命令行格式报告比较优美
json格式可以存储在mangodb进行持久化,或者存在关系型数据库进行解析
html格式便于发邮件展示
junit格式可以在测试结束后会自动发解析放在jenkins里,下次build的时候是可以看到报告的
-d:数据文件, -r:指定测试报告
导出语言脚本
选择所需要的语言,后面就是跟postman无关了。运用我们熟悉的语言进行各种处理。此时postman充当一个调试的作用,接口调通。
Postman调试依赖登录接口的3种方法:
1.依次请求
如果有登录接口的文档,或者通过抓包比较容易抓出登录请求的参数和格式,可以先使用Postman请求一下登录接口,这时Cookies会存到本地(可以通过Postman Cookies管理器查看), 然后再发送依赖登录的接口即可, 如图:
由于Postman一般用作调试接口, 依次请求也不是很麻烦
2.抓取Cookies, 绕过登录(常用)
如果没有登录接口文档也懒得抓包分析登录接口,可以直接在浏览器上登录后,随便访问一个页面抓取出Cookie, 在Postman中添加到依赖登录接口的Header中(注意: 是Cookie没有s, 对应的值直接粘贴就可以,不用分成几行)
3.使用Pre-request Script脚本请求前发送登录请求
如果使用Postman作为接口自动化测试工具, 我们可以在请求前脚本中发送登录请求来使请求具有登录状态, 如图: