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