What is 测试金字塔?
【答疑解惑】|?作者?/ Edison Zhou
這是恰童鞋騷年的第271篇原創(chuàng)內(nèi)容
我的女朋友是一名測試工程師,但她之前卻不知道測試金字塔的概念,為此我曾經(jīng)在家里的白板上畫了一個圖一層一層給她講解過。我和同事在給團隊面試測試和開發(fā)崗位時,也會必問到這個問題,想到可能有很多開發(fā)童鞋都不知道,這里我就用一篇推文給大家科普一下。
1傳說中的金字塔
我們都知道,針對項目的測試有很多分類,比如單元測試、集成測試、組件測試、端到端測試 以及 探索性測試等。那么,測試金字塔其實就是給我們的一個指導,它指導我們要在不同類型的測試工作投入多少的精力是最合適的。
廢話不多說,先上圖:
測試金字塔示意圖(來自波波老師的課程)
從上圖中我們可以看到,測試金字塔建議我們:
(1)盡可能地多做單元測試 和 集成測試,因為他們的執(zhí)行速度相較于上層的幾個測試類型來說快很多且相對穩(wěn)定,可以一天多次執(zhí)行。一般來說,我們都會將單元測試 和 集成測試 做到持續(xù)集成構(gòu)建任務(wù)中去,比如放到Jenkins中每天定時執(zhí)行1~2次,或者每次push代碼到git倉庫后執(zhí)行,總之,就是要確保可以頻繁執(zhí)行以確保代碼質(zhì)量。
(2)盡可能地少做 組件測試、端到端測試 和 探索性測試,因為他們的執(zhí)行速度相較單元測試 和 集成測試 會慢很多,且不夠穩(wěn)定,無法做到一天多次執(zhí)行,每次執(zhí)行都要等很久才能獲得反饋結(jié)果。但是,他們的覆蓋面比下層的單元測試 和 集成測試 要廣一些。總之,就是要確保一定周期內(nèi) 或者 關(guān)鍵節(jié)點時間?執(zhí)行以下這幾個測試以確保軟件質(zhì)量。
畫外音:金字塔里,越往下速度越快且越穩(wěn)定,那么就可以頻繁執(zhí)行,反正執(zhí)行一次也花不了多久時間,開發(fā)人員還可以知道我的代碼有沒有影響到其他模塊。越往上則速度越慢且越不穩(wěn)定,跑一次要N久,開發(fā)人員往往會覺得還是先繼續(xù)開發(fā)吧,到時候出了bug再說,我可不想加班等測試結(jié)果。
2端到端的測試實踐
在具體實踐中,位于上層的端到端測試是粒度相對較粗 但是 我們又不得不做的測試實踐。在微服務(wù)架構(gòu)風格中,端到端測試涉及到的相關(guān)服務(wù)依賴很多,且異步等可變的因素較多,因此它也是一種最不穩(wěn)定的測試。
端到端測試示意圖(來自波波老師)
端到端測試:驗證工作流中的所有流程,以檢查一切是否按預期工作。它還確保系統(tǒng)以統(tǒng)一的方式工作,從而滿足業(yè)務(wù)需求。
這里也跟大家分享一下在微服務(wù)架構(gòu)場景中,對于端到端測試的一些實踐要點,僅供參考:
(1)80/20原則,花更多的精力聚焦核心業(yè)務(wù)服務(wù);對于我司來說,可能就是統(tǒng)一鑒權(quán)服務(wù)、訂單下單服務(wù)、統(tǒng)一支付服務(wù)等;
(2)用戶使用場景驅(qū)動,即盡可能使用最終用戶的用例流程來驅(qū)動測試,這樣可能更加容易覆蓋到產(chǎn)生業(yè)務(wù)價值的場景;
(3)適當Mock不穩(wěn)定測試點,如果有些微服務(wù)依賴的第三方服務(wù)不夠穩(wěn)定的話,那么可以適度犧牲一些覆蓋面,使用Mock來測試。
(4)規(guī)范測試環(huán)境和環(huán)境自動化,即團隊可以具備幾種測試環(huán)境一鍵創(chuàng)建的能力,比如使用Docker + Kubernetes就可以幫助實現(xiàn)這個點。這一點,我相信大部分的小團隊都不具備這個能力,我司其實也一樣,所以我建議小團隊盡可能上云,直接使用云上的能力幫助我們克服自身團隊的技術(shù)儲備弱的問題,提升端到端測試的效率。
(5)測試數(shù)據(jù)管理,即團隊可以具備一鍵生成測試數(shù)據(jù)的能力,而不是每次環(huán)境啟動起來才去修改數(shù)據(jù)以便于測試,一般都會通過維護測試數(shù)據(jù)的自動化腳本來實現(xiàn)。
畫外音:對你們團隊的測試同事好點,他們做端到端測試的時候會問候你的。
3小結(jié)
本文介紹了測試金字塔的概念 及?耗時的端到端測試的實踐要點,最后溫馨提示一下,快下班時盡量別改自己不了解影響范圍的Bug,否則你會像下面這樣:
?
?????點個贊和在看如何?
總結(jié)
以上是生活随笔為你收集整理的What is 测试金字塔?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: api接口返回动态的json格式?我太难
- 下一篇: 技术脱钩后软硬件磨合优化不失为一条出路