About Me
飞儿老师
- 某网约车平台测试工程师
- 某地图平台测试工程师
- 擅长功能测试和接口自动化测试
扫码领取本节相关资料
思考:为什么要做接口测试?
什么是接口测试
- 主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点
- 接口参数传递的正确性
- 接口功能实现的正确性
- 输出结果的正确性
- 对各种异常情况的容错处理的完整性和合理性
什么是接口
接口测试的方式
学习路线
小练习
- 接口功能测试可以选择的工具有
- A. charles
- B. mitmproxy
- C. postman
- D. requests
扫码领取本节相关资料
About Me
飞儿老师
- 某网约车平台测试工程师
- 某地图平台测试工程师
- 擅长功能测试和接口自动化测试
扫码领取本节相关资料
目录
- postman 工具介绍
- postman 安装
- 页面介绍
Postman 工具介绍
- 快速构建请求
- 提供响应结果的比较功能
- 查看测试结果
- 批量运行
- 设置环境变量
Postman 安装
Postman 页面介绍
课堂练习
- Postman 支持的功能有
- A. 快速构建请求
- B. 数据驱动
- C. 提供响应结果的比较功能
- D. 设置环境变量
扫码领取本节相关资料
About Me
飞儿老师
- 某网约车平台测试工程师
- 某地图平台测试工程师
- 擅长功能测试和接口自动化测试
扫码领取本节相关资料
发送 GET 请求
- 新建请求
- 填写请求方式:GET
- 填写请求 URL:
- 填写请求参数: para_key = para_value
课堂练习
- postman 中 GET 请求的请求参数应该填写在哪里
- A. Params
- B. Headers
- C. Body
- D. Tests
扫码领取本节相关资料
About Me
飞儿老师
- 某网约车平台测试工程师
- 某地图平台测试工程师
- 擅长功能测试和接口自动化测试
扫码领取本节相关资料
目录
- 发送 POST 请求
- 添加 form 格式请求参数
- 添加 json 格式请求参数
- 添加文件格式请求参数
添加 json 格式请求参数
- 请求参数:Body --> raw --> JSON
添加文件格式请求参数
- 请求参数:Body --> form-data --> File
课堂练习
- postman 中发送 json 格式请求参数的 post 请求参数应该通过哪里传入
- A. Params
- B. Body --> form data
- C. Body --> raw
- D. Tests
扫码领取本节相关资料
About Me
飞儿老师
- 某网约车平台测试工程师
- 某地图平台测试工程师
- 擅长功能测试和接口自动化测试
扫码领取本节相关资料
接口响应
- 状态行:http 版本、响应状态码、状态解释语句
- 响应头信息
- 响应报文
postman 查看接口响应
课堂练习
- postman 中在哪里查看测试结果
- A. Headers
- B. Cookies
- C. Body
- D. Test Results
扫码领取本节相关资料
About Me
飞儿老师
- 某网约车平台测试工程师
- 某地图平台测试工程师
- 擅长功能测试和接口自动化测试
扫码领取本节相关资料
操作请求头信息
操作 Cookie
- 查看 Cookie 信息
- 编辑 Cookie 信息
课堂练习
- postman 中是否支持修改 Cookie
- A. 不支持
- B. 支持
扫码领取本节相关资料
About Me
飞儿老师
- 某网约车平台测试工程师
- 某地图平台测试工程师
- 擅长功能测试和接口自动化测试
扫码领取本节相关资料
断言的作用
- 断言,就是结果和预期对比,例如要测试返回结果是否含有某一字符串
- 一致,用例通过,返回 PASS
- 不一致,用例失败,返回 FAIL
验证响应状态码
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
扫码领取本节相关资料
About Me
飞儿老师
- 某网约车平台测试工程师
- 某地图平台测试工程师
- 擅长功能测试和接口自动化测试
环境变量介绍
- postman 可以设置多套环境
- 每套环境里可以有多个环境变量
环境变量引用
- 选择环境
- 引用方式:{{variableName}}
About Me
飞儿老师
- 某网约车平台测试工程师
- 某地图平台测试工程师
- 擅长功能测试和接口自动化测试
全局变量介绍
- postman 只可以设置一组全局变量
- 作用于整个 postman
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}}"
}
}
About Me
飞儿老师
- 某网约车平台测试工程师
- 某地图平台测试工程师
- 擅长功能测试和接口自动化测试
思路分析
- 获取 token 值
- 存入环境变量或者全局变量
- 关联接口调用变量
实战演练
- POST 请求中返回 token 值
- 在 Test 中编写脚本提取响应中的 token 值
- 把提取到的 token 值存入环境变量
- 下一个 POST 请求的头信息中添加 token
//获取响应数据的json对象
var jsonData = pm.response.json();
//从json对象中提取token值
var token = jsonData.json.token;
//把token值设置为环境变量
pm.environment.set("token", token);
About Me
飞儿老师
- 某网约车平台测试工程师
- 某地图平台测试工程师
- 擅长功能测试和接口自动化测试
测试集常用功能
创建测试集
测试集中添加请求
- 已经写好的接口用例保存至测试集
- 在测试集中新建接口用例
运行测试集
- 选择测试集
- Run collection
- 选择要运行的用例
- 查看运行结果
About Me
飞儿老师
- 某网约车平台测试工程师
- 某地图平台测试工程师
- 擅长功能测试和接口自动化测试
什么是数据驱动
- 相同的测试脚本使用不同的测试数据
- 数据的改变从而驱动自动化测试的执行
- 最终引起测试结果的改变
数据驱动步骤
- 编写测试脚本
- 将测试脚本使用的测试数据存储到文件中
- 运行脚本,循环调用存储在文件的测试数据
- 验证所有的测试结果是否符合期望的结果
postman 实现数据驱动
- 分析用例,设计数据文件
- 测试集中选择数据文件
- 运行测试集
创建部门接口
{
"name": "霍格沃兹",
"name_en": "HOGWARTS",
"parentid": 1,
"order": 2,
"id": 2
}
接口测试用例设计
数据驱动方式完成创建部门接口测试
- 准备测试数据
- 修改 body
- 修改断言
- 运行测试集