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

一、Mock 测试

1、Mock 测试的场景

  1. 前后端数据交互
  2. 第三方系统数据交互
  3. 硬件设备解耦

image

2、Mock 测试的价值与意义

  1. 不依赖第三方数据
  2. 节省工作量
  3. 节省联调

3、Mock 核心要素

  1. 匹配规则:mock的接口,改哪些接口,接口哪里的数据
  2. 模拟响应

4、mock实战

(1)Rewrite 原理

image

  1. 场景举例
  • 修改雪球行情页面的股票名称
  • 修改雪球行情页面的股票价格
  1. 设置方法
  • Tools -> Rewrite
  • 勾选 Enable Rewrite
  • 点击下方 Add 按钮新建一个重写的规则
  • 在右侧编辑重写规则
  • 点击 ok 生效

image

(2)Map Local 原理

image

  1. 场景举例
  • 修改雪球行情页面的股票名称
  • 修改雪球行情页面的股票价格
  1. 操作
  • 准备本地接口响应数据
  • 配置 Map Local
    • 选择要进行 Map Local 的接口
    • 鼠标右键 – 选择 Map Local 选项进入设置界面
    • Map From 填写接口的信息
    • Map To 选择本地文件
  • 修改 Map Local 配置:Tools – Map Local
(3)Map Remote 原理

image

  1. 场景举例
  • 访问百度,转发至豆瓣
  • 访问开发环境,转发至测试环境
    • 前端:stuq.ceshiren.com:8081/#/mapLocal
    • 开发环境接口: stuq.ceshiren.com:8089/report/show…
    • 测试环境接口: stuq.ceshiren.com:9098/report/show…
  1. 操作
  • 选择接口,点击鼠标右键,选择 Map Remote 进入到设置页面
  • 设置重定向的接口信息
  • 点击 ok 生效
  • 修改设置:Tools – Map Remote 找对对应接口双击进入修改界面

image

二、Mock 技术体系

1、 Mock的价值和意义

  • 提高测试深度
  • 提高测试效率
  • 降低成本

2、 Test Double 测试替身

  • Test Double官网:TestDouble
  • Dummy 占位对象 对象被传递但从未实际使用过。通常它们仅用于填充参数列表。
  • Fake 假对象 对象实际上有工作实现,但通常采取一些捷径,这使得它们不适合生产(内存数据库就是一个很好的例子)。
  • Stubs 桩对象 为测试期间调用提供预设答案,通常根本不响应任何超出测试程序的内容。
  • Spies 间谍对象 它们还根据调用方式记录一些信息。其中一种形式可能是电子邮件服务,它记录发送了多少消息。
  • Mocks 模拟对象 是我们在这里谈论的:预先编程的对象,这些期望形成了它们期望接收的调用的规范。

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

概念监听调用预设期望按需预设期望真实数据真实数据修改
Dummy 傀儡对象
Spy 间谍对象
Fake 假对象
Stub 桩对象
Mock 模拟对象

4、 技术架构例子

  • dummy 只要端口开着就行
  • fake 内存数据库
  • spy UI 界面后端请求记录
  • stub 假的登录后端服务
  • hook 新用户判断方法修改
  • proxy 代理转发机制
  • mock 模拟对象

image

5、 Fake 假对象 定义

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

image

6、 Fake 应⽤场景

image

7、 Stub 桩定义

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

image

8、 Stub 应⽤场景 Swagger

image

9、 Mock 模拟对象定义

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

image

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的拦截代理的工具。

image

13、 mitmproxy 强大的插件机制 Addons

  • dns
  • tcp
  • cert
  • http/https
  • websocket

image

14、adb mock 案例

import sysfrom mitmproxy import ctx
from mitmproxy import tcp
from mitmproxy.utils import strutils
from mitmproxy.tools.main import mitmdumpdef tcp_message(flow: tcp.TCPFlow):message = flow.messages[-1]old_content = message.contentmessage.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 pipx
pipx install mitmproxy==5.2.0// 验证是否安装成功
mitmdump --version

3、 PC 端证书配置

  • 配置电脑代理
  • 启动 mitmproxy
  • 在浏览器输入地址 mitm.it
  • 选择对应系统下载证书并安装

image

4、 移动端证书配置

  • 在手机配置代理,ip 配置为电脑的 ip 地址,端口配置为 mitmproxy 监听端口
  • 启动 mitmproxy
  • 在手机浏览器输入地址 mitm.it
  • 选择 Android,下载并安装,即可成功抓取手机端的 https 的数据包。

5、 mitmdump 参数介绍

  • -p 参数,指定监听端口,默认监听 8080
  • -s 参数,执行 python 脚本

6、 核心组件

  • Addons(插件):Addons
  • Events(事件):Events

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你! 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/313111.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

