精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

干貨!用大白話告訴你什么是Mock測試

開發 前端
作為一個動詞,mock是模擬、模仿的意思;作為一個名詞,mock是能夠模仿真實對象行為的模擬對象。

[[384327]]

本文轉載自微信公眾號「愛笑的架構師」,作者雷架。轉載本文請聯系愛笑的架構師公眾號。  

初識mock

作為一個動詞,mock是模擬、模仿的意思;作為一個名詞,mock是能夠模仿真實對象行為的模擬對象。

在軟件測試中,mock所模擬的對象是什么呢?

它一定不是我們所測試的對象,而是 SUT 的依賴(dependency)。換句話說,mock 的作用是模擬 SUT 依賴對象的行為。

測試的對象一般稱之為SUT(Software Under Test)

文字不好理解,我們畫個圖,如下圖所示,被測試對象是 A,A 依賴的是B,B 依賴的是 C。而我們要 mock 的是 B 的行為。圖中 A 就是 SUT。

為什么需要模擬 B 的行為呢?

  • (1)提高 A 的測試覆蓋率。A 依賴 B,本質上依賴的是 B 的返回結果,也就是說 B 的返回結果會影響 A 的行為。通過 mock B 我們可以構造各種正常和異常的來自 B 的返回結果,從而更充分測試 A 的行為。
  • (2)避免 B 的因素從而對 A 產生影響。依賴真實的 B 去測試 A 可能有很多問題:B 的開發沒有完成時無法測試 A;B 有阻塞性bug 時無法測試 A;B 的依賴 C 有阻塞性 bug 時無法測試 A;
  • (3)提高 A 的測試效率。B 的真實行為可能很慢,而 B 的模擬行為是非??斓?,因此可以加快 A 的測試執行速度。

mock 種族

常見的 mock 類型如下圖所示:

從下往上依次解釋一下:

  • (1)方法級別 mock:mock 的對象是一個函數調用,例如獲取系統環境變量。
  • (2)類級別 mock:mock 的對象是一個類,例如一個 HTTP server。
  • (3)接口級別 mock:mock 的對象是一個 API 接口。
  • (4)服務級別 mock:mock 的對象是整個服務。比如前端工程師自測試時,可以講后端整個服務都 mock 掉,這其實等同于將后端的所有接口都 mock。

接口mock注入的五種方式

在使用 mock 進行接口測試時,一般要做兩件事情,即打樁和調樁。

其實打樁就是創建mock 樁,指定 API 請求內容及其映射的 mock 響應內容;所謂調樁就是被測服務來請求 mock 樁并接收 mock 響應。

事實上,在打樁和調樁之間還隱藏著一件不顯山露水、但是及其重要的事情,那就是 mock 樁的注入(mock injection)。

什么是 mock 注入?

mock 的本質就是用模擬樁來替換真實的依賴。所謂 mock 樁注入就是阻斷被測服務與真實服務之間的鏈路,建立被測服務與 mock 之間的鏈路過程。

如何注入 mock?

總的來說 mock 樁的注入方式與架構、被測服務的架構等因素相關,在實際中常見的 mock 樁注入方式包括但不限于以下五種。

(1)API 請求構造

在 mock 接口中被測服務是 API 的請求方,即客戶端;依賴服務是 API 的響應方,即服務端。根據 mock 工作的位置,mock 可以分為客戶端 mock 和服務端 mock。

客戶端 mock:mock 在被測服務內部工作,直接攔截被測服務的 API 請求方法(比如 HTTP Client方法),在被測服務調用 API 請求方法時,直接從方法內部返回預定義的 mock 響應。

服務端 mock:mock 在被測服務外部工作,作為 HTTP 服務器接收被測服務發送的 API 請求,并返回預定義的 mock 響應。

客戶端 mock 的注入其實就是改造被測服務的 API 請求方法,即在 API 請求方法中加入 mock 處理邏輯。當滿足某些條件時執行 mock 分支,不滿足時執行真實分支。

可以通過兩種方式實現,一種是直接改造源代碼,另一種是利用字節碼增強技術對字節碼進行改造(Java 語言)。

API 請求改造這種注入方式適用于客戶端 mock,其優勢性能極好,其不足是實現成本較高。

(2)本地配置

對于服務端 mock,打樁之后會生成唯一的 mock 樁地址。被測服務要想調用這個樁需要知道樁地址,如何讓被測服務知道樁地址呢?一種最直接的方法就是被測服務提供一個依賴服務地址配置項,在需要使用 mock 時將依賴服務地址修改成 mock 地址。

