postman 接口测试从入门到精通

霍格沃兹测试开发学社

ceshiren.com

About Me

飞儿老师

  • 某网约车平台测试工程师
  • 某地图平台测试工程师
  • 擅长功能测试和接口自动化测试

扫码领取本节相关资料

接口测试入门必备

思考:为什么要做接口测试?

什么是接口测试

  • 主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点
    • 接口参数传递的正确性
    • 接口功能实现的正确性
    • 输出结果的正确性
    • 对各种异常情况的容错处理的完整性和合理性

什么是接口

接口测试的方式

学习路线

小练习

  • 接口功能测试可以选择的工具有
  • A. charles
  • B. mitmproxy
  • C. postman
  • D. requests

扫码领取本节相关资料

postman 基础 - 工具介绍及安装

霍格沃兹测试开发学社

ceshiren.com

About Me

飞儿老师

  • 某网约车平台测试工程师
  • 某地图平台测试工程师
  • 擅长功能测试和接口自动化测试

扫码领取本节相关资料

目录

  • postman 工具介绍
  • postman 安装
  • 页面介绍

Postman 工具介绍

  • 快速构建请求
  • 提供响应结果的比较功能
  • 查看测试结果
  • 批量运行
  • 设置环境变量

Postman 安装

Postman 页面介绍

课堂练习

  • Postman 支持的功能有
  • A. 快速构建请求
  • B. 数据驱动
  • C. 提供响应结果的比较功能
  • D. 设置环境变量

扫码领取本节相关资料

postman 基础 - 发送 GET 请求

霍格沃兹测试开发学社

ceshiren.com

About Me

飞儿老师

  • 某网约车平台测试工程师
  • 某地图平台测试工程师
  • 擅长功能测试和接口自动化测试

扫码领取本节相关资料

发送 GET 请求

课堂练习

  • postman 中 GET 请求的请求参数应该填写在哪里
  • A. Params
  • B. Headers
  • C. Body
  • D. Tests

扫码领取本节相关资料

postman 基础 - 发送 post 请求

霍格沃兹测试开发学社

ceshiren.com

About Me

飞儿老师

  • 某网约车平台测试工程师
  • 某地图平台测试工程师
  • 擅长功能测试和接口自动化测试

扫码领取本节相关资料

目录

  • 发送 POST 请求
  • 添加 form 格式请求参数
  • 添加 json 格式请求参数
  • 添加文件格式请求参数

发送 POST 请求

添加 form 格式请求参数

  • 请求参数:Body --> form-data

添加 json 格式请求参数

  • 请求参数:Body --> raw --> JSON

添加文件格式请求参数

  • 请求参数:Body --> form-data --> File

课堂练习

  • postman 中发送 json 格式请求参数的 post 请求参数应该通过哪里传入
  • A. Params
  • B. Body --> form data
  • C. Body --> raw
  • D. Tests

扫码领取本节相关资料

postman 基础 - 接口响应详解

霍格沃兹测试开发学社

ceshiren.com

About Me

飞儿老师

  • 某网约车平台测试工程师
  • 某地图平台测试工程师
  • 擅长功能测试和接口自动化测试

扫码领取本节相关资料

接口响应

  • 状态行:http 版本、响应状态码、状态解释语句
  • 响应头信息
  • 响应报文

postman 查看接口响应

课堂练习

  • postman 中在哪里查看测试结果
  • A. Headers
  • B. Cookies
  • C. Body
  • D. Test Results

扫码领取本节相关资料

postman 基础 - 头信息

霍格沃兹测试开发学社

ceshiren.com

About Me

飞儿老师

  • 某网约车平台测试工程师
  • 某地图平台测试工程师
  • 擅长功能测试和接口自动化测试

扫码领取本节相关资料

头信息

  • 通用头
  • 请求头
  • 响应头
  • 实体头

操作请求头信息

操作 Cookie

  • 查看 Cookie 信息
  • 编辑 Cookie 信息

课堂练习

  • postman 中是否支持修改 Cookie
  • A. 不支持
  • B. 支持

扫码领取本节相关资料

postman 基础 - 添加断言

霍格沃兹测试开发学社

ceshiren.com

About Me

飞儿老师

  • 某网约车平台测试工程师
  • 某地图平台测试工程师
  • 擅长功能测试和接口自动化测试

扫码领取本节相关资料

断言的作用

  • 断言,就是结果和预期对比,例如要测试返回结果是否含有某一字符串
  • 一致,用例通过,返回 PASS
  • 不一致,用例失败,返回 FAIL

postman 中添加断言

  • Tests 面板
  • javascript 脚本

断言思路

  • 状态断言
  • 业务断言
  • 性能断言

验证响应状态码

pm.test("响应状态码为 200", function () {
    pm.response.to.have.status(200);
});

验证响应中包含内容

pm.test("响应数据中包含正确的字符串", function () {
    pm.expect(pm.response.text()).to.include("xxxx");
});

验证 json 格式响应的值

pm.test("响应中的值正确", function () {
    var jsonData = pm.response.json();
    pm.expect(jsonData.xxxx).to.eql("xxxx");
});