编程式导航传参

(通过js代码实现跳转) 按照path进行跳转 第一步&#xff1a; 在app.vue中(前提是规则已经配置好) <template><div id"app">App组件<button clicklogin>跳转</button><!--路由出口-将来匹配的组件渲染地方--><router-view>&l…

电池管理系统BMS中SOC算法通俗解析(一)

SOC(state of ge)估计算法是电池管理系统(BMS)开发应用的关键技术之一&#xff0c;传统燃油车有油表&#xff0c;能跑多远&#xff0c;看一眼心里就有数了&#xff0c;换成电动汽车&#xff0c;SOC就是电动汽车的”油表”&#xff0c;所以SOC的准确、稳定与否非常重要。SOC的定…

Java方法(定义和调用,带参数方法定义和调用,带返回值方法的定义和调用,方法的注意事项,方法重载)

文章目录 1. 方法概述1.1 方法的概念 2. 方法的定义和调用2.1 无参数方法定义和调用2.3 无参数方法的练习 3. 带参数方法定义和调用3.1 带参数方法定义和调用3.2 形参和实参3.3 带参数方法练习 4. 带返回值方法的定义和调用4.1 带返回值方法定义和调用4.2 带返回值方法练习14.3…

Ubuntu系统开启和使用2D、3D远程可视化方式

Ubuntu系统开启和使用2D、3D远程可视化方式 使用【3D可视化Ubuntu镜像】创建的云主机&#xff0c;可以使用3D可视化工具turbovnc进行远程连接。 注意&#xff1a; 1、系统环境里面已集成turbovnc远程可视化服务软件&#xff0c;请勿在系统里再里次重复安装任何VNC软件&#…

算法专题五:位运算

算法专题五&#xff1a;位运算 一.常见位运算总结&#xff1a;1.位1的个数2.比特位记数3.汉明距离4.只出现一次的数字5.只出现一次的数字三 二.判断字符是否为一1.思路一:位运算思路GIF题目解析 三.丢失的数字1.思路一:暴力思路2.思路二&#xff1a;高斯求和思路&#xff1a;3.…

第14课 多维数组

文章目录 前言一、多维数组的定义二、多维数组的初始化三、多维数组的使用&#xff08;以二维数组为例&#xff09;1. 矩阵转置问题 三、课后练习1. 求一个m*n矩阵中所有元素的累加和2. 查找并输出一个m*n矩阵中的最小元素以及其在矩阵中的位置3. 将m*n矩阵A复制为m*n矩阵B&…

FA对接FC流程

2、FA进行对接 &#xff08;1&#xff09;首先安装好AD域控服务器DHCPDNS&#xff08;注意&#xff0c;不要忘记了做DNS正反向解析&#xff0c;就是把已经安装了ITA的主机做解析&#xff09;&#xff0c;在里面创建域用户 &#xff08;2&#xff09;安装ITA和VAG/VLB&#xf…

js 对象

js 对象定义 <!DOCTYPE html> <html> <body><h1>JavaScript 对象创建</h1><p id"demo1"></p> <p>new</p> <p id"demo"></p><script> // 创建对象&#xff1a; var persona {fi…

SiteGround 注册无法接收短信验证码问题的解决方法

在购买SiteGround后&#xff0c;有时会出现需要进行账号验证的情况&#xff0c;要求通过短信或电话完成验证。然而&#xff0c;有些用户无论如何操作都无法收到短信验证码。以下是解决这个问题并成功完成服务器购买的方法。 Thank You for Your Purchase! Lets Verify Your Ord…

2024的十大技术趋势预测

&#x1f4a1; 大家好&#xff0c;我是可夫小子&#xff0c;《小白玩转ChatGPT》专栏作者&#xff0c;关注AIGC、读书和自媒体。 2024年&#xff0c;科技圈还会有什么样的新鲜新发生&#xff1f;techradar的记者Lance Ulanoff预测了科技圈的2024十大趋势&#xff0c;包括AI、…

最优轨迹生成(四)—— 带约束轨迹优化

本系列文章是学习深蓝学院-移动机器人运动规划课程第五章最优轨迹生成 过程中所记录的笔记&#xff0c;本系列文章共包含四篇文章&#xff0c;依次介绍了微分平坦特性、无约束BVP轨迹优化、无约束BIVP轨迹优、 带约束轨迹优化等内容 本系列文章链接如下&#xff1a; 最优轨迹生…

9. 回文数

给你一个整数 x &#xff0c;如果 x 是一个回文整数&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 回文数是指正序&#xff08;从左向右&#xff09;和倒序&#xff08;从右向左&#xff09;读都是一样的整数。 例如&#xff0c;121 是回文&#xff0c;而…