文章目录
-
- [一. 接口测试的简介、分类、流程、用例设计;](#一. 接口测试的简介、分类、流程、用例设计;)
-
- [1.1 接口测试的流程,以及接口用例的设计思路](#1.1 接口测试的流程,以及接口用例的设计思路)
- [二. Postman 工具基础](#二. Postman 工具基础)
- [三. Postman 内置动态参数以及自定义的动态参数](#三. Postman 内置动态参数以及自定义的动态参数)
-
- [3.1 postman 内置动态参数,其使用方式:传参时,在Body/Params中调用{{name}}](#3.1 postman 内置动态参数,其使用方式:传参时,在Body/Params中调用{{name}})
- [3.2 postman 自定义动态参数:Script中定义动态参数,并设为环境变量或全局变量](#3.2 postman 自定义动态参数:Script中定义动态参数,并设为环境变量或全局变量)
-
- [3.2.1 在Script 中定义动态参数并设为环境变量或全局变量,在Params/Body即可调用{{变量名}}](#3.2.1 在Script 中定义动态参数并设为环境变量或全局变量,在Params/Body即可调用{{变量名}})
- [3.2.2 示例:上一个接口的响应为下一个接口的入参,内置变量调用](#3.2.2 示例:上一个接口的响应为下一个接口的入参,内置变量调用)
- [3.3 文件上传-示例,及文件上传时postman设置,需上传的文件也要放在setting里的Location地址下](#3.3 文件上传-示例,及文件上传时postman设置,需上传的文件也要放在setting里的Location地址下)
- [四. Postman 断言](#四. Postman 断言)
-
- [4.0 postman Scripts辅助工具:Snippets:在忘记脚本时,很好的提示工具,不论断言、还是获取响应、变量](#4.0 postman Scripts辅助工具:Snippets:在忘记脚本时,很好的提示工具,不论断言、还是获取响应、变量)
- [4.1 postman 断言:Scripts中常用的几种语法,以及示例](#4.1 postman 断言:Scripts中常用的几种语法,以及示例)
- [4.2 postman 断言:可将接口共同的断言放在collections集合 或 folder文件夹的Scripts中;](#4.2 postman 断言:可将接口共同的断言放在collections集合 或 folder文件夹的Scripts中;)
- [五. Postman 批量执行 接口用例](#五. Postman 批量执行 接口用例)
-
- [5.1 postman下批量执行不同界面示例](#5.1 postman下批量执行不同界面示例)
-
- [5.1.1 postman 功能测试-界面示例](#5.1.1 postman 功能测试-界面示例)
- [5.1.2 postman 性能测试-界面示例](#5.1.2 postman 性能测试-界面示例)
- [5.2 postman下批量执行结果Result界面示例](#5.2 postman下批量执行结果Result界面示例)
- [六. Postman 数据驱动(.csv文件 / .json文件)](#六. Postman 数据驱动(.csv文件 / .json文件))
-
- [6.1 本地准备.csv或.json文件](#6.1 本地准备.csv或.json文件)
- [6.2 Runner中Test Data选择本地数据文件,最新postman可将其保存在DATASETS中,以便后续随时使用;](#6.2 Runner中Test Data选择本地数据文件,最新postman可将其保存在DATASETS中,以便后续随时使用;)
-
- [6.2.1 选择本地文件作为TestData](#6.2.1 选择本地文件作为TestData)
- [6.2.2 Runner中选择本地文件,并将该文件中的数据保存至DATASETS中,以后Run时,可直接选择;](#6.2.2 Runner中选择本地文件,并将该文件中的数据保存至DATASETS中,以后Run时,可直接选择;)
- [6.2.3 Runner中选择DATASETS中已存储的数据作为TestData](#6.2.3 Runner中选择DATASETS中已存储的数据作为TestData)
- [6.2.4 Runner中,使用了数据驱动,如何在Scripts中获取本地文件/DATASETS中字段值?](#6.2.4 Runner中,使用了数据驱动,如何在Scripts中获取本地文件/DATASETS中字段值?)
- [6.2.5 数据驱动执行下,结果示例](#6.2.5 数据驱动执行下,结果示例)
- [七. Postman 的接口Mock Server 服务器](#七. Postman 的接口Mock Server 服务器)
-
- [7.1 postman Mock Server 服务器的创建](#7.1 postman Mock Server 服务器的创建)
- [7.2 postman Mock Server 创建后,页面示例-->服务部署、url复制等操作](#7.2 postman Mock Server 创建后,页面示例-->服务部署、url复制等操作)
-
- [7.2.1 服务部署两种方式:(本地运行)run locally、(部署为MockServer)Deploy as MockServer](#7.2.1 服务部署两种方式:(本地运行)run locally、(部署为MockServer)Deploy as MockServer)
-
- [7.2.1.1 (本地运行)start,URL复制在模拟接口中,正常请求](#7.2.1.1 (本地运行)start,URL复制在模拟接口中,正常请求)
- [7.2.1.2 部署wei为MockServer,URL复制在模拟接口中,正常请求](#7.2.1.2 部署wei为MockServer,URL复制在模拟接口中,正常请求)
- [7.3 postman Mock 接口的创建方式:两种方式](#7.3 postman Mock 接口的创建方式:两种方式)
- [八. Postman 新版+CLI+Jenkins自动化持续集成](#八. Postman 新版+CLI+Jenkins自动化持续集成)
-
- [8.1 安装 postman CLI (工具上提供了Linux、windows、macOS的安装方式)](#8.1 安装 postman CLI (工具上提供了Linux、windows、macOS的安装方式))
- [8.2 Add Postman API key](#8.2 Add Postman API key)
- [8.3 复制两条命令在命令行运行就行;在Jenkins上也是同样将两条命令放在Item的Build配置;](#8.3 复制两条命令在命令行运行就行;在Jenkins上也是同样将两条命令放在Item的Build配置;)
- [8.4 postman CLI 命令行 或者在Jenkins CI/CD run collection时,几个注意点](#8.4 postman CLI 命令行 或者在Jenkins CI/CD run collection时,几个注意点)
-
- [8.4.1 如果在postman CLI 命令行执行时,没有获取env的参数值{{val}},多半是postman 中的env没有同步云端,export 导出的json文件value也是为空的;](#8.4.1 如果在postman CLI 命令行执行时,没有获取env的参数值{{val}},多半是postman 中的env没有同步云端,export 导出的json文件value也是为空的;)
- [8.4.2 postman CLI 命令行执行如何使用数据驱动传参:--iteration-data 指定csv目录--iteration-count 迭代数](#8.4.2 postman CLI 命令行执行如何使用数据驱动传参:--iteration-data 指定csv目录--iteration-count 迭代数)
一. 接口测试的简介、分类、流程、用例设计;
接口测试 :测试系统组件接口之间的测试;
分类 :
测试外部接口 :测试被测系统和外部系统之间的接口(只需测试正例即可)
测试内部接口 :1 . 内部接口只提供给内部系统使用(只需测试正例即可) 2. 内部接口提供给外部系统使用(必须非常全面、正例、异常场景,权限、性能等)
1.1 接口测试的流程,以及接口用例的设计思路
- 拿到接口api文档(一般找研发,也可通过抓包工具获取),熟悉接口业务,接口地址,鉴权方式,入参,出参,错误码
- 编写接口用例及评审(思路如下:
1. 正例 :输入正常入参,接口成功返回数据;
2. 反例 :
鉴权反例: 鉴权码为空、鉴权码错误、鉴权码过期,......
参数反例: 参数为空、参数类型异常、参数长度异常,......
错误码覆盖:根据业务而定。
其他特殊错误场景:接口黑名单、接口调用次数限制、分页场景,...... - 使用接口测试工具Postman执行接口测试
- Postman+Newman+Jenkins实现持续集成,输出测试报告并且发送邮件;
二. Postman 工具基础
Postman使用细则说明:Manage Cookies、GENERATE CODE SNIPPETS(生成代码段)、Collections管理接口、Setting
三. Postman 内置动态参数以及自定义的动态参数
3.1 postman 内置动态参数,其使用方式:传参时,在Body/Params中调用{{$name}}
{``{$timestamp}}:生成当前时间的时间戳。{``{$randomint}}:生成一个介于 0 到 1000 之间的随机整数。{``{$guid}}:生成一个随机的全局唯一标识符(GUID)字符串。

3.2 postman 自定义动态参数:Script中定义动态参数,并设为环境变量或全局变量
3.2.1 在Script 中定义动态参数并设为环境变量或全局变量,在Params/Body即可调用{{变量名}}

3.2.2 示例:上一个接口的响应为下一个接口的入参,内置变量调用


3.3 文件上传-示例,及文件上传时postman设置,需上传的文件也要放在setting里的Location地址下


四. Postman 断言
4.0 postman Scripts辅助工具:Snippets:在忘记脚本时,很好的提示工具,不论断言、还是获取响应、变量


4.1 postman 断言:Scripts中常用的几种语法,以及示例

4.2 postman 断言:可将接口共同的断言放在collections集合 或 folder文件夹的Scripts中;
执行顺序 :collections集合测试、folder文件夹测试,然后是request请求测试


五. Postman 批量执行 接口用例
5.1 postman下批量执行不同界面示例
5.1.1 postman 功能测试-界面示例



5.1.2 postman 性能测试-界面示例

5.2 postman下批量执行结果Result界面示例

六. Postman 数据驱动(.csv文件 / .json文件)
6.1 本地准备.csv或.json文件

6.2 Runner中Test Data选择本地数据文件,最新postman可将其保存在DATASETS中,以便后续随时使用;
6.2.1 选择本地文件作为TestData

6.2.2 Runner中选择本地文件,并将该文件中的数据保存至DATASETS中,以后Run时,可直接选择;

6.2.3 Runner中选择DATASETS中已存储的数据作为TestData

6.2.4 Runner中,使用了数据驱动,如何在Scripts中获取本地文件/DATASETS中字段值?
python
# 数据驱动(本地文件.csv 或者 DATASETS 你肯定准备了不同入参下,不同的验证值)获取执行迭代中验证字段的值
pm.iterationData.get('test_data中的字段名')

6.2.5 数据驱动执行下,结果示例


七. Postman 的接口Mock Server 服务器
mock 模拟:后端的接口还没有开发完成,前端的业务需要调用后端的接口;此时,就可使用mock server 模拟后端接口;
7.1 postman Mock Server 服务器的创建


7.2 postman Mock Server 创建后,页面示例-->服务部署、url复制等操作
7.2.1 服务部署两种方式:(本地运行)run locally、(部署为MockServer)Deploy as MockServer

7.2.1.1 (本地运行)start,URL复制在模拟接口中,正常请求


7.2.1.2 部署wei为MockServer,URL复制在模拟接口中,正常请求



7.3 postman Mock 接口的创建方式:两种方式


八. Postman 新版+CLI+Jenkins自动化持续集成
8.1 安装 postman CLI (工具上提供了Linux、windows、macOS的安装方式)



安装过程中:

安装完毕:

8.2 Add Postman API key




8.3 复制两条命令在命令行运行就行;在Jenkins上也是同样将两条命令放在Item的Build配置;

8.4 postman CLI 命令行 或者在Jenkins CI/CD run collection时,几个注意点
8.4.1 如果在postman CLI 命令行执行时,没有获取env的参数值{{val}},多半是postman 中的env没有同步云端,export 导出的json文件value也是为空的;

8.4.2 postman CLI 命令行执行如何使用数据驱动传参:--iteration-data 指定csv目录--iteration-count 迭代数
python
postman collection run col_id -e idf-a3c0-9035f2979184 -i 3di --iteration-data ./testdata.csv
--iteration-count 3