前段時(shí)間經(jīng)常抱怨公司不是軟件公司,沒(méi)有充足的軟件測(cè)試來(lái)保障軟件快速更迭帶來(lái)的質(zhì)量保障,導(dǎo)致軟件質(zhì)量有著嚴(yán)重的問(wèn)題,最近仔細(xì)想了一下開(kāi)源項(xiàng)目的質(zhì)量保障機(jī)制,又有了一些新的收獲。 在以前的軟件開(kāi)發(fā)公司,是有專門(mén)的測(cè)試人員和開(kāi)發(fā)人員緊密合作,為了出同一個(gè)版本而共同奮斗,因?yàn)槟康慕y(tǒng)一,所以大家的合作極其緊密,也相對(duì)不那么在意流程的約束,可以較為高效的快速修復(fù)問(wèn)題。大部分時(shí)候都是看起來(lái)很美好的,不過(guò)也有不夠好的時(shí)候,那就是這樣的組合方式其實(shí)是養(yǎng)足了開(kāi)發(fā)人員的惰性,想到反正有測(cè)試人員把關(guān),所以也不用那么在意程序的質(zhì)量。 現(xiàn)在的公司,不再是軟件公司,基本上可以說(shuō)是沒(méi)有測(cè)試人員的,只有質(zhì)量保證人員,他們的目的僅僅是站在客戶的立場(chǎng)上來(lái)看系統(tǒng)是否能夠正常運(yùn)行,他們不再需要和開(kāi)發(fā)人員一同為了某個(gè)時(shí)間點(diǎn)一同奮斗,因?yàn)樗麄兡玫降陌姹揪褪钦J(rèn)為基本上沒(méi)有問(wèn)題的版本,如果出現(xiàn)問(wèn)題,他們也不需要和開(kāi)發(fā)一同協(xié)同努力在某個(gè)時(shí)間點(diǎn)內(nèi)完成,只需要報(bào)出問(wèn)題,待開(kāi)發(fā)完成修復(fù)后,拿到下一個(gè)版本后進(jìn)行驗(yàn)證即可。這樣做的確有個(gè)好處就是責(zé)任明確,分工細(xì)致,不好的就是哪怕一個(gè)小小的問(wèn)題,可能都會(huì)耗上40+倍(這個(gè)是毫不夸張的數(shù)量)的時(shí)間去處理。 為此,我是想破了腦袋都想不出好的解決方案,大領(lǐng)導(dǎo)曾出過(guò)主意,公司不允許這種類型的測(cè)試人員存在,他也沒(méi)有辦法,不過(guò)可以考慮找實(shí)習(xí)生負(fù)責(zé),不過(guò)比起軟件公司開(kāi)發(fā)人員和測(cè)試人員1:1的比例或者2:1的比例來(lái)說(shuō)實(shí)在是太小了,實(shí)習(xí)生的不成熟,再加上測(cè)試工作本就不是一件簡(jiǎn)單的事情,使得這樣的方案根本不可行。 其實(shí)我們現(xiàn)在面臨的問(wèn)題就是如何讓開(kāi)發(fā)人員可以自行完成測(cè)試工作,使得產(chǎn)品可以成熟的發(fā)布,然后結(jié)論就是只要開(kāi)發(fā)人員的經(jīng)驗(yàn)充足,素養(yǎng)足夠高就可以達(dá)到了,但明顯這種團(tuán)隊(duì)的成本極高,相當(dāng)不合算,如果是我自己的公司,我一定會(huì)為我的開(kāi)發(fā)人員們1:1的配備測(cè)試人員,這樣的話,我不需要人人都是老手且素養(yǎng)高,會(huì)有測(cè)試人員去逼著他們前進(jìn),測(cè)試人員也不用人人都是精英,只要能按照測(cè)試用例忠實(shí)的一步一步執(zhí)行那就可以上崗了。 好吧,繞了一圈又回去了,不過(guò)這樣一繞讓我明白了,為什么軟件公司都喜歡這樣的配置了,因?yàn)檫@樣成本最低,且見(jiàn)效好。不過(guò)不管怎么說(shuō),這件事情其實(shí)對(duì)開(kāi)發(fā)人員本身來(lái)說(shuō)并不是很好,本來(lái)尚欠考慮質(zhì)量的開(kāi)發(fā)人員在保姆測(cè)試人員的嬌慣下,更是難以提高了。 在這里我又想到一個(gè)特殊的個(gè)例,那就是開(kāi)源項(xiàng)目,參與人員一多,那就一定不能保證每一個(gè)人都能如發(fā)起人那樣的有經(jīng)驗(yàn)和高素養(yǎng),那開(kāi)源項(xiàng)目是如何控制質(zhì)量的呢? 綜合起來(lái)看,主要是以下兩個(gè)途徑: - 發(fā)起人審查每一段簽入主干的代碼
- 用測(cè)試驅(qū)動(dòng)的方式配上持續(xù)集成的手段保證代碼的質(zhì)量
前者可以很好的保證質(zhì)量,只要發(fā)起人有足夠高的素養(yǎng)和足夠的責(zé)任心,便能保證代碼倉(cāng)庫(kù)中的每一段代碼都如他自己寫(xiě)的一樣,故代碼質(zhì)量便能得到相當(dāng)好的保障。 而后者則可以更加輕松的保證代碼的質(zhì)量,只要整個(gè)系統(tǒng)的絕大部分(通常需80%以上)都被自動(dòng)測(cè)試覆蓋,于是任何的代碼改動(dòng)都需要通過(guò)自動(dòng)測(cè)試的驗(yàn)證,在大覆蓋率的前提下,只要能夠通過(guò)所有自動(dòng)測(cè)試,已經(jīng)說(shuō)明了這段新代碼的質(zhì)量,如果能輔以第一步的發(fā)起人代碼審查機(jī)制,便能充分的保障代碼質(zhì)量。 這個(gè)是我在github上面常見(jiàn)到的場(chǎng)景,其實(shí)給我們提供了很好的借鑒意義,或許大幅度提高自動(dòng)測(cè)試的覆蓋率才是當(dāng)前解決問(wèn)題的核心。
|