這是敏捷開發(fā)團(tuán)隊(duì)管理系列的第二篇。(之一)

  測(cè)試團(tuán)隊(duì)的價(jià)值

  這樣看來(lái),敏捷開發(fā)的質(zhì)量保證問(wèn)題,都被發(fā)開團(tuán)隊(duì)解決了,測(cè)試團(tuán)隊(duì)的價(jià)值何在?

  這個(gè)可以從第一個(gè)項(xiàng)目組后來(lái)的發(fā)展來(lái)分析。

  在整個(gè)程序團(tuán)隊(duì)大力保證產(chǎn)品質(zhì)量的同時(shí),項(xiàng)目組也一點(diǎn)點(diǎn)顯露出一些問(wèn)題。

  比如每個(gè)模塊的質(zhì)量都還不錯(cuò)(有些模塊甚至有一些原始的自動(dòng)單元測(cè)試腳本,每次都能對(duì)模塊進(jìn)行回歸測(cè)試),但是整個(gè)產(chǎn)品終集成后,是否能如期完成業(yè)務(wù)要求,卻是未知的。因?yàn)楦鱾(gè)模塊的測(cè)試都集中在各模塊的質(zhì)量上,對(duì)于所有模塊湊在一起的工作結(jié)果,卻無(wú)法驗(yàn)證。而且在原來(lái)的團(tuán)隊(duì)體系下,師徒團(tuán)隊(duì)各自負(fù)責(zé)一個(gè)模塊,居然沒(méi)有人為此負(fù)責(zé)。

  所以我們很需要一個(gè)人來(lái)團(tuán)隊(duì)里邊,把整體集成及集成后的測(cè)試抓起來(lái)。這種工作,與其說(shuō)是傳統(tǒng)的面向質(zhì)量的測(cè)試工作,不如說(shuō)是一種面向驗(yàn)證的測(cè)試工作。是只要能告訴我們集成在一起是可以工作的,目的達(dá)到了。

  測(cè)試團(tuán)隊(duì)的“發(fā)展”

  這里邊有很多戲劇性的過(guò)程。

  首先過(guò)了一段時(shí)間,測(cè)試經(jīng)理(雖然測(cè)試組當(dāng)時(shí)只有2個(gè)人)想招幾個(gè)人,原因是要寫很多介于代碼和腳本之間的語(yǔ)言,來(lái)仿真業(yè)務(wù)。

  為什么說(shuō)是仿真?原因是我們的產(chǎn)品之外,還有一個(gè)“訂戶管理系統(tǒng)”,這個(gè)系統(tǒng)的數(shù)據(jù),是我們的業(yè)務(wù)。但由于他們部門的產(chǎn)品也在開發(fā)中,所以我們不得不先手工形成一些仿真業(yè)務(wù)。

  這個(gè)問(wèn)題,后來(lái)被開發(fā)組的人解決了。因?yàn)樗麄兙帉懥艘粋(gè)文本的腳本語(yǔ)言,只需要手工寫一些人眼很容易看懂的英文縮寫和數(shù)字,能仿真一些業(yè)務(wù)。

  這個(gè)腳本語(yǔ)言及其編輯、調(diào)試器后來(lái)越做越復(fù)雜(但因?yàn)殚_發(fā)它的開發(fā)人員對(duì)內(nèi)部業(yè)務(wù)很熟悉,所以只花費(fèi)了前后2周左右的時(shí)間),能夠自動(dòng)運(yùn)行、單步運(yùn)行、設(shè)置斷點(diǎn)調(diào)試。

  有一次,兩個(gè)測(cè)試人員在2天里用腳本編輯器編寫了144個(gè)測(cè)試用例,每個(gè)測(cè)試用例包含5~128個(gè)購(gòu)買和分組行為,來(lái)仿真和測(cè)試他們認(rèn)為可能的各種排列組合。這些測(cè)試用例不是我們常常遇到的寫在Word或Excel里邊的那種,而是用那個(gè)腳本編輯器打開,按F5,會(huì)自動(dòng)執(zhí)行并吐出結(jié)果的那種。

  這個(gè)工作如果由人力來(lái)完成,無(wú)論是編寫測(cè)試用例,還是執(zhí)行以查看結(jié)果,都是幾乎不可想象的。

  兩個(gè)測(cè)試人員有一次希望大干一番,以便驗(yàn)證一些不是有意構(gòu)建的用例是否可以通過(guò)測(cè)試。但終結(jié)果是,這個(gè)編輯器和調(diào)試器后來(lái)被發(fā)展成能自動(dòng)生成測(cè)試用例,乃至將用例發(fā)給真實(shí)機(jī)頂盒+IC卡系統(tǒng)和一個(gè)仿真的機(jī)頂盒+IC卡系統(tǒng)(一個(gè)友好的可以F5調(diào)試的VC++系統(tǒng)),如果發(fā)現(xiàn)區(qū)別則自動(dòng)記錄,并繼續(xù)產(chǎn)生下一個(gè)用例。

  這段代碼因?yàn)樽叩臅r(shí)候沒(méi)有留下文檔而失傳了,不過(guò)在7年后的一次老同事聚會(huì)中了解到,團(tuán)隊(duì)在后續(xù)的幾年中按照這個(gè)原理,把很多不同層次的硬件(數(shù)字電視里邊的,大約有10種之多,個(gè)個(gè)都是黑底綠字乃至干脆沒(méi)有屏幕的,非常難纏)都做了純軟件仿真,每個(gè)模塊做好了,都可以扔進(jìn)去和仿真硬件集成一番,這些工作大大縮減了后真槍實(shí)彈時(shí)候經(jīng)常出現(xiàn)的莫名其妙的問(wèn)題,大大縮減了集成和測(cè)試時(shí)間。

  這些程序人員的工作成果,保證了在團(tuán)隊(duì)有25人的時(shí)候(峰值曾經(jīng)到達(dá)30人),只要兩個(gè)測(cè)試人員能完成整個(gè)系統(tǒng)的功能測(cè)試,這個(gè)團(tuán)隊(duì)發(fā)展十分“緩慢”;但是從另外一個(gè)角度看,那些為測(cè)試團(tuán)隊(duì)編寫測(cè)試代碼的人,到底算是開發(fā)人員還是測(cè)試人員呢?

  啟示

  一個(gè)的團(tuán)隊(duì),應(yīng)該受到關(guān)注的應(yīng)該是質(zhì)量的高低問(wèn)題、集成的效率問(wèn)題、功能驗(yàn)證的效率問(wèn)題……這些有人買單的問(wèn)題,而不是開發(fā)與測(cè)試的分工、如何明確責(zé)任、如何對(duì)雙方進(jìn)行績(jī)效考核等沒(méi)人買單的問(wèn)題。

  所以盡管2001年那個(gè)時(shí)候敏捷開發(fā)的概念還不太清晰,但是本著“無(wú)我無(wú)人”的精神(詳見般若敏捷系列之四),很自然地創(chuàng)立了自己的敏捷方法。

  這件事情讓我回憶起近正在與很多業(yè)界人士合著一本“敏捷開發(fā)案例集”,中間有一個(gè)討論時(shí):“到底什么案例是敏捷案例,什么案例不是敏捷案例?”

  后的結(jié)論是:“第一個(gè)很松:大致有點(diǎn)和敏捷沾邊行;第二個(gè)很嚴(yán):開發(fā)方法一定要被證明是的”,換言之如果大家對(duì)的開發(fā)方法視而不見,而到處找“敏捷開發(fā)方法”,是舍本逐末了。

  下一篇,將談及開發(fā)團(tuán)隊(duì)和測(cè)試團(tuán)隊(duì)的組織關(guān)系問(wèn)題,比如專業(yè)的測(cè)試團(tuán)隊(duì)好,還是分散到開發(fā)團(tuán)隊(duì)中的測(cè)試團(tuán)隊(duì)好,抑或還存在其他的組織結(jié)構(gòu)等。