一,简介
1,概念
- 接口:不同的系统之间相互连接的部分,是一个传递数据的通道
- 接口测试:检查数据的交换、传递和控制管理过程
2,常见的接口协议
2.1,网络模型图
2.2,常见的接口协议
2.3, RPC 协议
- RPC(Remote Procedure Call)
- 以本地代码调用的方式实现远程执行
- 主要用于公司内部的服务调用
- 优点:传输效率更高、性能损耗更低、自带负载均衡策略、更好的服务治理能力
- 常见的 RPC 协议
- Dubbo:Java 基础之上的高性能 RPC 协议
- gRPC:高性能通用 RPC 框架,基于 Protocol Buffers。PB 是一个语言中立、平台中立的数据序列化框架
- Thrift:与 gRPC 类似的多语言 RPC 框架
2.4, HTTP协议组成
-
请求
- 请求行:method url protocol
- URI,统一资源标识符,用来唯一的标识一个资源。
- URL,统一资源定位符,它是一种具体的 URI
- URL 结构:
https://www.baidu.com/s?wd=霍格沃兹&rsv_spt=1
- 协议:
http
- 域名:
www.baidu.com
- 端口:跟在域名后面,域名和端口之间使用“:”作为分隔符,非必须,如果省略端口部分将采用默认端口
- 路径:
/s
- 请求参数:
wd=霍格沃兹&rsv_spt=**1
- 协议:
- 请求方法:GET、POST、PUT、DELETE、HEAD
- 请求头: Host Cookie User-Agent
- 请求参数 query
- 请求体:JSON XML FORM
- 请求行:method url protocol
-
响应:
- 响应状态行
- 响应头
- 响应体
-
HTTP 响应状态码
- 1xx 临时响应,表示通知信息,请求收到了或正在进行处理
- 2xx 表示成功,接受或知道了
- 200 成功
- 3xx 表示重定向,要完成请求还必须才去进一步的行动
- 301 永久移动
- 302 临时移动
- 4xx 表示客户端请求错误
- 403 未授权
- 404 未找到
- 5xx 表示服务端错误
- 500 服务器内部错误
- 503 服务不可用
2.5, RESTful 架构
- Restful:Representational State Transfer
- 借助于 HTTP 协议的基本请求方法代表资源的状态切换
- GET:获取资源
- POST:新增或者更新
- PUT:更新资源
- DELETE:删除资源
3,接口用例设计
3.1,设计思路
3.2,用例要素
- 用例名称
- 接口地址
- 请求方式
- 前置条件
- 请求头部
- 请求参数
- 响应状态码
- 预期响应结果
二,postman工具使用
2.1 断言
断言内容选择:点击test选项,右边会出现可供断言的内容选项
部分断言内容:
- 验证响应状态码
- 验证响应体中是否包含某个字符串
- 验证 JSON 中的某个值是否等于预期的值
- 验证响应体是否与某个字符串完全相同
- 验证响应头信息中的 Content-Type 是否存在
- 验证响应时间是否小于某个值
// Status Code:Code is 200
// 验证响应状态码
pm.test("响应状态码为 200", function () {
pm.response.to.have.status(200);
});
// Response Body:contains string
// 验证响应体中是否包含某个字符串
pm.test("响应体中包含预期的字符串", function () {
pm.expect(pm.response.text()).to.include("doggie");
});
// Response Body:JSON value check
// 验证 JSON 中的某个值是否等于预期的值
pm.test("宠物名称为 doggie", function () {
var jsonData = pm.response.json();
pm.expect(jsonData[0].name).to.eql("doggie");
});
// Response Body:Is equal to a string
// 验证响应体是否与某个字符串完全相同
pm.test("响应体正确", function () {
pm.response.to.have.body("response_body_string");
});
// Response Body:Content-Type header check
// 验证响应头信息中的 Content-Type 是否存在
pm.test("Content-Type is present", function () {
pm.response.to.have.header("Content-Type");
});
// Response time is less than 200ms
// 验证响应时间是否小于某个值
pm.test("Response time is less than 200ms", function () {
pm.expect(pm.response.responseTime).to.be.below(200);
});
2.2 变量配置
-
Postman 中变量的种类与作用域
- Data:在测试集中上传的数据
- Environment:环境范围
- Collection:集合范围
- Global:全局范围
- Local:在脚本中设置的变量
-
变量定义
- 全局变量:Environments → Globals
- 测试集变量:测试集页面 → Variables
- 环境变量:Environments → +
-
变量的使用
- 请求 URL, Params 参数或 Body 表格或JSON/XML 文本中通过
{{变量名}}
使用 - 在 Pre-request Script 和 Tests 脚本中使用封装好的语句获取或者设置对应变量
- 请求 URL, Params 参数或 Body 表格或JSON/XML 文本中通过
// 获取全局变量
var status = pm.globals.get("status");
// 输入到控制台
console.log(status)
// 获取测试集变量
var petId = pm.collectionVariables.get("petId");
// 获取环境变量
var url = pm.environment.get("baseURL");
// 设置全局变量
pm.globals.set("status", "sold");
// 设置测试集变量
pm.collectionVariables.set("petId", 0);
// 设置环境变量
pm.environment.set("baseURL", "");
- 变量的优先级
- 优先级从高至低为:Data → Enviroment → Collection → Global → Local
三,抓包工具
3.1.1 Charles工具
-
基本介绍
- 支持 SSL 代理
- 支持流量控制
- 支持重发网络请求,方便后端调试
- 支持修改网络请求参数
- 支持网络请求的截获并动态修改
- 可以自动将 json 或 xml 数据格式化,方便查看
-
安装
- Charles 官网:https://www.charlesproxy.com/
- 学社下载地址:Index of /charles/
-
电脑证书配置
-
设置SSL
-
移动端代理配置
- 设备和电脑处于同一 WIFI(模拟器不需要配置)
- 移动端网络设置
- 服务器 ip 地址
- 设置端口
- 安装证书
- 系统浏览器访问 chls.pro/ssl
- iOS:描述文件中安装证书
- iOS:信任证书
- 演示使用 mumu 模拟器(Android 6)
-
注意事项
- Android 6 以上的系统 app 默认不信任抓包证书
- 需要开发修改代码
- 大部分测试 app 安装包默认打开状态
- iPhone 10 系统以上需要在 设置->通用->关于本机->证书信任设置 中打开信任开关
- Android 6 以上的系统 app 默认不信任抓包证书
-
弱网测试
- 按照移动的特性,一般应用低于 3G、弱信号的 Wifi 可以划分为弱网
- 弱网测试是健壮性测试的重要部分,对移动端测试必不可少
- 弱网测试主要进行弱网状态下的功能测试,同时关注用户体验
-
弱网测试涉及的改动
- 带宽 - BandWidth (下载速度)
- 丢包
- 延迟
3.1.2 Fiddler工具
-
工具介绍
- 官网:https://www.telerik.com/fiddler/fiddler-classic
- Fiddler 是位于客户端和服务器端的 HTTP 代理
- 也是目前最常用的 HTTP 抓包工具之一
- 功能
- 监控流量
- 支持解密 HTTPS
- 查看分析接口数据
- 修改请求的数据
- 修改服务器返回的数据
- 设置断点
-
抓取 HTTP 请求
- 设置:Tools → Options → Connections
- 确认抓包端口:默认为 8888
- 默认勾选 Act as system proxy on startup
-
抓取 HTTPS 请求
- Tools → Fiddler Options → HTTPS
- 勾选 Decrypt HTTPS Traffic
- 弹出安装证书弹窗 → 选择【Yes】-> 点击 【Yes】安装证书
- 点击 Actions → Open Windows Certificate Manager 查看证书
- 抓取移动端请求
- Tools → Fiddler Options → Connections
- 勾选 Allow remote computers to connect
- 移动端与电脑处于同一网络下
- 移动端配置网络代理
- 代理服务器主机:电脑IP
- 代理服务器端口:8888
- 浏览器输入 http://电脑ip:8888 下载 Fiddler 证书进行安装
- 查看接口信息
- Statistic:性能与统计数据
- Inspectors:请求和响应数据
- Filter:制定过滤规则
- Composer:编辑发出请求
-
AutoResponder
- 拦截某一请求,并重定向到本地的资源,或者使用 Fiddler 的内置响应
- 用于调试服务器端代码而无需修改服务器端的代码和配置
-
断点
- 菜单栏 → Rules → Automatic Breakpoints ->选择断点方式
- 状态栏点击
- 请求前断点:向上箭头
- 响应后断点:向下箭头
- 命令行下输入
- 请求前断点:
bpu xxx
- 响应后断点:
bpafter xxx
- 请求前断点:
- 弱网
- 菜单栏 → Rules → Performance → Simulate Modem Speeds
- 修改网络配置参数
- 菜单栏 → Rules → Customize Rules…
- 搜索关键词 simulate
- 修改延迟时间