本地配置的優勢是實現簡單,不足之處是修改配置項需要重啟被測服務,在需要進行 mock 服務與真實服務切換時不方便。

(3)配置中心

在服務端 mock 中,為了避免修改依賴服務地址配置項導致被測服務重啟,可以采用配置中心(如 Spring Cloud Config Server)存儲和管理依賴服務地址配置,或者使用注冊中心(如 Spring Cloud Eureka)記錄服務與服務地址的映射關系。

使用配置或者注冊中心時,mock 注入的方法是修改配置中心,將依賴服務地址改成 mock 地址。這種注入方法不需要重啟被測服務,但是從配置改變到配置生效可以存在一定的延時。

(4)反向代理

在微服務架構下,被測服務與依賴服務之間可能不是直連的,而是經過了一層反向代理,例如 API 網關。在這種情況下,被測服務是通過調用 API 網關來間接調用依賴服務的接口。

在 API 網關模式下,mock 注入的具體做法就是修改 API 網關配置,將依賴服務 API 網關接口綁定的地址改成 mock 地址。

這種注入的優勢是對被測服務無侵入,并且實現更細粒度(接口級)的 mock。當然,根據 API 網關的實現不同,仍然可能存在一定的時延。亞馬遜 AWS 的 API 網關就是采用這種方式進行 mock。

(5)前向代理

服務端 mock 除了作為 HTTP 服務器,還可以兼備 HTTP 代理的功能,這種架構又叫做 mock 代理,例如 mock server proxy。對于 mock 代理來說,它不僅能夠返回 mock 響應,而且能夠在需要的時候將 API 請求轉發給依賴服務,并將依賴服務的真實響應返回給被測服務。

使用前向代理模式,mock 注入的方式是將被測服務的依賴地址或網絡代理修改為 mock 地址,這種注入方法需要重啟被測服務,其優勢是能夠實現細粒度的 mock,并且能夠根據錄制的真實響應自動生成 mock。

五種注入方式對比

一張表格總結一下

不可忽視的mock兩大功能

關于 mock,經常容易被誤解的是:認為 mock 只是模擬返回的結果而已。

實際上 mock 還可以提供兩大功能:(1)記錄真實的調用信息;(2)生成模擬的返回信息;

對于測試用例來說,我們不僅關心 mock 是否返回了期望的結果,還需要關心 SUT 是否以期望的方式調用了 mock 對象。

如果 SUT 沒有以期望的方式調用,比如:沒有傳參或者參數不對,那么 SUT 就存在問題。

mock 需要詳細記錄來自SUT 的調用信息,并提供給用例來校驗。比如 Java mockito 就提供了此類校驗功能:

  1. List<String> mockedList = mock(MyList.class); 
  2. mockedList.size(); 
  3. // 校驗 size 函數調用且只調用了1次 
  4. verify(mockedList, times(1)).size(); 

常用 mock 工具

單元測試級別

這個級別的mock工具有easymock、jMock、Mockito、Unitils Mock、PowerMock、JMockit等,關于各自優劣勢大家可以上網查詢。

接口測試級別

接口級別的mock工具完成的主要功能是對一個用戶的請求,模擬server返回一個接口的響應數據。常用的有:

  • Wiremock
  • Mockserver
  • Moco
  • Mock.js
  • RAP

mock 不是銀彈

說了這么多 mock 的好處,實際上 mock 也有很多不足,比如:

  • (1)mock 可能導致問題遺漏。mock 的模擬行為與真實行為可能存在 GAP,導致基于 mock 的測試雖然通過了,但是基于真實對象的測試卻失敗了,這意味著問題被遺漏了。mock 很難模擬所有的真實情況。
  • (2)mock 帶來較高的維護成本?;?mock 的測試用例結構比較復雜,實現和維護都不容易,后期被測代碼有變動時需要適配 mock 代碼。

簡單一句話:mock 不是銀彈。

有態度的總結

mock 不是銀彈,mock 是有利有弊的,一張圖總結一下:

說了這么多,在工作中如何正確使用 mock 呢?這里提兩點建議,敲黑板啦。

(1)不要過度使用 mock。測試用例中掌握好使用 mock 的度。在涉及網絡訪問、數據庫讀寫、操作系統交互等系統級調用,優先使用 mock。

(2)不要過度依賴基于 mock 的測試結果?;?mock 的測試無論多么充分,這都不能保證不出現問題的遺漏。一個完整的測試策略一定是由基于 mock 的測試和基于非 mock 的測試共同組成的,二者相輔相成缺一不可。

 

