写点什么

软件测试 / 测试开发丨接口测试学习笔记分享

作者:测试人
  • 2023-06-29
    北京
  • 本文字数:2400 字

    阅读完需:约 8 分钟

点此获取更多相关资料

本文为霍格沃兹测试开发学社学员学习笔记分享

原文链接:https://ceshiren.com/t/topic/25622

一、Mock 测试

1、Mock 测试的场景

  1. 前后端数据交互

  2. 第三方系统数据交互

  3. 硬件设备解耦


2、Mock 测试的价值与意义

  1. 不依赖第三方数据

  2. 节省工作量

  3. 节省联调

3、Mock 核心要素

  1. 匹配规则:mock 的接口,改哪些接口,接口哪里的数据

  2. 模拟响应

4、mock 实战

(1)Rewrite 原理


  1. 场景举例

  • 修改雪球行情页面的股票名称

  • 修改雪球行情页面的股票价格

  1. 设置方法

  • Tools -> Rewrite

  • 勾选 Enable Rewrite

  • 点击下方 Add 按钮新建一个重写的规则

  • 在右侧编辑重写规则

  • 点击 ok 生效


(2)Map Local 原理


  1. 场景举例

  • 修改雪球行情页面的股票名称

  • 修改雪球行情页面的股票价格

  1. 操作

  • 准备本地接口响应数据

  • 配置 Map Local

选择要进行 Map Local 的接口 鼠标右键 – 选择 Map Local 选项进入设置界面 Map From 填写接口的信息 Map To 选择本地文件
复制代码
  • 修改 Map Local 配置:Tools – Map Local

(3)Map Remote 原理


  1. 场景举例

  • 访问百度,转发至豆瓣

  • 访问开发环境,转发至测试环境

  • 前端:http://stuq.ceshiren.com:8081/#/mapLocal

  • 开发环境接口: http://stuq.ceshiren.com:8089/report/showMapLocal

  • 测试环境接口: http://stuq.ceshiren.com:9098/report/showMapLocal

  1. 操作

  • 选择接口,点击鼠标右键,选择 Map Remote 进入到设置页面

  • 设置重定向的接口信息

  • 点击 ok 生效

  • 修改设置:Tools – Map Remote 找对对应接口双击进入修改界面


二、Mock 技术体系

1、 Mock 的价值和意义

  • 提高测试深度

  • 提高测试效率

  • 降低成本

2、 Test Double 测试替身

  • Test Double 官网:TestDouble

  • Dummy 占位对象 对象被传递但从未实际使用过。通常它们仅用于填充参数列表。

  • Fake 假对象 对象实际上有工作实现,但通常采取一些捷径,这使得它们不适合生产(内存数据库就是一个很好的例子)。

  • Stubs 桩对象 为测试期间调用提供预设答案,通常根本不响应任何超出测试程序的内容。

  • Spies 间谍对象 它们还根据调用方式记录一些信息。其中一种形式可能是电子邮件服务,它记录发送了多少消息。

  • Mocks 模拟对象 是我们在这里谈论的:预先编程的对象,这些期望形成了它们期望接收的调用的规范。

3、 测试替身关键概念的区别


4、 技术架构例子

  • dummy 只要端口开着就行

  • fake 内存数据库

  • spy UI 界面后端请求记录

  • stub 假的登录后端服务

  • hook 新用户判断方法修改

  • proxy 代理转发机制

  • mock 模拟对象


5、 Fake 假对象 定义

假对象实际上有工作实现,但通常采取一些捷径,这使得它们不适合生产(纯内存数据库就是一个很好的例子)。


6、 Fake 应⽤场景


7、 Stub 桩定义

为测试期间调用提供预设答案,通常根本不响应任何超出测试程序的内容。


8、 Stub 应⽤场景 Swagger


9、 Mock 模拟对象定义

