基础应用
接口测试的简介和分类
接口测试就是测试系统组件接口之间的一种测试
分类:
测试外部接口:测试被测系统和外部系统之间的接口
测试内部接口:
内部接口只提供给内部系统使用 内部接口提供给外部系统使用
接口测试的流程以及用例的设计
拿到接口api文档,熟悉接口业务,接口地址,鉴权方式,入参,出参,错误码
编写接口用例以及评审
思路:
正例:输入正常入参,接口能够成功返回数据
反例:
鉴权反例: 鉴权码为空,鉴权码错误,鉴权码过期…
参数反例: 参数为空,参数类型异常,参数长度异常
错误码覆盖: 根据业务而定的
其他错误场景: 接口黑名单,接口调用次数限制,分页场景 使用接口测试工具postman执行接口测试
④postman+newman+jenkins实现持续集成,并且输出测试报告,且发送邮件
实战-微信公众平台接口
获取权限: appid
secret
postman界面功能介绍
Home-主页
Workspaces-工作空间 Collections:集合,项目集合 APIS:api文档 Environments:环境变量,全局变量 MockServer:虚拟服务器 Monitors:监听器 History:历史记录
postman执行接口测试
请求页签:
Params:get请求传参
Authorizition:鉴权
Headers:请求头
Body:post请求传参 none:没有参数 form-data:既可以传键值对参数,也可以传文件 x-www-form-urlencoded:只能传键值对参数 raw:json,text,xml,html,javaScript binary:把文件以二进制的方式传参
Pre-request-script:请求之前的脚本
Tests:请求之后的断言
Settings:设置
Cookies:用于管理cookie信息
响应页签:
Body:接口返回的数据 Pretty:以json,html,xml…不同的格式查看返回的数据 Raw:以文本的方式查看返回的数据 PreView:以网页的方式查看返回的数据
Cookies:响应的Cookie信息
Headers:响应头
TestResults:断言的结果
200-状态码 OK-状态信息
681ms:响应时间
343B:响应的字节数
Get请求和Post请求的区别:
get请求一般是获取数据,post请求一般是提交数据
post请求比get请求安全
本质区别是传参方式不同: get请求在地址栏后面以?的方式传参,多个参数用&分隔 post请求是在body以表单的方式传参
问题:
多种环境:开发环境,测试环境,生产环境 接口关联:需要手动关联 参数需要手动修改
postman的环境变量及全局变量
环境变量:环境变量就是全局变量全局变量:能够在任何接口中访问的变量
获取环境变量和全局变量的值是通过:{{变量名}}
接口关联
json提取器实现接口关联
第一个接口:
console.log(responseBody);
//使用json提取器提取access_token值
//把返回的字符串格式的数据转换成对象的形式
var result = JSON.parse(responseBody);
console.log(result.access_token);
//把access_token设置为全局变量
pm.globals.set('access_token', result.access_token);
第二个接口:
{{access_token}}
使用正则表达式提取器实现接口关联
第一个接口:
//使用正则表达式提取器实现接口关联,match匹配
var result = responseBody.match(new RegExp(''access_token':'(.*?)''));
console.log(result[1]);
//设置为全局变量
pm.globals.set('access_token', result[1]);
第二个接口:
{{access_token}}
postman内置动态参数以及自定义的动态参数
内置动态参数
{{$timestamp}}:生成当前时间的时间戳
{{$randomint}}:生成0-1000之间的随机数
{{$guid}}:生成速记GUID字符串
自定义动态参数
使用时:{{times}}
测试其他接口
get请求:在Params中编写内容post请求:在Body中编写增删改查:需要形成一个闭环文件上传:在Body中的form-data中选择file
常规断言: Statuscode:Codeis200检查返回的状态码是否为200
Responsebody:Containsstring检查响应中包含指定字符串
Responsebody:Jsonvaluecheck检查响应中其中json的值
Responsebody:isequaltoastring检查响应等于一个字符串
Responseheaders:Content-Type…检查是否包含响应头Content-Type
Responsetimeislessthan200ms:检查请求耗时小于200ms自定义动态断言:在断言中获取自定义动态参数的方式:
①pm.globals.get('times')
②globals['times']
③globals.times
全局断言:
1postman批量运行测试用例
postman数据驱动之CSV文件和JSON文件的处理
测试必须带请求头的接口
常见的请求头:
Host:请求的主机地址
Collection:连接方式
Accept:客户端收到的数据格式【常用】
X-Requested-With:异步请求【常用】
User-Agent:客户端的用户类型【常用】
Referer:来源
Cookie:Cookie信息【常用】
Content-Type:请求内容的格式【常用】
mock:模拟后端的接口还没有开发完成,前端的业务需要调用后端的接口
{“error_code”:0,msg:“返回成功”,data:[]}
什么是cookie?
cookie是一小段文本,格式:key=value
cookie鉴权的原理:【重要】
当客户端第一次访问服务器时,服务器就会生成cookie信息,且在响应头的set-cookie中把生成的cookie信息发送给客户端
当客户端第2-N次访问服务器时,客户端会在请求头的cookie带上cookie信息,从而实现鉴权
cookie的分类:
会话cookie:保存在内存,当浏览器关闭后会自动化消除cookie
持久cookie:保存在硬盘,浏览器关闭后不会清除,只有当失效时间到了才会自动清除
postman专门为接口测试而生,newman转为postman而生,newman可以让postman的脚本通过非GUI的方式去运行
运行命令:newmanrun
常用参数:
-e:引用环境变量
-g:引用全局变量
-d:引用数据文件
-n:指定测试用例迭代次数
-rcli,html,json,junit--reporter-html-export:指定生成HTML的报告
postman+newman+Jenkins实现接口测试持续集成
新建一个项目
设置自定义工作空间
文章为作者独立观点,不代表股票交易接口观点