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

一、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 sys

from mitmproxy import ctx
from mitmproxy import tcp
from mitmproxy.utils import strutils
from 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 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

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

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

DevC++ easyx实现视口编辑--像素绘图板与贴图系统

到了最终成果阶段了,虽然中间有一些代码讲起来没有意思,纯靠debug,1-1解决贴图网格不重合问题,这次是一个分支结束。 想着就是把瓦片贴进大地图里。 延续这几篇帖子,开发时间也从2023年的4月16到了6月2号,80小时基本…

【Linux】进程控制深度了解

> 作者简介:დ旧言~,目前大二,现在学习Java,c,c,Python等 > 座右铭:松树千年终是朽,槿花一日自为荣。 > 目标:熟练掌握Linux下的进程控制 > 毒鸡汤&#xff…

Spring Boot快速搭建一个简易商城项目【四,优化购物车篇】

在之前的基础上继续将购物车进行完善:全选,删除,加减购物车数量 效果: 全选: 计算价格: //计算总价function jisuan(){let total 0;$(".th").each((i,el)>{//each遍历 i下标 el指的是当前的…

Goole上架年度总结(2023年)

今天来总结一下2023年关于谷歌商店上架的相关政策改动和对应的拒审解决方法。 目录 政策更新与改动2023 年 2 月 22 日2023 年 4 月5 日2023 年 7 月 12 日2023 年 10 月 25 日 开发者计划政策拒审邮件内容和解决办法 政策更新与改动 2023 年 2 月 22 日 生效日期&#xff1…

普中STM32-PZ6806L开发板(HAL库函数实现-TIM5捕获上升沿, 获取输入频率)

简介 通过TIM5_CH1捕获上升沿电平, 两个上升沿的计数值计算频率;电路原理图 连接图 将 PC7 与 PA0使用跳线进行连接 其他知识 APIs /* Blocking mode: Polling */ HAL_StatusTypeDef HAL_TIM_IC_Start(TIM_HandleTypeDef *htim, uint32_t Channel); // 堵塞捕获开启 HAL_St…

什么是高防 IP?哪些行业适合用高防 IP?

在数字化浪潮席卷全球的今天,网络安全问题日益凸显。有听说过“高防 IP”这个名词吗?它究竟是什么东西,又能在哪些领域大显身手呢? 一、什么是高防 IP? 高防 IP,顾名思义,就是具备高级防护能力…

深度生成模型之图像翻译GAN ->(个人学习记录笔记)

文章目录 深度生成模型之图像翻译GAN图像翻译的应用1. 风格迁移2. 数据增强3. 经典图像任务4. 内容创作5. 人脸图像编辑6. 人体图像编辑 图像翻译模型1. 有监督图像翻译模型2. 无监督图像翻译模型3. 多域图像翻译模型 深度生成模型之图像翻译GAN 图像翻译的应用 1. 风格迁移 …

Vue:使用IDEA开发Vue的相关配置

一、IDEA无法识别.vue文件 1、IDEA 添加Vue插件 2、添加Vue配置 File | Settings | Editor | File Types 找到 HTML 文件 在下面点号 输入*.vue 二、IDEA无法创建.vue文件 1、问题 在开发过程中,发现创建文件的界面,没有vue模板 2、相关配置 Fi…

MATLAB指令

01--根据数学公式进行绘制 1.绘制连续函数 ①一元函数 t0:0.1:10; y3*t2; plot(t,y) ②一元二次函数 t0:0.1:10; yt.*t; plot(t,y) 注意此处应为点乘 ③一元3次 t0:0.1:10; yt.*t.*t; plot(t,y) ④y1/t t0:0.1:10; y1./t; plot(t,y) ⑤yexp(t) t0:0.1:10; yexp(2*t); p…

BIO和NIO编程(待完善)