責任編輯:武曉燕 來源: 愛笑的架構師
相關推薦

2018-11-19 08:34:22

Hadoop架構HDFS

2025-10-27 01:55:00

2020-02-04 15:00:25

大白話認識JVM

2020-12-04 06:40:46

Zookeeper選舉機制

2023-12-26 18:22:05

RocketMQ延遲消息

2020-02-20 11:32:09

Kafka概念問題

2019-05-17 08:27:23

SQL注入漏洞攻擊

2021-01-22 09:39:54

人工智能人工智能技術

2021-01-27 13:50:17

AI 數據機器學習

2024-12-09 08:18:33

2023-05-06 07:29:49

Spring事務傳播

2021-02-18 09:06:39

數據訪問者模式

2019-08-14 09:13:38

中臺互聯網業務

2025-05-14 08:25:00

深度學習AI人工智能

2024-04-24 12:41:10

Rust安全性內存

2024-12-09 09:55:25

2020-11-10 16:00:55

機器學習人工智能AI

2023-09-18 14:34:07

Kubernetes云原生

2023-12-18 10:08:56

2020-12-11 14:02:58

機器學習分類算法回歸算法
點贊
收藏

51CTO技術棧公眾號

黄色小视频免费观看| 国产一级片视频| 欧美一级大片在线视频| 亚洲自拍偷拍九九九| 激情伦成人综合小说| 欧美在线视频精品| 亚洲调教视频在线观看| 亚洲日本成人网| 亚洲制服在线观看| 欧美xxxxxx| 亚洲综合男人的天堂| 日韩免费一区二区三区| 亚洲爆乳无码一区二区三区| 日日夜夜免费精品| 欧美夫妻性生活视频| 在线观看国产精品一区| www.豆豆成人网.com| 欧美亚洲动漫精品| 日本韩国欧美在线观看| 国产婷婷视频在线| 久久麻豆一区二区| 波多野结衣精品久久| 日韩欧美国产另类| 一本不卡影院| 欧美大荫蒂xxx| 国产视频123区| 亚洲a级精品| 精品国产91洋老外米糕| 老司机久久精品| av在线一区不卡| 欧美性极品xxxx娇小| 国产一区二区三区小说| 黄色网址视频在线观看| 欧美国产日产图区| 欧美一进一出视频| 色鬼7777久久| caoporm超碰国产精品| 亚洲综合在线做性| 国产精品久久久久久69| 久久精品国产网站| 国产精品美女免费看| 中文字幕黄色片| 午夜亚洲一区| 日本久久亚洲电影| 国产91精品一区| 国产欧美欧美| 欧美最近摘花xxxx摘花| 欧美a∨亚洲欧美亚洲| 亚洲黄色影院| 性日韩欧美在线视频| 国产精品theporn动漫| 欧美视频成人| 欧美日韩成人网| 久久一二三四区| 亚洲性感美女99在线| 欧美老女人性视频| 久久久久久久久久综合| 在线国产日韩| 日本欧美在线视频| 中文人妻熟女乱又乱精品| 久热精品在线| 国产精品美女在线观看| 国产精品日韩无码| 国产精品一区免费视频| 国产高清不卡av| 婷婷视频在线观看| 久久久久亚洲蜜桃| 一区二区不卡在线观看| 国产激情视频在线观看| 一区二区三区在线高清| 青青草成人免费在线视频| a√中文在线观看| 日韩欧美综合在线视频| 精品日韩久久久| 国产专区精品| 日韩av在线免费播放| 亚洲综合网在线观看| 久久蜜桃av| 欧美黑人性生活视频| 在线观看免费av片| 久久久国产精品一区二区中文| 亚洲成色777777女色窝| 内射中出日韩无国产剧情| 激情五月色综合国产精品| 日韩最新中文字幕电影免费看| 白丝校花扒腿让我c| 精品三级av| 中文国产成人精品久久一| 欧美成人三级在线观看| aa级大片欧美三级| 国产热re99久久6国产精品| 国产成人a人亚洲精品无码| av影院午夜一区| 亚洲精品乱码视频| 91黄页在线观看| 欧美日韩精品一区二区天天拍小说| 国产二区视频在线播放| 四虎地址8848精品| 亚洲国产成人精品女人久久久 | 这里只有精品视频| 超碰手机在线观看| 久久综合亚州| 国产在线播放一区二区| av资源在线观看免费高清| 亚洲精品中文字幕乱码三区 | 精品人妻无码一区| 欧美a级片网站| 国产999精品久久久| 午夜精品一区二区三| 日本一区二区三区在线观看| 国产日本在线播放| 电影一区中文字幕| 在线观看欧美视频| 六月丁香激情综合| 成人晚上爱看视频| 日韩最新中文字幕| 欧美视频精品| 在线观看免费高清视频97| 精品视频一区二区在线观看| 国内精品自线一区二区三区视频| 成人精品一区二区三区电影黑人| 国产精品爽爽久久| 国产精品―色哟哟| 国产xxxxx在线观看| 国产一区在线电影| 欧美激情视频一区二区三区不卡| 国产第一页在线播放| 国产麻豆精品在线观看| 一区二区三区四区欧美日韩| 国产精品专区免费| 精品亚洲一区二区三区四区五区| 久久久精品成人| 一本色道久久| 精品国产一区二区三区日日嗨| 裸体xxxx视频在线| 精品久久久一区| 性久久久久久久久久久| 伊人蜜桃色噜噜激情综合| 91精品国产一区二区三区动漫 | 777777av| 99久久人爽人人添人人澡| 中文字幕日本欧美| 中文字幕精品在线观看| 中文字幕免费不卡在线| 五月婷婷之综合激情| 亚洲制服一区| 国产成人福利网站| xxxxx日韩| 欧美日韩久久久一区| youjizz亚洲女人| 美日韩一区二区三区| 亚洲一区二区三区精品视频| 亚瑟国产精品| 欧美精品在线网站| 国产91免费看| 欧美日韩国产一区中文午夜| 免费成人蒂法网站| 久久视频一区| 亚洲巨乳在线观看| 国产精品国产亚洲精品| 欧美人与性动交| 天天综合网天天综合| 91黄色激情网站| 任我爽在线视频| 国产大片一区二区| 人人干视频在线| 国产精品一区高清| 91久久国产精品| 波多野在线观看| 亚洲男人天堂2023| 亚洲天堂aaa| 亚洲精品欧美激情| 国产精品久久久久一区二区 | 毛片av一区二区三区| 亚洲欧洲精品在线 | 色综合久久天天| 日本午夜精品视频| 国产成人综合在线| 91九色在线观看视频| 国产精品最新| 亚洲一区二区三区在线视频| 国产福利电影在线播放| 亚洲天堂免费视频| 国产又粗又长又大视频| 香蕉成人伊视频在线观看| 熟女少妇内射日韩亚洲| 国产在线乱码一区二区三区| 免费观看国产精品视频| 欧美视频网址| 国产成人免费观看| 全球中文成人在线| 国内伊人久久久久久网站视频| 精品久久久久久亚洲综合网站| 中文字幕高清一区| 在线观看一区二区三区视频| 一区二区高清| 最新欧美日韩亚洲| 午夜欧洲一区| 91av免费看| 国产精品伊人| 2019最新中文字幕| www.久久ai| 国产一区二区久久精品| 亚洲第一页在线观看| 欧美影院一区二区三区| 国语对白一区二区| 亚洲私人影院在线观看| 波多野吉衣中文字幕| 粉嫩高潮美女一区二区三区| www.com黄色片| 亚洲精品无码专区| 亚洲免费电影在线| 国产在线综合视频| 91丨porny丨户外露出| 潘金莲一级淫片aaaaa| 免费成人av资源网| 日本免费一级视频| 伊人久久综合| 成人在线免费观看视频网站| 欧美电影一区| 亚洲春色在线| 久久91精品| 久久天堂国产精品| 国产精品调教| 成人av免费在线看| 亚洲一区网址| 91免费在线视频| 欧美综合影院| 成人国产精品av| 精品乱码一区二区三区四区| 国产不卡精品视男人的天堂| 欧美男人天堂| 91wwwcom在线观看| 国产精品一二三产区| 欧美精品aaa| 欧美xxxbbb| 欧美激情视频在线免费观看 欧美视频免费一 | 日韩av电影免费在线| 国产亚洲精品美女久久| 高清视频一区| 大奶一区二区三区| www国产亚洲精品| 伊色综合久久之综合久久| 91原创国产| а√中文在线天堂精品| 国产精品theporn88| 精品精品国产毛片在线看| 国产精品免费视频一区二区| 国产精东传媒成人av电影| 国产亚洲精品美女久久久m| 久久综合五月婷婷| 久久久久久久久久久久久久久久av | 色综合天天爱| 黄色一级片网址| 亚洲国产精品91| 青青草视频国产| 影音先锋久久资源网| 人妻av无码专区| 日韩视频一区| 国产精品亚洲a| 美女一区二区视频| 国产91在线免费观看| 丁香婷婷综合网| 色婷婷在线影院| 国产精品污网站| 国产盗摄x88av| 婷婷丁香久久五月婷婷| 亚洲欧美另类在线视频| 欧美日韩国产另类不卡| 国产黄色一区二区| 亚洲精品狠狠操| avtt在线播放| 色在人av网站天堂精品| 午夜伦理福利在线| 国产一区玩具在线观看| 69精品国产久热在线观看| 久久久久久久久久久久久久一区| 精品视频在线观看免费观看| 国产91一区二区三区| 亚洲人成网www| 这里只有精品66| 国产精品a久久久久| 国产福利视频在线播放| 精品综合久久久久久8888| 精品国产乱码久久久久夜深人妻| 美腿丝袜在线亚洲一区| 337p粉嫩大胆噜噜噜鲁| 免费在线看成人av| 亚洲一区二区三区四区av| 国产日韩欧美一区二区三区乱码| 老司机福利av| 亚洲色图.com| 国产成人无码av| 日韩一卡二卡三卡四卡| 欧美日本韩国一区二区| 欧美精品午夜视频| 精品成人av| 国产精品大全| 日韩影院二区| 国产精品50p| 国产精品一区免费视频| 日本一级免费视频| 亚洲国产日韩精品| 中文字幕日本人妻久久久免费 | 九九九九九九九九| av一本久道久久综合久久鬼色| 欧美xxxxx少妇| 国产精品久久精品日日| 日韩精品视频播放| 777xxx欧美| 超碰在线国产| 欧美亚洲另类激情另类| 午夜久久av| 丝袜美腿玉足3d专区一区| 亚洲黄页一区| 免费啪视频在线观看| 亚洲视频在线一区| 国产乱码在线观看| 日韩av最新在线观看| caopen在线视频| 国产日韩中文字幕| 精品99久久| chinese少妇国语对白| 91小视频免费看| 久久精品国产亚洲av麻豆色欲| 红桃av永久久久| 国产18精品乱码免费看| 欧美成人手机在线| 成人精品视频在线观看| 亚欧精品在线| 蜜桃视频一区二区| 精品无人区无码乱码毛片国产 | 四虎国产精品免费久久| 日韩精品久久久毛片一区二区| 久久精品99久久无色码中文字幕| 在线视频91| 精品一区二区三区日韩| 9.1片黄在线观看| 欧美日韩一区二区电影| 69久久夜色| 国产日韩专区在线| 99精品一区| 亚洲午夜精品一区| 综合久久综合久久| 视频一区视频二区视频| 亚洲精品国产九九九| 日韩视频一二三| 国产精品亚洲成人| 538任你躁在线精品视频网站| 亚洲第一成人在线| 欧美一级特黄aaaaaa大片在线观看| 精品香蕉一区二区三区| 国产精品一二三产区| 蜜桃av久久久亚洲精品| 天堂一区二区在线| 亚洲色图欧美色| 91麻豆精品国产91久久久久久久久 | 欧美日本在线视频中文字字幕| 免费电影日韩网站| 小说区图片区图片区另类灬| 男女激情视频一区| 神马久久精品综合| 日韩免费电影一区| 大黄网站在线观看| 精品乱色一区二区中文字幕| 久久国产精品久久久久久电车| 欧美人与性动交α欧美精品| 一区二区三区欧美日韩| 天天干天天爽天天操| 国产aaa精品| 国产二区精品| 亚洲美女在线播放| 色婷婷亚洲一区二区三区| 秋霞午夜理伦电影在线观看| 亚洲xxxx在线| 国产精品毛片在线| 色偷偷男人天堂| 精品少妇一区二区三区| 91av亚洲| www.黄色网址.com| 91社区在线播放| 一本到在线视频| 91高清视频在线免费观看| 日产午夜精品一线二线三线| wwwww在线观看| 黑人精品xxx一区一二区| 2017亚洲天堂1024| 国产一区二区三区奇米久涩 | 中文字幕不卡的av| 国产精品久久久久久久免费| 午夜精品蜜臀一区二区三区免费| 日韩精品一区二区三区中文在线| 亚洲啪啪av| 成人精品高清在线| 欧美三级网站在线观看| 欧美第一淫aaasss性| 日本成人小视频| 私密视频在线观看| 欧美一区日本一区韩国一区| 美脚恋feet久草欧美|