问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

什么是 Mock 测试?

发布网友 发布时间:2022-12-23 23:59

我来回答

1个回答

热心网友 时间:2023-10-05 11:56

作为动词,Mock 是模拟、模仿的意思。

作为名词,Mock 是能够模仿真实对象行为的模拟对象。

那么,在软件测试中,Mock 所模拟的对象是什么呢?

模拟的是 SUT(System Under Test:被测系统) 的依赖,而不是其本身。

比如,我要测试 A,但 A 依赖 B,要模拟的对象就是 B。

为什么要模拟 B 呢?

提高 A 的测试覆盖率: 通过 Mock 模拟 B 返回的正常和异常的结果,使用 A 的测试更充分。

避免 B 的因素对 A 产生影响: 当 B 因各种原因无法正常使用时,导致 A 无法测试。

提高 A 的测试效率: B 的真实行为可能很慢,但模拟可以很快。

Mock 的两大功能:

记录真实的调用信息

生成模拟的返回信息

使用 Mock 的问题是什么?

可能导致问题遗漏: 毕竟是模拟的,是理想可预见的情况,真实的情况可能更复杂。

可能导致维护成本变高: 接口变更 Mock 用例要跟着改,改错和漏改都可能出问题。

常见的 Mock 类型:

方法级别: Mock的对象是一个函数调用,例如:获取系统环境变量。

类级别: Mock 的对象是一个类,例如:一个 HTTP server。

接口级别: Mock 的对象是一个 API 接口。

服务级别: Mock 的对象是整个服务。

使用 Mock 做接口测试时,一般分二步:

1. 打桩: 创建 Mock 桩,指定 API 请求内容及其映射的响应内容。

2 . 调桩: 被测服务来请求 Mock 桩并接收 Mock 响应。

在这二步之间还有一个 Mock 桩的注入 , 啥是 Mock 注入?

Mock 的本质就是用模拟桩来替换真实的依赖。所谓 Mock 桩注入 就是 阻断被测服务与真实服务之间的链路,建立被测服务与 Mock 之间的链路过程。

如下图所示:

常见的方式包括但不限于以下五种:

API 请求构造

客户端 Mock:在被测服务 内部 工作,直接拦截被测服务的 API 请求方法,直接从方法内部返回预定义的 Mock 响应。

服务端 Mock:在被测服务 外部 工作,作为 HTTP 服务器接收被测服务发送的 API 请求,并返回预定义的 Mock 响应。

本地配置:

对于服务端 Mock,打桩之后会生成唯一的 Mock 桩地址,被测服务提供一个依赖服务地址配置项,在需要使用 Mock 时将依赖服务地址修改成 Mock 地址。

配置中心

对于服务端 Mock,为了避免修改依赖服务地址配置项导致被测服务重启,可以采用配置中心存储和管理依赖服务地址配置,或者使用注册中心记录服务与服务地址的映射关系。

反向代理

在微服务架构下,被测服务与依赖服务之间可能不是直连的,而是经过了一层反向代理,例如 API 网关。在这种情况下,被测服务是通过调用 API 网关来间接调用依赖服务的接口。

前向代理

服务端 Mock 除了作为 HTTP 服务器,还可以兼备 HTTP 代理的功能,这种架构又叫做 Mock 代理。

对比:

常用 Mock 工具:

单元测试级别:

easymock、jMock、Mockito、Unitils Mock、PowerMock、JMockit..

接口测试级别

Wiremock、Mockserver、Moco、Mock.js、RAP...
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
我有个无线路由器 G11手机无法上wifi 已经按照路由说明书上步骤安装调... g11无线网显示以连接信号强但是一上网显示网络错误 拜求解 HTC G11能连接上WLAN,信号显示“极强”但上不去网? ...可是家里的能连上就是打不开网页,我的路由是上海贝尔的那种。_百度... 我的手机HTC G11 连接上WLAN,信号很好,就是无法上网 ...连上家里的无线网,但是qq却上不去,网页也打不开,等于没练上一样... G11WIFI信号格满但是打不开网页等 就生产力发展而言,丛西汉至唐朝有何表现 汉代农业的发展程度是怎么样的? 你好 酷管家密码忘了 打不开怎么办 wes怎么做 吾还能加什么偏旁 气体灭火系统维护管理中月度、季度和年度检查的内容和要求分别有哪些? 尚田的寓意 洲田名字的含义及寓意 花呗没到还款日可以还款吗 黑莓有没有来电归属地显示 三星手机什么软件显示来电归属地 宝马app能查到没绑定前的定位吗是真的吗 宝马530车的定位怎么样绑定两个手机 17年宝马528,可以使用宝马app定位吗 马云算你狠!支付宝用户8.7亿,借呗利息不同竟还有差别待遇! 马云的支付宝到底有多少钱? 如何坐高铁第一次乘坐高铁 社保卡两地办有冲突吗 两地参保起冲突吗 好多人都说我的手像鸡爪子,我该怎么办? 手背太瘦像鸡爪子,可不可以注射自体脂肪的?哪里可以做? 口红沾到衣服上如何才能去掉 请问“档案”这两个字用智能ABC怎么连打出来啊? 方便实用的mock工具---Easy Mock fiddler几个扩展使用场景:接口测试、性能、mock 前端API 接口数据模拟 (Mock) 闰密头像两张一人一张小清新 女生动漫闰密头像,三张 闰密头像exo 卡通闰密头像一对人 被小刀割被手如何处理 你来到健身房里锻炼,说为了身材改变 什么歌? 机器码硬解后果 工程造价咨询报告书是预算还是结算 vr文件后缀名 后缀为vro的文件如何编辑 安装淋浴房?安装淋浴房有步骤 淋浴房如何安装 安装淋浴房的注意事项 皮皮搞笑里面的皮蛋币怎么用 山东省枣庄市市中区的车牌号以什么开头? 20180725号关于山东艺术类本科校考首次志愿录取后艺术文一分一段表 冰箱突然异响声音超大 故怎么读