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

一、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://xiahunao.cn/news/2659535.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

【基础篇】六、自定义类加载器打破双亲委派机制

文章目录 1、ClassLoader抽象类的方法源码2、打破双亲委派机制:自定义类加载器重写loadclass方法3、自定义类加载器默认的父类加载器4、两个自定义类加载器加载相同限定名的类,不会冲突吗?5、一点思考 1、ClassLoader抽象类的方法源码 ClassL…

【Python基础篇】【19.异常处理】(附案例,源码)

异常处理 异常处理常见异常elsefinallyraise获取异常信息sys.exc_info()traceback 处理异常基本原则assert断点调试两种方式Debugger窗口各图标的含义1.Show Execution Point (Alt F10)2.Step Over(F8)3.Step Into (F…

【线性代数】通过矩阵乘法得到的线性方程组和原来的线性方程组同解吗?

一、通过矩阵乘法得到的线性方程组和原来的线性方程组同解吗? 如果你进行的矩阵乘法涉及一个线性方程组 Ax b,并且你乘以一个可逆矩阵 M,且产生新的方程组 M(Ax) Mb,那么这两个系统是等价的;它们具有相同的解集。这…

k8s二进制部署2

部署 Worker Node 组件 //在所有 node 节点上操作 #创建kubernetes工作目录 mkdir -p /opt/kubernetes/{bin,cfg,ssl,logs} #上传 node.zip 到 /opt 目录中,解压 node.zip 压缩包,获得kubelet.sh、proxy.sh cd /opt/ unzip node.zip chmod x kubelet.…

CodeWhisperer——轻松使用一个超级强大的工具

CodeWhisperer 简介 CodeWhisperer是亚⻢逊云科技出品的一款基于机器学习的通用代码生成器,可实时提供代码建议。 CodeWhisperer有以下几个主要用途: 解决编程问题,提供代码建议,学习编程知识等等,并且CodeWhisper…

2022 年全国职业院校技能大赛高职组云计算正式赛卷第二场-容器云

2022 年全国职业院校技能大赛高职组云计算赛项试卷 云计算赛项第二场-容器云 目录 2022 年全国职业院校技能大赛高职组云计算赛项试卷 【赛程名称】云计算赛项第二场-容器云 【任务 1】容器云平台搭建[5 分] 【任务 2】容器云应用部署: Docker Compose 编排部署[7.0…

【ZYNQ】教你用 Vivado HLS 快速设计一个 IP

Xilinx 推出的 Vivado HLS 工具可以直接使用 C、C或 System C 来对 Xilinx 系列的 FPGA 进行编程,从而提高抽象的层级,大大减少了使用传统 RTL 描述进行 FPGA 开发所需的时间。 Vivado HLS 的功能简单地来说就是把 C、C 或 SystemC 的设计转换成 RTL 实…

Python自动化测试:选择最佳的自动化测试框架

在开始学习python自动化测试之前,先了解目前市场上的自动化测试框架有哪些? 随着技术的不断迭代更新,优胜劣汰也同样发展下来。从一开始工具型自动化,到现在的框架型;从一开始的能用,到现在的不仅能用&…

element el-table实现可进行横向拖拽滚动

【问题】表格横向太长,表格横向滚动条位于最底部,需将页面滚动至最底部才可左右拖动表格,用户体验感不好 【需求】基于elment的el-table组件生成的表格,使其可以横向拖拽滚动 【实现】灵感来源于这篇文章【Vue】表格可拖拽滚动&am…

每周一算法:区间覆盖

问题描述 给定 N N N个闭区间 [ a i , b i ] [a_i,b_i] [ai​,bi​],以及一个线段区间 [ s , t ] [s,t] [s,t],请你选择尽量少的区间,将指定线段区间完全覆盖。 输出最少区间数,如果无法完全覆盖则输出 − 1 -1 −1。 输入格式…

androj环境搭建_AS安装及运行源码

1、 jdk安装 安卓项目也是java开发的,运行在虚拟机上,安装jdk及运行的时候,就会自动生成虚拟机, jdk前面已经讲过,这里不在讲解 2、下载安装androj studio https://developer.android.google.cn/studio?hlzh-cn 下…

mysql原理---InnoDB统计数据是如何收集的

以下聚焦于 InnoDB 存储引擎的统计数据收集策略。 1.两种不同的统计数据存储方式 InnoDB 提供了两种存储统计数据的方式: (1). 永久性的统计数据 这种统计数据存储在磁盘上,也就是服务器重启之后这些统计数据还在。 (2). 非永久性的统计数据 这种统计数…

Java生态系统的进化:从JDK 1.0到今天

目录 前言 JDK 1.0:开启Java时代 JDK 1.1:Swing和内部类 JDK 1.2:Collections框架和JIT编译器 JDK 1.5:引入泛型和枚举 JDK 1.8:Lambda表达式和流 JDK 11以后:模块化和新特性 未来展望 总结 作者简…

Smartbi获工信部旗下赛迪网“2023行业信息技术应用创新产品”奖

近日,由工信部旗下的赛迪网、《数字经济》杂志共同主办的2023行业信息技术应用创新大会上,“信息技术应用创新成果名单”重磅揭晓,思迈特软件凭借“Smartbi 自然语言分析引擎”斩获“2023行业信息技术应用创新产品”大奖。 据了解&#xff0c…

JavaWeb——监听器Listener 过滤器Filter——韩顺平学习笔记

文章目录 JavaWeb 三大组件之监听器 ListenerListenerJavaWeb 的监听器ServletContextListener 监听器ServletContextAttributeListener 监听器其它监听器-使用较少HttpSessionListener 监听器HttpSessionAttributeListener 监听器ServletRequestListener 监听器ServletRequest…

YOLOv5算法进阶改进(8)— 引入GSConv + Slim Neck相结合的方式降低模型复杂性

前言:Hello大家好,我是小哥谈。在文章中,作者提出了一种新方法 GSConv 来减轻模型的复杂度并保持准确性。GSConv可以更好地平衡模型的准确性和速度。并且,提供了一种设计范式Slim Neck,以实现检测器更高的计算成本效益。实验过程中,与原始网络相比,改进方法获得了最优秀…

软件测试/测试开发丨Selenium的常用元素定位方法

Selenium是一个流行的开源框架,目前在 Web 自动化方面运用最为广泛的一个开源、无浏览器要求、可支持多语言、设计测试用例非常灵活的自动化测试框架。支持多种编程语言,并且能够模拟用户操作,例如点击、输入、提交等等。 在Selenium中&…

《深入理解JAVA虚拟机笔记》Java 运行时内存区域

程序计数器(线程私有) 程序计数器(Program Counter Register)是一块较小的内存空间,它可以看做是当前线程所执行的字节码的行号指示器。在 Java 虚拟机的概念模型里, 字节码解释器工作时就是通过改变这个计…

【Linux--多线程同步与互斥】

目录 一、线程互斥1.1相关概念介绍1.2互斥量mutex1.3互斥量接口1.3.1初始化互斥量1.3.2销毁互斥量1.3.3互斥量加锁1.3.4互斥量解锁1.3.5使用互斥量解决上面分苹果问题 1.4互斥原理 二、可重入与线程安全2.1相关概念2.2常见线程不安全的情况2.3常见不可重入的情况2.4 可重入与线…

深度解析 | 什么是超融合数据中心网络?

数据中心网络连接数据中心内部通用计算、存储和高性能计算资源,服务器间的所有数据交互都要经由网络转发。当前,IT架构、计算和存储技术都在发生重大变革,驱动数据中心网络从原来的多张网络独立部署向全以太化演进。而传统的以太网无法满足存…