亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何掌握微服務的測試核心

發布時間:2021-10-25 10:20:40 來源:億速云 閱讀:154 作者:iii 欄目:開發技術

本篇內容主要講解“如何掌握微服務的測試核心”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“如何掌握微服務的測試核心”吧!

傳統測試與微服務測試的區別

傳統測試模型抽象

如何掌握微服務的測試核心

上圖中的服務器端包括n個功能,傳統服務是所有的功能都部署在一臺機器上,通過增加服務器數量來擴容!參考下圖(每一種顏色代表一個功能,部署了四套同樣的服務)

如何掌握微服務的測試核心

微服務測試模型抽象

如何掌握微服務的測試核心

微服務不同于傳統測試,它往往沒有UI頁面,我們需要通過構建請求(通過編碼或者工具模擬)調用各個服務接口。微服務是以業務為單位進行部署的,上圖中的每一個服務代表一個功能,不同的業務部署在不同的服務器上,業務使用頻繁的還可以使用更多的資源進行部署(下圖中橘黃色部署了5個單元,而玫紅色只部署了1個單元),這樣就可以更合理的利用資源了。

如何掌握微服務的測試核心

微服務的主要測試內容

  • 單元測試:從服務中最小可測試單元視角驗證代碼行為符合預期,以便測試出方法、類級別的缺陷。

  • 集成測試:驗證當前服務與外部模塊之間的通信方式或者交互符合預期,以便測試出接口缺陷。

  • 組件測試:將測試范圍限制在被測系統的一部分(一般是單個服務),使用測試替身(mock)將其與其他組件隔離,以便測試出被測代碼的缺陷。

  • 契約測試:驗證當前服務與外部服務之間的交互,以表明它符合消費者服務所期望的契約,本質驗證接口規范

  • UI測試:傳統的點點點頁面測試。

其中,集成測試、組件測試和契約測試是我們的測試重點,而上述三種測試,我們可以理解為接口測試(關于什么是接口測試這里就不再詳細介紹了)。即每個服務提供對外接口,然后我們通過這個接口對服務進行調用,最后驗證其返回值是否達到預期!我們可以通過編碼或者工具來構建接口并向接口發起請求,然后按照接口文檔來校驗響應是否符合預期。

微服務測試注意事項

微服務可以分為無依賴的服務和有依賴的服務。

  • 無依賴的服務:自己就能夠滿足調用者的需求提供完整的服務功能,無需其他服務提供功能。我們直接對該服務提供的接口進行測試即可

  • 有依賴的服務:自己不能夠滿足調用者的需求,需要其他服務提供某一種或多種功能,一起向調用者提供完整的服務功能。此時我們需要隔離掉單個微服務依賴的其他微服務,避免測試過程中受到依賴服務的影響(如服務不可用、服務缺陷等)而出現阻塞測試過程、測試無效等情況。通常使用mock技術將被測服務與依賴的服務進行隔離,使得服務鏈路穩定、環境可控,這有利于測試過程的開展。Mock概念起源于單元測試,單元測試中我們只關注被測的單元,而不關心其他依賴的內容。Mock讓我們有了一套仿真的環境,不用擔心在檢查單元內的內部流轉的過程時還會因為環境的關系導致驗證過程失敗。由于外部環境的多樣性,單元測試應該設計一些異常場景使得代碼能夠捕獲該異常。例如在下圖a中,如果我們要對A進行測試,那么就要先把整個依賴樹構建出來,也就是BCDE的實例,該方案的成本極高。一種替代方案就是使用mock,如圖b所示,我們只需要規定  Mock B 和Mock C 在接收到A的請求后給出對應的響應即可(無需在Mock B 和Mock  C中執行復雜的邏輯運算)。在代碼實現層面,我們可以通過mockito(針對java)實現mock操作。

如何掌握微服務的測試核心

圖a

 如何掌握微服務的測試核心

圖b

在微服務測試中mock的服務又是什么呢?舉個例子,我們把支付功能做成微服務,該服務負責處理支付的邏輯,而在最后付款時,我們需要調用支付寶來完成付款。那么這個場景該如何處理呢?簡單方式,我們花一分錢真實的購買服務。那么假設我們要驗證10000元購買服務呢?或者當支付寶出錯時,我們的程序又該如何處理呢?在這里我們就可以把支付寶作為一個mock服務,核心實現思路如下:

對應用的請求進行解析,并返回預先定義好的響應值,具體如下:

1.支付請求校驗正確,返回支付成功;

2.支付請求校驗失敗,返回支付失敗;

3.關掉支付寶mock服務,可以模擬支付寶異常

我們可以使用wiremock來搭建自己的mock服務器,簡單原理如下圖所示:

如何掌握微服務的測試核心

我們需要在配置文件中設置預定義的請求,如果應用的請求符合預定義請求則返回預定義的響應。然后啟動wiremock來實現請求的處理,wiremock就是一個web服務器!具體詳情請參考:https://github.com/tomakehurst/wiremock

微服務測試總結

1. 如果你只做UI功能測試,那么微服務測試與傳統測試沒有區別,因為你只你感受不到架構的變化。

2.對各個微服務提供的接口測試本質上等價于接口測試。需要按照微服務的接口說明文檔進行接口功能以及性能和安全的測試。

3.必要時需要通過mock方式來模擬微服務所依賴的服務來提升被測服務的可測性。

4.要關注負載均衡,測試請求是否分發到多點應用。參考文章:微服務性能測試的關鍵——IP欺騙技術

5.通過工具 SpringCloud Sleuth、  Turbine、Prometheus對各個服務消耗的資源(包括:cpu、內存、磁盤,網絡)進行監控;

6.通過ELK( ElasticStack )來集中化管理日志。參考文章:微服務測試的關鍵——通過ELK查詢日志

7.理解微服務的核心概念。參考文章:一文搞定微服務測試本質

到此,相信大家對“如何掌握微服務的測試核心”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

龙江县| 富顺县| 玉树县| 兴和县| 吉林市| 东乡县| 漠河县| 伊通| 汕尾市| 胶南市| 南召县| 昌图县| 水富县| 合江县| 四子王旗| 定结县| 交口县| 商水县| 惠州市| 龙里县| 姚安县| 永年县| 天镇县| 凤城市| 南靖县| 景德镇市| 会昌县| 夏邑县| 兴化市| 东乌珠穆沁旗| 井研县| 大渡口区| 长沙县| 涿州市| 竹北市| 旬阳县| 遂溪县| 容城县| 荥经县| 徐汇区| 高要市|