模拟预编程了期望,这些期望形成了他们期望接收的调用的规范。如果他们收到了他们不期望的调用,他们可以抛出异常,并在验证过程中进行检查以确保他们得到了他们期望的所有调用。


10、 Mock 两种应用场景

  • mock on stub:按需返回期望数据

  • mock on proxy:按需返回真实数据的修改副本

11、 常⽤的 Mock 工具

  • Charles 测试工程师常用

  • BurpSuite 黑客常用

  • Fiddler 只能 Windows 上使用

  • Nginx 服务器反向代理与修改

  • Mitmproxy 代理工具 可编程

  • Wiremock 代理工具 可编程

12、 mitmproxy

  • 官网:mitmproxy.org/

  • mitmproxy 是一组为 HTTP/1、HTTP/2 和 WebSockets 提供交互式、支持 SSL/TLS 的拦截代理的工具。


13、 mitmproxy 强大的插件机制 Addons

  • dns

  • tcp

  • cert

  • http/https

  • websocket


14、adb mock 案例

链接:微信小程序自动化测试辅助工具 adb_xweb_mock - appium - 测试人社区

import sys
from mitmproxy import ctxfrom mitmproxy import tcpfrom mitmproxy.utils import strutilsfrom mitmproxy.tools.main import mitmdump

def tcp_message(flow: tcp.TCPFlow): message = flow.messages[-1] old_content = message.content message.content = old_content.replace( b":0;localabstract:webview_devtools_remote_", b": 0;localabstract:xweb_devtools_remote_" )
ctx.log.info( "[tcp_message{}] from {} to {}:\n{}".format( " (modified)" if message.content != old_content else "", "client" if message.from_client else "server", "server" if message.from_client else "client", strutils.bytes_to_escaped_str(message.content)) )

if __name__ == '__main__': sys.argv = ["", "-p", "5038", "--rawtcp", "--mode", "reverse:http://localhost:5037/", "-s", sys.argv[0], "-vv"] mitmdump()
复制代码

15、 WireMock

  • 官网:wiremock.org/

  • 用于构建 mock API 的灵活工具。创建稳定的开发环境,将自己与古怪的第三方隔离开来,并模拟尚未存在的 API。

三、mock 工具与定制化

1、 Mitmproxy 简介

  • mitmproxy:交互式的命令行工具注意:不支持 windows

  • mitmweb:基于浏览器的界面交互工具

  • mitmdump:简单的终端输出,可以编写强大的插件和脚本

  • 官方网站:mitmproxy.org/

2、 Mitmproxy 安装

  • 推荐使用 python 进行安装

// 方式一pip install mitmproxy==5.2.0
// 方式二pip install pipxpipx install mitmproxy==5.2.0
// 验证是否安装成功mitmdump --version
复制代码

3、 PC 端证书配置

  • 配置电脑代理

  • 启动 mitmproxy

  • 在浏览器输入地址:mitm.it

  • 选择对应系统下载证书并安装


4、 移动端证书配置

  • 在手机配置代理,ip 配置为电脑的 ip 地址,端口配置为 mitmproxy 监听端口

  • 启动 mitmproxy

  • 在手机浏览器输入地址 mitm.it

  • 选择 Android,下载并安装,即可成功抓取手机端的 https 的数据包。

5、 mitmdump 参数介绍

  • -p 参数,指定监听端口,默认监听 8080

  • -s 参数,执行 python 脚本

6、 核心组件

  • Addons(插件):https://docs.mitmproxy.org/archive/v5/addons-overview/

  • Events(事件):https://docs.mitmproxy.org/archive/v5/addons-events/

发布于: 刚刚阅读数: 3
用户头像

测试人

关注

专注于软件测试开发 2022-08-29 加入

霍格沃兹测试开发学社,测试人社区:https://ceshiren.com/t/topic/22284

评论

发布
暂无评论
软件测试/测试开发丨接口测试学习笔记分享_Python_测试人_InfoQ写作社区