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

  測試團(tuán)隊的價值

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

  這個可以從第一個項目組后來的發(fā)展來分析。

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

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

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

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

  這里邊有很多戲劇性的過程。

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

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

  這個問題,后來被開發(fā)組的人解決了。因為他們編寫了一個文本的腳本語言,只需要手工寫一些人眼很容易看懂的英文縮寫和數(shù)字,能仿真一些業(yè)務(wù)。

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

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

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

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

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

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

  啟示

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

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

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

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

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