最早,我們發(fā)覺(jué),由開(kāi)發(fā)人員重構(gòu)造成的腳本失敗占大多數(shù),而測(cè)試人員每次拿到的上一個(gè)版本是沒(méi)有錯(cuò)誤的。所以會(huì)出現(xiàn)自動(dòng)化腳本本地跑得過(guò),服務(wù)器上跑不開(kāi)的情況發(fā)生。二是我們修改了發(fā)布的邏輯,在后臺(tái)單元測(cè)試通過(guò)、flash編譯完成的情況下打的那個(gè)war包,復(fù)制一份,放到某待定目錄指定為currentbuild。供測(cè)試人員寫測(cè)腳本使用。
過(guò)程改進(jìn)之后,測(cè)試人員可以快速的修正腳本了,雖然對(duì)于開(kāi)發(fā)人員重構(gòu)造成測(cè)試人員工作的返工無(wú)疑是一種浪費(fèi),但是畢竟自動(dòng)化的測(cè)試省了回歸測(cè)試的不少時(shí)間,還是可以接受。
腳本的修正速度解決之后,工作似乎有了些起色,但很快,問(wèn)題的本質(zhì)就暴露了出來(lái)build的時(shí)間太長(zhǎng)了,修得速度還是跟不上問(wèn)題產(chǎn)生的速度。尤其是中間缺少當(dāng)build失敗時(shí)強(qiáng)制阻止代碼提交的環(huán)節(jié)。這之后依然是周一和周五兩頭綠,中間都是紅的。于是,我們覺(jué)得問(wèn)題還是出在build速度上。我們?nèi)斯さ膶⒐δ軠y(cè)試腳本分到四個(gè)suite里去,然后以多線程的方式進(jìn)行。速度被提高了4倍。于是又消停了兩天。
好景不長(zhǎng),多線程的測(cè)試似乎不太穩(wěn)定。很多本地可以跑通的測(cè)試用例,到了服務(wù)器上就失敗。險(xiǎn)些一個(gè)禮拜都沒(méi)有build出一個(gè)版本。最后不得不改回單線程。這時(shí),build一次已經(jīng)占到了100分鐘。第一期的產(chǎn)品Backlog還沒(méi)有完成1/3。
持續(xù)集成走到這里已經(jīng)進(jìn)入一個(gè)困境,有必要做一些更深一步的改進(jìn)。經(jīng)過(guò)多次討論,歸納出了幾套方案:
分冒煙測(cè)試和all test兩套測(cè)試用例集是我們當(dāng)中呼聲最高的一種方案,當(dāng)我的代碼提交之后在跑完所有單元測(cè)試和基本的冒煙測(cè)試之后就發(fā)布beta版,由測(cè)試人員接到beta版,進(jìn)行更細(xì)致的自動(dòng)化測(cè)試并帶一些人肉測(cè)試。但是反對(duì)的聲音認(rèn)為,不跑完全部的測(cè)試用例就失去了持續(xù)集成的意義。而且會(huì)更降低開(kāi)發(fā)人員修正Bug的積極性。于是作為修正,支持的聲音則提出,在Check-InGate處把關(guān),恢復(fù)每個(gè)人提交代碼之前跑測(cè)試用例的實(shí)踐?蛇@明顯會(huì)給開(kāi)發(fā)人員帶來(lái)更大的工作負(fù)擔(dān),估計(jì)以此時(shí)的進(jìn)度壓力,開(kāi)發(fā)人員的安全感肯定會(huì)大幅下降。很可能會(huì)推行不下去。
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |