自動化測試是一項(xiàng)“一旦開始,就需要持續(xù)投入”的工作,所以它一直是測試領(lǐng)域的一塊雞肋。不做吧,好像手工測試重復(fù)得讓人有些厭倦,而且手工測試時間也縮短不了。做吧,害怕投入的比回報要多。
沒實(shí)施自動化的團(tuán)隊(duì)有各種各樣的困擾。有的說:“項(xiàng)目有太多的老代碼需要補(bǔ)充自動化測試腳本,補(bǔ)不起!”有的說:“項(xiàng)目開發(fā)太緊張,如果同時還要自動 化,等不起!”還有的說:“自動化測試工具太貴了!買不起!”確實(shí),各種各樣的“傷不起”使得大量的組織在“要不要自動化”這個問題上總在了解和觀望,躊 躇不前。
我們閱讀了一些關(guān)于自動化測試ROI的文章, 發(fā)現(xiàn)大多都是介紹各種不同的計(jì)算方法,但來自實(shí)際的數(shù)據(jù)分享比較少。所以,2011年當(dāng)我們組織想推行自動化測試的時候,為了打消大家(尤其是管理層)對 于自動化測試的投入和產(chǎn)出方面的疑慮,計(jì)算我們自己的自動化測試投資回報率ROI(Return on Investment)成了我們啟動時就考慮的問題。本文將分為四部分介紹我們的實(shí)踐方法和結(jié)果。
第一部分:業(yè)界計(jì)算自動化測試ROI的方法
簡言之,ROI = 收益/投入。但收益如何計(jì)算,投入包括哪些,眾說紛紜,并沒有一個定論。
在Dion Johnson的“test automation ROI”中給出了三種計(jì)算自動化測試ROI的方法。第一種方法“簡單ROI”著重從“錢”的方面去看。它考慮了工具、培訓(xùn)、機(jī)器等各種費(fèi)用,并把測試時間 的投入通過單位時間的工資轉(zhuǎn)化成為錢。第二種方法“效率ROI”與第一種方法不同的是從測試效率的角度,只考慮了時間投入所產(chǎn)生的收益,而沒有考慮其它如 購買工具方面的投入。這個方法比較適合測試人員計(jì)算收益。第三種方法“降低風(fēng)險ROI”著重計(jì)算自動化測試與手工測試相比在降低風(fēng)險方面的收益。它會假設(shè) 不做某種自動化測試,相關(guān)的風(fēng)險一旦成為事實(shí)所帶來的損失,從而計(jì)算ROI。這個方法比較適合管理人員從整體考量自動化的收益。
那么,目前我們的團(tuán)隊(duì)期望自動化測試能帶來哪些收益,尤其是哪些收益是目前不能奢望的?我們的經(jīng)理愿意提供多少資源投入自動化測試呢?帶著這些問題,我們開始了自己對自動化測試ROI的定義和度量。
第二部分:我們計(jì)算自動化測試ROI的方法
在度量自動化測試的收益方面,角度很多。我們選擇的是從“多、快、好、省”四個方面去看。
更多
鑒于我們處于自動化測試的初級階段,我們打算暫時先不去追求“更多”。即我們不奢望一年之內(nèi)整個項(xiàng)目組在一個版本里做更多的工作,因?yàn)樵谧詣踊度氤跗?難以提高團(tuán)隊(duì)的生產(chǎn)力。我們也不奢望測試人員馬上能有更多時間去做更有價值的工作(相對于一次測試的多次重復(fù)執(zhí)行)。因?yàn)闇y試人員通過自動化測試從測試執(zhí) 行上節(jié)約出來的時間需要投入到自動化工具和技能的學(xué)習(xí)上去。
更快
在時間維度上,我們希望能夠更快地發(fā)現(xiàn)和修復(fù)穩(wěn)定的主流程上的明顯的嚴(yán)重缺陷。如果一個測試人員手工測試多個功能,那么測試執(zhí)行的并行度總有個上限。而 多個并行執(zhí)行的自動化測試腳本可以更快速地驗(yàn)證版本,一次性地報告問題。這尤其在測試初期版本不穩(wěn)定,或者是每日構(gòu)建的時候有用。有時,甚至是在我們不覺 得有測試必要的時候,自動化測試可以及時報告剛引入的問題。另一方面,更快地發(fā)現(xiàn)缺陷也意味著可能可以更快地修復(fù)缺陷。
更好
我們希望自動化測試可以幫助我們實(shí)現(xiàn)對“更好”的追求,包括質(zhì)量、信心、士氣三個方面。
1、更好的質(zhì)量
更好的質(zhì)量最容易被理解成為更少的缺陷。但這里需要強(qiáng)調(diào)的是“更少的缺陷個數(shù)并不僅僅能依靠我們基于界面的自動化測試來達(dá)到”。我們這里希望自動化測試 能夠幫助我們減少生產(chǎn)環(huán)境中某種特定類型的缺陷。這些缺陷包括環(huán)境或者配置相關(guān)的缺陷、在主流程上本來正常但因?yàn)楹笃谛薷挠绊懙降墓δ堋⒁约叭菀妆缓雎缘?地方(如:同一功能的多個入口、不常使用的功能)等。
2、更強(qiáng)的質(zhì)量信心
在內(nèi)部 測試中,我們希望借助自動化測試來提升的是對質(zhì)量的信心。這主要體現(xiàn)在:(1)對于小版本和并行版本的質(zhì)量更好地把關(guān)。小版本通常要求更快速的響應(yīng)。并行 版本通常要求測試人員頻繁切換環(huán)境和被測對象。而人在壓力下也更容易犯錯。所以,我們常碰到的是匆忙中由于疏忽,一些比較重要或者明顯的問題沒有被及時發(fā) 現(xiàn)。(2)對缺陷修復(fù)的質(zhì)量更好地把握。根據(jù)統(tǒng)計(jì),大約7%的缺陷修復(fù)會產(chǎn)生新的缺陷,而這些新缺陷有時會出現(xiàn)在前面已經(jīng)測試過并且不會再手工測試的地 方。對于如上兩種情況,重復(fù)利用自動化測試腳本可以不需要額外的投入,快速得到關(guān)于整個版本穩(wěn)定性的信息和質(zhì)量信心。
3、更高的士氣
對于測試團(tuán)隊(duì),我們希望自動化測試可以喚起更高的工作熱情。這一方面來自于可以部分地將測試人員從大量重復(fù)的測試執(zhí)行中解放出來,另一方面來自于新技 術(shù)、新工具帶來的新鮮感。開發(fā)團(tuán)隊(duì)和終端用戶會是自動化測試的間接受益者,因?yàn)殚_發(fā)團(tuán)隊(duì)能感到問題會更快地暴露出來,終端用戶會感到應(yīng)用程序更穩(wěn)定了。甚 至在不遠(yuǎn)的將來,如果測試時間可以借力自動化而縮短,那么用戶希望的功能也能更快地交付使用了。