验证响应与字符串相同

pm.test("Body is correct", function () {
    pm.response.to.have.body("response_body_string");
});

验证响应头信息是否包含某个 key

pm.test("Content-Type is present", function () {
    pm.response.to.have.header("Content-Type");
});

验证响应时间是否小于某个值

pm.test("Response time is less than 200ms", function () {
    pm.expect(pm.response.responseTime).to.be.below(200);
});

课堂练习

  • postman 中可以实现哪些方面的断言
  • A. 响应状态码
  • B. 响应 body
  • C. 响应时间
  • D. 请求 body

扫码领取本节相关资料

postman 进阶 - 环境变量

霍格沃兹测试开发学社

ceshiren.com

About Me

飞儿老师

  • 某网约车平台测试工程师
  • 某地图平台测试工程师
  • 擅长功能测试和接口自动化测试

目录

  • 环境变量介绍
  • 环境变量设置
  • 环境变量引用

环境变量介绍

  • postman 可以设置多套环境
  • 每套环境里可以有多个环境变量

环境变量设置

  • 手动设置
  • 脚本设置

环境变量引用

  • 选择环境
  • 引用方式:{{variableName}}

postman 进阶 - 全局变量

霍格沃兹测试开发学社

ceshiren.com

About Me

飞儿老师

  • 某网约车平台测试工程师
  • 某地图平台测试工程师
  • 擅长功能测试和接口自动化测试

目录

  • 全局变量介绍
  • 全局变量设置
  • 全局变量引用

全局变量介绍

  • postman 只可以设置一组全局变量
  • 作用于整个 postman

全局变量设置

  • 手动设置
  • 脚本设置

全局变量引用

  • 引用方式:{{variableName}}

postman 进阶 - 动态参数

霍格沃兹测试开发学社

ceshiren.com

About Me

飞儿老师

  • 某网约车平台测试工程师
  • 某地图平台测试工程师
  • 擅长功能测试和接口自动化测试

内置动态参数

  • 时间戳:{{$timestamp}}
  • 随机数:{{$randomInt}}
  • 随机字符串:{{$guid}}
  • 随机邮箱:{{$randomEmail}}
  • 随机用户名:{{$randomUserName}}

实战演练

  • method: POST
  • url: {{base_url}}/post
  • json 格式请求
{
    "tag": {
        "times": "霍格沃兹测试学院{{$timestamp}}",
        "nums": "{{$randomInt}}",
        "strs": "{{$guid}}",
        "email": "{{$randomEmail}}",
        "name":"{{$randomUserName}}"
    }
}

postman 进阶 - 接口关联

霍格沃兹测试开发学社

ceshiren.com

About Me

飞儿老师

  • 某网约车平台测试工程师
  • 某地图平台测试工程师
  • 擅长功能测试和接口自动化测试

思路分析

  • 获取 token 值
  • 存入环境变量或者全局变量
  • 关联接口调用变量

实战演练

  1. POST 请求中返回 token 值
  2. 在 Test 中编写脚本提取响应中的 token 值
  3. 把提取到的 token 值存入环境变量
  4. 下一个 POST 请求的头信息中添加 token
//获取响应数据的json对象
var jsonData = pm.response.json();
//从json对象中提取token值
var token = jsonData.json.token;
//把token值设置为环境变量
pm.environment.set("token", token);

postman 进阶 - 测试集

霍格沃兹测试开发学社

ceshiren.com

About Me

飞儿老师

  • 某网约车平台测试工程师
  • 某地图平台测试工程师
  • 擅长功能测试和接口自动化测试

测试集常用功能

创建测试集

测试集中添加请求

  • 已经写好的接口用例保存至测试集
  • 在测试集中新建接口用例

运行测试集

  • 选择测试集
  • Run collection
  • 选择要运行的用例
  • 查看运行结果

postman 进阶 - 数据驱动

霍格沃兹测试开发学社

ceshiren.com

About Me

飞儿老师

  • 某网约车平台测试工程师
  • 某地图平台测试工程师
  • 擅长功能测试和接口自动化测试

什么是数据驱动

  • 相同的测试脚本使用不同的测试数据
  • 数据的改变从而驱动自动化测试的执行
  • 最终引起测试结果的改变

数据驱动步骤

  1. 编写测试脚本
  2. 将测试脚本使用的测试数据存储到文件中
  3. 运行脚本,循环调用存储在文件的测试数据
  4. 验证所有的测试结果是否符合期望的结果

postman 实现数据驱动

  • 分析用例,设计数据文件
  • 测试集中选择数据文件
  • 运行测试集

postman 实战 - 企业微信创建部门

霍格沃兹测试开发学社

ceshiren.com

项目介绍

创建测试集

  • 企业微信服务端接口
  • 通讯录管理

创建获取 token 接口

创建部门接口

{
    "name": "霍格沃兹",
    "name_en": "HOGWARTS",
    "parentid": 1,
    "order": 2,
    "id": 2
}

接口测试用例设计

数据驱动方式完成创建部门接口测试

  • 准备测试数据
  • 修改 body
  • 修改断言
  • 运行测试集