可以減少成本,提高交付的總量和速度,減少重復出現的缺陷數量。QA并不能提高系統的質(zhì)量,因為不能在系統中測試質(zhì)量。如果使用正確,QA可以提高生產(chǎn)力,同時(shí)降低成本,最重要的是,在組織的高速增長(cháng)期,QA可以保證缺陷增長(cháng)的速度比組織發(fā)展的速度慢。

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