可以減少成本,提高交付的總量和速度,減少重復出現(xiàn)的缺陷數(shù)量。QA并不能提高系統(tǒng)的質(zhì)量,因為不能在系統(tǒng)中測試質(zhì)量。如果使用正確,QA可以提高生產(chǎn)力,同時降低成本,最重要的是,在組織的高速增長期,QA可以保證缺陷增長的速度比組織發(fā)展的速度慢。
標題很令人不快,還有點兒容易引起誤解和爭議,但目的是引起人們的思考和討論。當然,有一個團隊負責產(chǎn)品測試并識別產(chǎn)品中的缺陷是很有意義的。問題在于,不應該只依賴于這個團隊來發(fā)現(xiàn)所有的缺陷,就像航空公司不能只依靠空乘人員確保飛機安全著陸一樣這個觀點的核心是一個簡單的事實,即不能在系統(tǒng)內(nèi)測試系統(tǒng)的質(zhì)量。測試只能發(fā)現(xiàn)開發(fā)過程中制造的問題,它的結(jié)果是發(fā)現(xiàn)被你毀掉的價值。
找回這種價值從而要求重新編,增加交付的每個工作單元(功能)的邊際成本。測試或執(zhí)行測試的團隊通常不會發(fā)現(xiàn)能夠創(chuàng)造額外價值的潛在機會。
不要誤會了,QA在編程組織內(nèi)當然是個重要角色。當公司在超高速發(fā)展需要擴展系統(tǒng)時,QA的角色更加重要。QA的主要任務是幫助公司發(fā)現(xiàn)產(chǎn)品的問題,且花費的成本要比程序員執(zhí)行同樣任務的成本低。這個任務行生出的兩點好處是,提高了編程的速度,增加了缺陷的識別率。實現(xiàn)這些好處的方式,與工業(yè)革命減少制造成本并提高單位生產(chǎn)力的方式類似。讓編程過程流水化,讓程序員主要專注于產(chǎn)品開發(fā)(當然還有單元測試),從而減少了每個程序員花費在設置和結(jié)東測試流程上的時間。
現(xiàn)在,程序員每天都有更多的時間專注于應用的開發(fā)了。通常這樣做的結(jié)果就是可以發(fā)現(xiàn)每小時的產(chǎn)量和每天的產(chǎn)量都增加了。編程速度提高的結(jié)果是降低了單位成本。此外,一個好的的QA組織的單個人員成本通常比編程組織的單個人員成本低,從而可以進一步降低成本。最后,測試組織的重點在于發(fā)現(xiàn)缺陷,所以不會產(chǎn)生發(fā)現(xiàn)自己代碼中的問題(很多程序員會這么做)或隔壁搭檔的代碼中的問題時那種糾結(jié)。
當雇用一個QA人員就能得到相當于一個或多個程序員的生產(chǎn)力的價值時,就應該雇用QA人員了。這個數(shù)學計算相當簡單。如果你有11個程序員,每個人花費大約10%的時間執(zhí)行測試活動,而這些活動完全可以由一個QA人員完成,那么雇用一個QA人員,就可以得到相當于1.1個程序員的生產(chǎn)力。通常,QA人員的成本比程序員低,這就相當于用一個程序員成本的80%或90%,得到了1.1個程序員的生產(chǎn)力。
不過有一點我們沒有明確說明,即在超高速發(fā)展的公司中才會充分體現(xiàn)QA的價值。這并不是說在發(fā)展穩(wěn)定的公司或低速發(fā)展的公司中QA沒有價值,而是說在每年研發(fā)人員數(shù)量都會成倍或更快地擴展的情況下,QA更為重要。在這種情況下,很難強制性地實施標準。組織內(nèi)在職時間較長的程序員沒有時間保持并實施現(xiàn)有標準,更沒有時間識別擴展、質(zhì)量或可用性需求所產(chǎn)生的對新標準的需求。對于每年成員數(shù)量都會翻番的團隊,第三年的開頭,半數(shù)現(xiàn)有的“有經(jīng)驗”的團隊成員入職時間其實只有一年或者更短
這就是這條規(guī)則放在吸取教訓這一章中的原因。設想一下,部門經(jīng)理要花費幾乎一半的工作時間面試和雇用新程序員,而且每年都有一半或者更多的程序員入職不足一年??梢韵胂笠幌?,現(xiàn)有的在職時間較長的程序員要花費多少時間培訓新員工,如何使用源代碼管理系統(tǒng),編譯環(huán)境是什么,生產(chǎn)環(huán)境是什么,等等。在這樣的環(huán)境中,根本沒有時間驗證編寫的東西是否正確,從而導致發(fā)布給QA(但希望不是生產(chǎn)部門)的錯誤量明顯增加。
在這種情況下,培訓程序員是QA的工作,要教會程序員從質(zhì)量角度看發(fā)生了什么,是在哪里發(fā)生的,這樣才能讓他們信服并吸取經(jīng)驗。這時的QA就成了一種工具,幫助研發(fā)人員認識到哪些錯誤在反復出現(xiàn),它們出現(xiàn)在什么地方,最重要的是讓他們學會將來如何避免出現(xiàn)這些錯誤。QA可能是唯一一個能發(fā)現(xiàn)反復發(fā)生的問題的部門。
新的程序員,因為沒有見過他們所犯的錯誤,也不了解這些錯誤的影響,所以可能不僅會繼續(xù)犯錯誤,還會把這些錯誤的方法當成一種習慣。更糟的是,他們還可能把這些壞習慣教給那些新來的程序員。最初只是導致缺陷數(shù)量小幅增多,而最終會變成一種惡性循環(huán)。當噩夢注定要發(fā)生并且就在他們面前時,每個人都會忙于查找造成質(zhì)量噩夢的根本原因。這說明他們沒有從過去的錯誤中吸取教訓
QA必須發(fā)現(xiàn)正在發(fā)展中的組織在哪些地方反復出現(xiàn)問題,并創(chuàng)建個環(huán)境,在這個環(huán)境中討論并消除這些問題。最后要說的是,QA部門最重要的價值在于它可以幫助研發(fā)部門從失敗中吸取教訓。要明白,他們不能在系統(tǒng)內(nèi)測試質(zhì)量,也不愿意扮演棒球比賽中接球手身后的安全屏幕,站在接球手后面,讓沒被接到的球停住。優(yōu)秀的QA部門會搜索研發(fā)部門制造的系統(tǒng)故障,這些故障會在將來造成質(zhì)量問題。這不僅僅是創(chuàng)建網(wǎng)站制作燃盡圖和創(chuàng)造發(fā)現(xiàn)修復率,而是深入探究,發(fā)現(xiàn)主要問題和它們的源頭。一旦發(fā)現(xiàn)了這些問題,QA還要提出如何解決問題。
本文地址:http://m.cdrpkj.cn//article/3480.html