接口测试-结合Postman的使用

一、接口测试对象及概念

  接口测试是项目测试的一部分 ,它测试的主要对象是接口 ,是测试系统组件间接口的一种测试。
  接口测试主要用于检测外部系统与所测系统之间以及内部各系统之间的交互点,模拟实际场景(服务架构、数据场景、业务场景),对接口进行模拟调用,验证其响应性
能、输出结果、异常处理等测试点。测试的重点是检查数据交互、传递、和控制管理过程以及系统间的相互依赖关系等。
 

二、接口测试流程

  1)开发人员设计接口形成文档(wiki、swagger等),文档内容中包含接口请求地址、接口参数个数与类型、接口的用途
  2)测试人员获取和熟悉接口文档:业务需求,接口的参数类型、个数
  3)设计接口测试方案以及用例
  4)使用工具录入接口测试用例并执行,提交和跟踪接口测试发现的bug
  5)编写接口测试报告
  注意:
  接口测试的流程尽量标准化
  接口测试前移,尽早发现问题,一般接口测试在开发联调阶段可以开始
 

三、接口测试用例设计方法

  1)请求参数的必填项和可选项;
  2)请求参数的合法输入和非法输入;
  3)请求参数的边界值;
  4)请求参数的异常处理,例如:未带入必填项参数等
  基于业务场景的考虑,例如:登录态、权限、依赖性等
  涉及到DAO层(持久层)调用的,考虑数据增删改查的正确性(接口操作数据库)
 

四、接口测试工具-Postman

1、postman主页功能介绍

2、模拟发送get请求

3、模拟发送post请求 

4、查看响应信息

  • pretty形式的响应信息只是为了显示更美观,有换行和空格等字符,所以不能直接用作断言
  • 断言使用Raw形式的原始格式

4、截取实时响应断言新旧版本对比

postman在tests页签获取响应内容:
tests页签支持javascripts语法,可以把获取的响应内容放入定义的变量中。然后使用
tests[变量名]进行输出。
1、获取响应行
var code = responseCode.code; //获取响应状态码
var name = responseCode.name; //获取响应状态信息
2、获取响应头
var content_type = postman.getResponseHeader('Content-Type') //获取响应头
var path = postman.getResponseCookie('_ac_app_ua').path ; //获取cookie信息
3、获取响应正文
var body = responseBody;
var time = responseTime;
5、利用正则表达式截取部分响应正文
var title = body.match( new RegExp('<title>(.+?)</title>'))[1];
6、响应正文为json时,可以利用postman进行解析再获取部分响应正文
var jsondata = JSON.parse(responseBody); //把响应正文转化为json对象
var token = jsondata.access_token; //json对象名.键名

 

5、postman新旧断言使用 举例

// 新旧版本 获取响应状态码
// var code=responseCode.code;//获取响应状态码
var code1=pm.response.code;//获取响应状态码
tests['case_1:参数传值正确,验证响应状态码是否200']=code1 ===200

//新旧版本 获取响应状态信息
var info=responseCode.name;
var info1=pm.response.status;
tests[info1]=true

// 新旧版本获取响应时间
// var time =responseTime;
var time =pm.response.responseTime;
tests[time]=true
tests['case_2:验证响应时间是否在100ms~200ms之内']=time>=100 && time<=300

// 新旧版本获取响应头
var value =postman.getResponseHeader('Content-Type');
// var value =pm.response.headers;
tests[value]=true
tests['case_3:验证响应头信息Content-Type是否是json格式'] = value.has('application/json');

// 新旧版本获取响应正文
var body = responseBody;
// var body = pm.response.text()
tests[body]=true
tests['case_4:验证响应正文是否返回access_token']=responseBody.has('33');

正则表达式:

 

先获取json解析对象,再断言

 
PS:
接口测试中容易忽略的问题:
  1)接口有翻页时,页码与页数的异常值测试
  2)数据库的增删改查,比如一个post接口操作完成后,通过列表页接口看下新的数据是否和刚才的post一致
  3)每个接口入参的默认值、异常类型、非空校验
  4)接口返回的图片地址能否打开,图片尺寸是否符合需求
  5)当输出参数有联动性时,需要校验返回两参数的实际结果是否都符合需求
  6)所有列表页接口必须考虑排序值
  7)所有功能都要考虑兼容旧版本
  8)入参支持传多个值时,要考虑传的值的个数多的情况下,接口会不会报错
  9)输出参数类型
posted @ 2020-05-20 13:44  咿~Summer  阅读(548)  评论(0编辑  收藏  举报