該文章為轉(zhuǎn)載垢啼,如有侵權(quán) 請(qǐng)聯(lián)系本人郵箱:bxf0321@qq.com
自動(dòng)化測(cè)試是軟件測(cè)試技術(shù)上的一大進(jìn)步窜锯,我們都知道自動(dòng)化測(cè)試可以給工作提效,減少重復(fù)勞動(dòng)芭析,但在實(shí)踐過(guò)程中衬浑,卻總是碰到各種各樣的問(wèn)題,導(dǎo)致進(jìn)入自動(dòng)化測(cè)試盲區(qū)放刨。如何做好自動(dòng)化測(cè)試,是很多企業(yè)迫切想要解決的問(wèn)題尸饺。阿里巴巴旗下一站式研發(fā)提效平臺(tái)——云效进统,將于12月8日16:00開(kāi)啟《阿里巴巴持續(xù)集成持續(xù)交付之分層自動(dòng)化》直播分享,為企業(yè)提供自動(dòng)化測(cè)試解決方案浪听。今天我們先來(lái)看看阿里巴巴嘉賓的部分解讀螟碎。
嘉賓介紹:金桐:阿里巴巴B2B事業(yè)群高級(jí)產(chǎn)品經(jīng)理。從事多年互聯(lián)網(wǎng)系統(tǒng)的研發(fā)和測(cè)試工作〖Kǎ現(xiàn)在主要負(fù)責(zé)云效分層自動(dòng)化測(cè)試的產(chǎn)品設(shè)計(jì)掉分。
自動(dòng)化測(cè)試
所謂自動(dòng)化測(cè)試,就是用程序模擬用戶手工操作的一種測(cè)試方法克伊,能夠幫助測(cè)試人員從重復(fù)酥郭、枯燥的手工測(cè)試中解放出來(lái)。但在自動(dòng)化實(shí)踐過(guò)程中愿吹,測(cè)試人員往往發(fā)現(xiàn)理想和現(xiàn)實(shí)之間差距很大不从。
圖1
上圖不難看出,阿里該部門(mén)這一周的自動(dòng)化失敗次數(shù)不僅沒(méi)有與發(fā)現(xiàn)bug數(shù)成正比犁跪,還浪費(fèi)了測(cè)試人員41次自動(dòng)化失敗的排查時(shí)間椿息,而這些時(shí)間對(duì)于做自動(dòng)化查bug的初衷,都是無(wú)意義坷衍、不必要寝优、也無(wú)技術(shù)含量之舉。
為什么外部環(huán)境枫耳、業(yè)務(wù)變更乏矾、應(yīng)用環(huán)境問(wèn)題、執(zhí)行機(jī)問(wèn)題、數(shù)據(jù)問(wèn)題妻熊、框架問(wèn)題這些都能引起這么多失敗呢夸浅?而單單真正查出bug的概率這么低呢?
結(jié)合我們的多年自動(dòng)化實(shí)踐與總結(jié)扔役,自動(dòng)化存在如下圖這些缺點(diǎn):
圖2
成本:
人員成本高:基本要懂某種自動(dòng)化框架的代碼語(yǔ)言帆喇,要有一定的編碼能力,同時(shí)代碼邏輯要清晰亿胸,否則如何能保證合理性坯钦、邏輯性、業(yè)務(wù)性與健壯性這些大大影響自動(dòng)化成功率的因素侈玄?如何能保證自動(dòng)化測(cè)試腳本本身沒(méi)有bug婉刀?
環(huán)境成本高:開(kāi)發(fā)環(huán)境、運(yùn)行環(huán)境序仙、調(diào)度環(huán)境等等突颊,接觸過(guò)代碼的同學(xué)都知道,一次環(huán)境的安裝潘悼,沒(méi)有大半天甚至一天是完不成的律秃。同時(shí)要讓自動(dòng)化對(duì)接到項(xiàng)目自動(dòng)化流程中,或定時(shí)監(jiān)控等治唤,都需要再開(kāi)發(fā)調(diào)度平臺(tái)棒动,這些成本對(duì)于從0到有的測(cè)試組,甚至是一家公司宾添,將會(huì)是多大船惨?需要投入多少人日的工作量可以完成這些?
效果:
從圖1分析就知道效果如何缕陕,然而圖1還只是阿里某部門(mén)單周的一個(gè)采樣粱锐,就已經(jīng)浪費(fèi)了41次排查時(shí)間,這樣的自動(dòng)化測(cè)試扛邑,若運(yùn)行一年卜范,那效果又會(huì)如何?能確保后面沒(méi)有這些干擾的失敗嗎鹿榜?失敗次數(shù)可以和bug數(shù)成正比嗎海雪?
覆蓋率:
經(jīng)常有同學(xué)抱怨自動(dòng)化的覆蓋率低,很多分支和邏輯無(wú)法覆蓋舱殿,這大部分原因是這些同學(xué)的理解偏差奥裸,很多人都將UI自動(dòng)化作為自動(dòng)化測(cè)試的全部。然而沒(méi)有一種自動(dòng)化測(cè)試框架可以覆蓋一個(gè)系統(tǒng)的所有功能點(diǎn)的測(cè)試沪袭,所以出現(xiàn)“自動(dòng)化”覆蓋率低的觀點(diǎn)湾宙。那該如何提高自動(dòng)化的覆蓋率呢樟氢?
及時(shí)性:
其實(shí)從圖1中的10次業(yè)務(wù)變更引起的自動(dòng)化失敗,就是這一缺點(diǎn)的佐證侠鳄。所謂業(yè)務(wù)變更埠啃,是指正常的項(xiàng)目變更,但腳本未及時(shí)更新引起的自動(dòng)化失敗伟恶。這種失敗恰恰又證明自動(dòng)化測(cè)試是有用的碴开,只要測(cè)試覆蓋到的內(nèi)容,一旦有變博秫,自動(dòng)化就能測(cè)試出來(lái)潦牛。那如何提高我們的腳本及時(shí)性呢?
面對(duì)這些問(wèn)題挡育,我們不禁自問(wèn):做自動(dòng)化測(cè)試真的有必要嗎巴碗?如果有必要,那如何降低這些成本即寒,如何提高測(cè)試效果呢橡淆?經(jīng)過(guò)不斷的實(shí)踐,我們引入了分層自動(dòng)化測(cè)試的策略母赵。
分層自動(dòng)化的理念是什么明垢?
在理解分層自動(dòng)化之前寺晌,我們先看自動(dòng)化測(cè)試金字塔。自動(dòng)化測(cè)試金字塔在測(cè)試領(lǐng)域耳熟能詳办桨,其中ui代表頁(yè)面級(jí)系統(tǒng)測(cè)試事扭,service代表服務(wù)業(yè)務(wù)測(cè)試(接口測(cè)試),unit代表單元測(cè)試妒穴。金字塔越高,表示需要投入的精力和工作量越大。
單元測(cè)試(unit):它可以通過(guò)mock框架谷醉,模擬各種異常場(chǎng)景,外部依賴(lài)最少冈闭,且可以做到測(cè)試粒度到最小的一種測(cè)試方法俱尼。也因?yàn)橐蕾?lài)少,可方便隨時(shí)隨地執(zhí)行萎攒,也讓問(wèn)題排查很簡(jiǎn)單遇八。這是一切測(cè)試的地基。
接口測(cè)試(service):這里要求測(cè)試人員對(duì)系統(tǒng)的結(jié)構(gòu)和系統(tǒng)間的調(diào)度非常清楚耍休,同時(shí)要了解接口邏輯關(guān)系刃永,否則接口測(cè)試代碼很容易遺漏一些異常場(chǎng)景。這一層由于含有一些業(yè)務(wù)邏輯和多接口的一個(gè)集成羊精,所以相對(duì)單元測(cè)試來(lái)說(shuō)斯够,多了一些外界依賴(lài),導(dǎo)致問(wèn)題定位不會(huì)有單元測(cè)試層那么準(zhǔn)確。因此投入會(huì)比單元測(cè)試多一些读规。
頁(yè)面測(cè)試(ui):是常見(jiàn)的黑盒自動(dòng)化測(cè)試場(chǎng)景抓督。它最接近用戶真實(shí)場(chǎng)景,也容易發(fā)現(xiàn)問(wèn)題束亏,但它的實(shí)現(xiàn)成本較高且太容易受外部依賴(lài)铃在,影響腳本成功率,所以處在金字塔的頂端枪汪,但它不是金字塔的全部涌穆。自動(dòng)化測(cè)試的劣勢(shì),其中80%都是因?yàn)閡i自動(dòng)化雀久。
以上就是分層自動(dòng)化的主體三層宿稀,由此可見(jiàn),分層自動(dòng)化測(cè)試倡導(dǎo)的就是赖捌,將系統(tǒng)分層祝沸,不同層次用合適的自動(dòng)化方法進(jìn)行測(cè)試的一種測(cè)試策略。某個(gè)項(xiàng)目是否都能用自動(dòng)化覆蓋越庇,那就要看測(cè)試負(fù)責(zé)人的分層策略是否合理罩锐、全面。
通過(guò)實(shí)踐發(fā)現(xiàn)卤唉,如果只是簡(jiǎn)單使用分層自動(dòng)化測(cè)試涩惑,研發(fā)測(cè)試比最多提升到4:1,那么阿里巴巴研發(fā)測(cè)試比平均8:1桑驱,這是怎么實(shí)現(xiàn)的呢竭恬?
阿里巴巴分層自動(dòng)化實(shí)踐
阿里巴巴分層自動(dòng)化在經(jīng)過(guò)長(zhǎng)期實(shí)踐中,從自動(dòng)化成本和效果這兩個(gè)重要缺點(diǎn)
上突破熬的,進(jìn)行分層自動(dòng)化工具和項(xiàng)目流程的雙重革命痊硕,最終達(dá)到業(yè)內(nèi)領(lǐng)先的研發(fā)測(cè)試比。
首先押框,分層自動(dòng)化工具革命
自動(dòng)化測(cè)試框架岔绸,無(wú)論ui,接口還是單元橡伞,外部開(kāi)源框架盒揉、收費(fèi)軟件等很多,各有利弊兑徘。阿里測(cè)試綜合多種框架的實(shí)踐预烙,對(duì)其進(jìn)行改良與創(chuàng)新,突破了傳統(tǒng)自動(dòng)化框架的眾多難題道媚,大大降低了自動(dòng)化的成本扁掸、提升了自動(dòng)化效果翘县。如下圖所示的四款重要工具,AUI主攻UI自動(dòng)化谴分,SAT主攻接口自動(dòng)化锈麸,Amon主攻單元測(cè)試,以及Perf主攻性能牺蹄,在傳統(tǒng)測(cè)試框架基礎(chǔ)的弱點(diǎn)上進(jìn)行全面攻克與改造忘伞,最終實(shí)現(xiàn)鳥(niǎo)槍換大炮,全面提升測(cè)試工作效率沙兰。
不僅如此氓奈,阿里云效還從需求-開(kāi)發(fā)-測(cè)試-發(fā)布整個(gè)項(xiàng)目流程中可工具化、平臺(tái)化的手工工作鼎天,全面進(jìn)行工具化舀奶、平臺(tái)化的改造,如圖所示斋射。
開(kāi)發(fā)環(huán)節(jié)育勺,從拉分支開(kāi)始,到自測(cè)的部署環(huán)境與單元測(cè)試罗岖,全部平臺(tái)工具化涧至。一鍵拉分支、一鍵部署桑包、一鍵觸發(fā)單測(cè)集成南蓬,不到喝杯咖啡的時(shí)間,即可查看環(huán)境部署結(jié)果和findbugs哑了、PMD赘方、Sonar等代碼掃描結(jié)果。
測(cè)試環(huán)節(jié)垒手,手工測(cè)試中有用例和缺陷兩款主打產(chǎn)品,平臺(tái)沉淀倒信,無(wú)需再做一些文件傳輸科贬,加上前面介紹的分層自動(dòng)化相關(guān)測(cè)試平臺(tái)與工具,在自動(dòng)化測(cè)試工作上的效率提升鳖悠,最終實(shí)現(xiàn)整體測(cè)試工作的平臺(tái)與工具化榜掌。
其次,項(xiàng)目流程革命
除了單個(gè)工具的成本減少與效果提升乘综,云效還優(yōu)化了項(xiàng)目流程憎账。
如下圖是我們常見(jiàn)的項(xiàng)目流程,其中自動(dòng)化測(cè)試工作經(jīng)常只有單一自動(dòng)化測(cè)試框架進(jìn)行測(cè)試卡辰。
通過(guò)前文的分析胞皱,分層自動(dòng)化才能全面覆蓋我們整個(gè)項(xiàng)目功能邪意,因此,我們將流程改為如下圖所示流程反砌。
這樣的流程雾鬼,經(jīng)過(guò)長(zhǎng)期實(shí)踐發(fā)現(xiàn),研發(fā)測(cè)試比最多提升到3:1宴树,是否還有改進(jìn)空間呢策菜?
我們?cè)倏催@些流程,可以看到測(cè)試工作酒贬,尤其是自動(dòng)化測(cè)試工作又憨,獨(dú)立于開(kāi)發(fā)項(xiàng)目流程。這種流程帶來(lái)最直接的問(wèn)題就是自動(dòng)化發(fā)現(xiàn)問(wèn)題不及時(shí)锭吨,對(duì)于開(kāi)發(fā)自測(cè)項(xiàng)目也沒(méi)有很好的介入保障蠢莺,同時(shí)全手工觸發(fā),人為因素影響非常大耐齐,這是限制開(kāi)發(fā)測(cè)試比大幅提升的重要原因浪秘。
假設(shè)我們的項(xiàng)目在合理運(yùn)用分層自動(dòng)化的測(cè)試策略后,并將其觸發(fā)-問(wèn)題排查-結(jié)果反饋都平臺(tái)化地納入到整個(gè)需求-開(kāi)發(fā)-測(cè)試-發(fā)布這個(gè)項(xiàng)目流程中埠况,會(huì)產(chǎn)生什么樣的效果呢耸携?
將自動(dòng)化的結(jié)果反饋?zhàn)兂闪税l(fā)布的必要環(huán)節(jié),每一項(xiàng)自動(dòng)化測(cè)試結(jié)果都變成發(fā)布環(huán)節(jié)的重要開(kāi)發(fā)辕翰,又會(huì)產(chǎn)生什么樣的效果夺衍?
我們的自動(dòng)化測(cè)試,只能用于測(cè)試介入的項(xiàng)目測(cè)試么喜命,只能用于測(cè)試介入的發(fā)布么沟沙?我們是否還能用做日常業(yè)務(wù)保障?是否可以在項(xiàng)目中的bug出現(xiàn)初期就發(fā)現(xiàn)問(wèn)題呢壁榕?
無(wú)論是測(cè)試工具革命還是測(cè)試流程改進(jìn)矛紫,都留給我們很多疑問(wèn),正是這些疑問(wèn)牌里,讓自動(dòng)化測(cè)試成為一把雙刃劍颊咬,用的好可以大幅提升效率,降低成本投入牡辽,用的不好則可能成為雞肋喳篇,阻礙效率提升。所以學(xué)習(xí)如何進(jìn)行自動(dòng)化測(cè)試态辛,如何把握分層自動(dòng)化的分層策略麸澜,如何將分層自動(dòng)化融入到項(xiàng)目流程中,是企業(yè)必須掌握的測(cè)試技巧奏黑。