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