目录 IO模型 BIO NIO 常见问题 IO模型 Java共支持3种网络编程IO模式:BIO,NIO,AIO BIO 同步阻塞模型,一个客户端连接对应一个处理线程 代码示例: Server端: public class BioServer {private static …

ARM NEON 指令

NEON指令 按照操作数类型可以分为正常指令、宽指令、窄指令、饱和指令、长指令。 正常指令:生成大小相同且类型通常与操作数向量相同到结果向量。长指令:对双字向量操作数执行运算,生产四字向量到结果。所生成的元素一般是操作数元素宽度到…

PS插件一键生成超治愈向日葵花海

金黄色的向日葵总能给人带来治愈的感觉,仿佛在这里能够疗愈心灵所有的伤口。今天我们通过START AI来生成一片美丽的向日葵花海~ 这是小编使用的关键词,负面词需要填写你不想要拥有的,能够让生成的结果更贴合你的想法 最后的生成效果就如下图…

清风数学建模写作

Overview 标题 摘要!!!(1000字) 开头 中间 解决的问题 应用的方法 得到的结果 结尾 应用价值、本文亮点 关键词(3-6个) 积累、二次拓展 目录 1.问题重述 拆分背景与问题,也可以结…

菜鸟之MATLAB学习——QPSK OQPSK信号生成及频谱分析

本人MATLAB学习小白,仅做笔记记录和分享~~ % qpsk && oqpsk clc; close all;Ts1; fc10;N_sample16; N_sum100; dt1/fc/N_sample; t0:dt:N_sum*Ts-dt; Tdt*length(t);d1sign(randn(1,N_sum)); d2sign(randn(1,N_sum));gtones(1,fc*N_sample); …

Java基础综合练习(飞机票,打印素数,验证码,复制数组,评委打分,数字加密,数字解密,抽奖,双色球)

练习一:飞机票 需求: ​ 机票价格按照淡季旺季、头等舱和经济舱收费、输入机票原价、月份和头等舱或经济舱。 ​ 按照如下规则计算机票价格:旺季(5-10月)头等舱9折,经济舱8.5折,淡季(11月到来…

产品电子画册用什么工具可以轻松制作

​随着互联网的普及和移动设备的增多,电子画册已经成为了企业宣传和产品展示的重要工具。然而,制作电子画册并不是一件容易的事情,需要耗费大量的时间和精力。现在,我们可以通过使用一些专业的工具来轻松制作产品电子画册&#xf…

想升职or转岗,可以考一个PMP吗?

现在就业形式比较严峻,如果不想被淘汰,就得提升自己的能力,增加自己的职场竞争力,今天就来推荐一个能在工作中起到非常大重要的证书--pmp项目管理证书。 首先,pmp是什么呢? PMP是由美国项目管理协会&…

Windows搭建Emby媒体库服务器,无公网IP远程访问本地影音文件

文章目录 1.前言2. Emby网站搭建2.1. Emby下载和安装2.2 Emby网页测试 3. 本地网页发布3.1 注册并安装cpolar内网穿透3.2 Cpolar云端设置3.3 Cpolar内网穿透本地设置 4.公网访问测试5.结语 1.前言 在现代五花八门的网络应用场景中,观看视频绝对是主力应用场景之一&…

UCOSIII移植

1、“sys.h” 头文件修改 //0,不支持ucos //1,支持ucos #define SYSTEM_SUPPORT_OS 1 //定义系统文件夹是否支持UCOS2、stm32f10x_it.c中断屏蔽 注释掉void PendSV_Handler(void) 和 void SysTick_Handler(void)中断 //void PendSV_Handler(void) //{ //} // //void Sys…

New!DevExpress WinForms v23.2系统环境配置要求

DevExpress WinForms拥有180组件和UI库,能为Windows Forms平台创建具有影响力的业务解决方案。DevExpress WinForms能完美构建流畅、美观且易于使用的应用程序,无论是Office风格的界面,还是分析处理大批量的业务数据,它都能轻松胜…