
前言
這是一件有意思的事,我曾在同一家公司先做了一年測試崗,再做了兩年開發(fā)崗,相信這樣干的人并不太多? : )? 這三年也是我工作生涯中最開心的一段。現(xiàn)在回頭看,那是一家很努力的公司,做微軟本地化和惠普離岸測試起家,2010年過了cmmi5,現(xiàn)在也發(fā)展得挺好,希望他們能百尺竿頭更進(jìn)一步。
在測試崗的一年時間里,我們測試組10-15人左右,開發(fā)團(tuán)隊(duì)在國外,除了每天一封memo(和圣誕節(jié)的禮物)外沒有多余的溝通,大家在QC上自己干自己的活,有條不紊。要知道這個項(xiàng)目除了軟件,還包括固件層面。這件事也使我一直堅(jiān)定地相信:結(jié)構(gòu)化和持續(xù)性的流程,是產(chǎn)品開發(fā)成功的關(guān)鍵基礎(chǔ)。
對于很多公司來說,研發(fā)和測試之間存在著巨大的內(nèi)耗,這個內(nèi)耗帶來的風(fēng)險不僅是項(xiàng)目延期,產(chǎn)品失敗,質(zhì)量低下,拒絕驗(yàn)收等,而且對團(tuán)隊(duì)自身也是很大的傷害。在上家公司,整理好自己部門的事情之后,曾短暫地兼職負(fù)責(zé)過測試部門的訓(xùn)練,嘗試從公司層面將測試體系搭建起來,可惜那時舍不得丟開CMI,所以最終并沒有成功。如果當(dāng)時能全職轉(zhuǎn)到測試部門,相信有很大幾率能走出個結(jié)果。
綜上所述,一直希望能系統(tǒng)地總結(jié)下對測試的想法,形成一個能從0開始,逐步建設(shè)完善的黑盒體系。當(dāng)然這個總結(jié)一定是低級可笑的,因?yàn)榇罱w系最快捷的手段就是先請一批牛人,再給他們一大筆錢,可惜絕大部分情況下,都沒有這么順風(fēng)順?biāo)臈l件,那我們只好在難搞的日子里也盡量笑出聲吧。
大綱


人員-至關(guān)重要的第一個高級測試工程師
“請便宜的人或者畢業(yè)生過來隨便點(diǎn)”,“不要按正常邏輯點(diǎn)”,這樣的說法很常見,反應(yīng)出人們還是認(rèn)為測試是個力氣活。我覺得測試門檻確實(shí)不高,同時需要花很多力氣在枯燥的工作上,但即使拋開自動化,黑盒手工測試也絕對是個技術(shù)活。同一個產(chǎn)品,有技巧的工程師,三五個case就能找到bug,沒經(jīng)驗(yàn)的工程師一天跑了兩百條case沒發(fā)現(xiàn)bug,還搞得PM很開心,結(jié)果交付之后就傻眼了。這種現(xiàn)象屢見不鮮。
同時,很多公司不愿意,或者不覺得應(yīng)該在測試上投入成本。在PMBOK里質(zhì)量成本分為一致性成本和非一致性成本。一致性成本包括測試,文檔建設(shè)和培訓(xùn)等,非一致性成本可以理解成各種形式的返工。從靜態(tài)的角度來看,一個項(xiàng)目或一個團(tuán)隊(duì)的質(zhì)量成本是固定的,你減少了一致性成本,必然導(dǎo)致非一致性成本的升高。而非一致性成本還隱性地影響著進(jìn)度,士氣等。所以表面上看似省了,實(shí)際是虧大了。
我認(rèn)為對于測試團(tuán)隊(duì),第一個高級測試工程師至關(guān)重要。這句話包含兩層意思,第一層是指測試團(tuán)隊(duì)一定至少需要一個高級測試。第二層是指這個高級測試的水平,直接決定了整個測試團(tuán)隊(duì)能走到什么程度。
第一層意思說測試團(tuán)隊(duì)一定至少需要一個高級測試,那是因?yàn)闇y試是個可以一拖一百的工作,就是說只要有一個(真)高級坐陣,另外即使配一百個初級,這個團(tuán)隊(duì)都是高級團(tuán)隊(duì),如果缺了那一個高級,瞬間就退回初級團(tuán)隊(duì)了。這個套路跟開發(fā)團(tuán)隊(duì)的組建幾乎背道而馳。其中的道理在于,開發(fā)的設(shè)計(jì)出來后,是需要每個工程師去實(shí)現(xiàn)的,實(shí)現(xiàn)過程的質(zhì)量就是最終產(chǎn)品的質(zhì)量,而測試的case設(shè)計(jì)出來后,誰執(zhí)行都是一樣的。所以一定要一個高級工程師設(shè)計(jì)出高質(zhì)量的case。比如我在測試崗的時候,公司用QC作為質(zhì)量平臺,里面的case庫沒統(tǒng)計(jì)過,保守估計(jì)在60到80萬條,由專人管理,經(jīng)過了四五年的驗(yàn)證,寫得很精辟,這就直接導(dǎo)致了招測試崗的時候,只有1個條件:1能讀寫英文。對于這家公司,case庫和項(xiàng)目經(jīng)理是保證項(xiàng)目穩(wěn)定的利器,至于測試人員,跟著case走,如果fail了,把case轉(zhuǎn)成bug,加一個actual result完事了。如果哪天測試人員全體辭職都不要緊,分分鐘招一堆大學(xué)生來跑case。而這些case,從另一角度來看,也在起著人才培養(yǎng)的作用,就像初級程序員每天都在看高手寫的代碼一樣,是種潛移默化的學(xué)習(xí)。當(dāng)然也不是上來就要維護(hù)case庫,根據(jù)實(shí)際情況裁剪,人最關(guān)鍵。
第二層意思說這個高級測試的水平,直接決定了整個測試團(tuán)隊(duì)能走到什么程度。這里有幾個因素,是否有培養(yǎng)團(tuán)隊(duì)的想法,因?yàn)橛行┤舜_實(shí)不太喜歡操心團(tuán)隊(duì)的事情;是否有項(xiàng)目管理的想法,因?yàn)榭赡芎笃谛枰袚?dān)測試流程的設(shè)計(jì)和優(yōu)化;
測試人員是金字塔的最底層基礎(chǔ),而高級測試又是測試團(tuán)隊(duì)的基礎(chǔ),所以高級測試崗對于測試體系建設(shè)來說至關(guān)重要,幾乎是首要解決的問題。
人員-一個蘿卜一個坑
八年前的一天,快下班了,Marshall跟我說:你記住我一句話,一個蘿卜一個坑。我當(dāng)時并不太理解,這句話現(xiàn)在是我挑測試人員最關(guān)鍵的標(biāo)準(zhǔn):是不是足夠踏實(shí),有沒有僥幸心理。
測試是個細(xì)致活,當(dāng)測試人員心存僥幸,或者做事不帶腦子的時候,或者隨便應(yīng)付工作,一些后面的方法,規(guī)范都無從談起了。當(dāng)然挑人還有一個很重要的標(biāo)準(zhǔn),就是有沒有總結(jié)經(jīng)驗(yàn)持續(xù)改進(jìn)的想法。