分層自動(dòng)化測(cè)試模型變與不變
以下文章來源于獨(dú)行高飛 ,作者CrissChan
分層自動(dòng)化測(cè)試模型的發(fā)展
分層自動(dòng)化測(cè)試模型最早是由Mike Cohn在2009年出版的《Succeeding with Agile》書中的第十六章進(jìn)行闡述的,他說“測(cè)試金字塔是分層測(cè)試的一種最佳實(shí)踐“。
金字塔自動(dòng)化測(cè)試模型如上圖A所示,從下往上分為單元測(cè)試、接口測(cè)試、界面測(cè)試(其實(shí)我更習(xí)慣于叫UI自動(dòng)化)。那么他為什么是金字塔的樣子呢?這其實(shí)是和每一類自動(dòng)化測(cè)試的投入產(chǎn)出比相關(guān)聯(lián)的。
“越早開始測(cè)試,發(fā)現(xiàn)問題修復(fù)問題的成本越低”,這句話決定了在單元測(cè)試階段發(fā)現(xiàn)的問題修復(fù)成本最低,因此應(yīng)該加大單元測(cè)試的投入,因此在金字塔模型中單元測(cè)試就應(yīng)該占據(jù)的面積最大,以此類推,接口測(cè)試次之,界面測(cè)試占面積最少。
也就是說,在金字塔模型中各類測(cè)試所占的面積代表了對(duì)應(yīng)測(cè)試的投入成本。隨著互聯(lián)網(wǎng)的快速發(fā)展,以及微服務(wù)、容器的快速推廣,金字塔模型已經(jīng)不是非常滿足業(yè)務(wù)交付的需求,測(cè)試重心逐漸地偏移到了接口測(cè)試,接口測(cè)試的投入越來越大,相比單元測(cè)試的投入越來越少。
接口測(cè)試逐漸的內(nèi)部分成單接口測(cè)試和業(yè)務(wù)接口測(cè)試,單接口測(cè)試向下做了一個(gè)本該由單元測(cè)試的工作,因此單接口測(cè)試會(huì)充分測(cè)試接口的穩(wěn)定性,這部分主要通過邊界值以及其他一些測(cè)試用例設(shè)計(jì)方法完成測(cè)試用例設(shè)計(jì)。
業(yè)務(wù)接口測(cè)試用例主要是通過一些接口的調(diào)研模擬部分業(yè)務(wù)來驗(yàn)證業(yè)務(wù)實(shí)現(xiàn)的真確性,這部分常用場(chǎng)景法等測(cè)試用例設(shè)計(jì)方法。如上圖B所示,稱之為橄欖球模型。
分層測(cè)試模型為什么分層
前面我說過,金字塔分層自動(dòng)化模型單元測(cè)試投入最大是因?yàn)閱卧獪y(cè)試的投入產(chǎn)出比最大,那么為什么不能將這種最大收益的測(cè)試類型最大化,那豈不是應(yīng)該為最優(yōu)秀的自動(dòng)化測(cè)試實(shí)踐嗎?
其實(shí),這不能達(dá)到最大收益,反而會(huì)降低整體自動(dòng)化測(cè)試效果。如上圖所示藍(lán)色部分(藍(lán)色部分表示單元測(cè)試)所示。
單元測(cè)試的被測(cè)件是每一個(gè)邏輯單元,在做單元測(cè)試的時(shí)候會(huì)將外部依賴、數(shù)據(jù)依賴等通過TestDouble進(jìn)行解耦,這就可以看出,單元測(cè)試沒有覆蓋到真實(shí)數(shù)據(jù)的依賴、外部服務(wù)依賴等,而且它只測(cè)試了每一個(gè)邏輯單元(很大程度上可以理解為是一個(gè)函數(shù))
那么函數(shù)和函數(shù)間的調(diào)用卻沒有被測(cè)試到稱之為測(cè)試間隙,如上圖綠色部分(綠色部分表示接口測(cè)試)所示,通過單接口測(cè)試和業(yè)務(wù)接口測(cè)試就可以彌補(bǔ)單元測(cè)試的測(cè)試間隙,那么黃色部分(黃色部分代表界面自動(dòng)化測(cè)試)通過模擬主要業(yè)務(wù),彌補(bǔ)了接口測(cè)試的測(cè)試間隙。
發(fā)展的分層自動(dòng)化測(cè)試模型中不變實(shí)踐
無論分層自動(dòng)化測(cè)試模型怎么發(fā)展,UI自動(dòng)化測(cè)試部分卻永遠(yuǎn)沒有發(fā)生變化。這是為什么呢?
首先,UI測(cè)試需要SUT的各個(gè)組件都處于就緒狀態(tài)。那么為了支持UI自動(dòng)化測(cè)試就需要在準(zhǔn)備測(cè)試環(huán)境、測(cè)試數(shù)據(jù)這等,需要投入很多人力物力。其次,UI是給人與系統(tǒng)進(jìn)行交互,用戶手工操作速度就比計(jì)算機(jī)運(yùn)行速度慢了很多個(gè)數(shù)量級(jí)。
所以無論怎么發(fā)展,分層自動(dòng)化測(cè)試模型都沒有增加在UI自動(dòng)化上的投入。雖然UI自動(dòng)化測(cè)試在分層模型中并沒有絕對(duì)的變化,但是UI自動(dòng)化測(cè)試也并沒有完全被取代,這說明UI自動(dòng)化測(cè)試還是有其的優(yōu)越性的:
1、UI自動(dòng)化測(cè)試可以大大縮短反饋周期,發(fā)現(xiàn)BUG、修復(fù)BUG相較于手工測(cè)試更快更容易。
2、UI自動(dòng)化測(cè)試的一個(gè)合格的測(cè)試場(chǎng)景需要開發(fā)工程師、測(cè)試工程師、產(chǎn)品經(jīng)理緊密的合作,相互理解,這也使得團(tuán)隊(duì)更加關(guān)注于質(zhì)量?jī)?nèi)建,團(tuán)隊(duì)全部的角色都會(huì)關(guān)注業(yè)務(wù)價(jià)值交付。
合適的技術(shù)還是需要用到正確的地方,UI自動(dòng)化測(cè)試最適合驗(yàn)收測(cè)試階段。驗(yàn)收測(cè)試是測(cè)試部分的最后階段,因此在這個(gè)階段中被測(cè)試系統(tǒng)的外部依賴會(huì)真實(shí)訪問外部依賴服務(wù)。
利用UI自動(dòng)化測(cè)試實(shí)現(xiàn)自動(dòng)化驗(yàn)收測(cè)試,能夠加快驗(yàn)收測(cè)試反饋周期,提升驗(yàn)收測(cè)試階段的效率。自動(dòng)化驗(yàn)收測(cè)試會(huì)模擬系統(tǒng)使用的主要流程,那么這里的主要流程在最開始的設(shè)計(jì)UI自動(dòng)化測(cè)試的時(shí)候有可能覆蓋并不全面。
因此會(huì)在后續(xù)迭代中不斷的發(fā)現(xiàn)遺漏主要業(yè)務(wù)場(chǎng)景,并馬上變寫一個(gè)UI自動(dòng)化測(cè)試覆蓋這個(gè)場(chǎng)景,逐漸就會(huì)的得到一個(gè)完善的自動(dòng)化驗(yàn)收測(cè)試的測(cè)試用例集。
那么自動(dòng)化驗(yàn)收測(cè)試也并不是隨意執(zhí)行的,如果執(zhí)行頻次很高,那么無論是從測(cè)試耗時(shí)還是外部依賴系統(tǒng)的壓力上都會(huì)有所影響,所以自動(dòng)化驗(yàn)收測(cè)試推薦每天運(yùn)行一次的頻次。
總結(jié)
未來伴隨則自動(dòng)化測(cè)試技術(shù)的發(fā)展,分層自動(dòng)化測(cè)試模型也會(huì)不斷演進(jìn)和發(fā)展,但是無論如何演進(jìn)分層模型的依據(jù)還是測(cè)試投入,因此未來如果智能化測(cè)試能夠替代人工投入那么分層模型也會(huì)有根本性的改變的。
作者:CrissChan
歡迎關(guān)注微信公眾號(hào) :Python測(cè)試社區(qū)