The Joel on Software Translation Project:不用測試人員的五大(錯誤)藉口

From The Joel on Software Translation Project

Jump to: navigation, search

Contents

不用測試人員的五大(錯誤)藉口

作者:周思博 (Joel Spolsky)
譯:Paul May 梅普華
Sunday, April 30, 2000
屬於Joel on Software, http://www.joelonsoftware.com

1992年,James Gleick正和一個多蟲軟體的各種問題週旋。科學作家Gleick認為微軟剛出的Word for Windows新版很可怕。他在星期天紐約時報雜誌寫了一長篇文章,這篇文章只能以激動來形容,整篇都在指責Word團隊不理會客戶的要求,交付問題如此多的產品。

稍後,他以地區Internet供應商Panix(剛好也是我的Internet供應商)客戶的身份,要求提供自動排序並過濾其郵件的方法。提供這個功能的是一個叫procmail很神秘的UNIX工具,它的介面最硬派的UNIX迷都覺得難用。

總之Gleick先生不小心在procmail裡打錯字,結果把他所有的信都刪掉了。一氣之下就成立自己的Internet連線公司。他雇用了Uday Ivatury當程式師,並且建立了Pipeline這個真的有點超越時代的公司:這是第一個有圖形介面的商業Internet連線供應商。

當然囉,Pipeline也有它自己的問題。很早期的第一個版本沒有使用任何錯誤更正的協定,所以很容易把資料弄亂或當掉。它就像所有的軟體一樣有臭蟲。1993年我去Pipeline找工作,面試中問到Gleick所寫的文章。「現在你已經身在籬笆的另一邊,」我問道:「有沒有稍微體會到創造好軟體的難處呢?」

Gleick惱羞成怒。他否認Pipeline有任何問題,他也否認這個軟體有和Word一樣糟。他告訴我說:「約耳,總有一天你也會恨微軟的。」他做了一年的軟體開發而不再只是個使用者,這一年的經驗卻沒有讓他體會到無蟲又易用的軟體是多麼困難的事,這實在令我有點震驚。所以我就回絕那個工作機會逃掉了。(Pipeline後來被一家世界上最奇怪的Internet供應商PSI買走,然後隨隨便便就被關掉了。)

軟體有蟲。CPU異常的守規矩,它們絕對會拒絕處理沒有被明確教過的東西,而且通常會以最孩子氣的方式拒絕。我的筆記型電腦在外頭使用時常會當掉,因為它找不到本來找得到的印表機,多麼像個嬰孩。不過原因可能是某一行程式有個極微小卻又很嚴重的問題。

這也正是你絕對要有QA部門的原因。每用兩個程式師就需要一個測試人員(如果軟體需要用於多種複雜的組態或作業系統時還不只)。每個程式師都應該和某一個測試人員緊密配合,儘可能頻繁地丟出自己編譯的版本給測試人員測。

QA部門應該要獨立並擁有權力,絕對不可以對開發團隊負責,事實上QA的主管應該有否絕權,可以阻止發行不合格的軟體。

我第一份真正的工作是在微軟;這家公司並不以高品質的程式聞名,不過它還是雇用了大量的測試人員。所以我曾經認為每個軟體組織都會有測試人員。

雖然很多組織確實有,不過沒有測試人員的組織還是多的令人驚訝。事實上很多軟體團隊甚至不相信測試。

你可能會認為,現在的經理經過80年代的品質狂熱洗禮,又有各種無意義的國際「品質」認證(如ISO-9000)和「六個標準差」等術語,應該會瞭解高品質的產品才能獲得高品質的生意。事實上他們都瞭解,其中大多數人已經儘量把它塞進腦袋,不過他們還是找出各種理由不用軟體測試人員,而這所有的理由通通都是錯的。

我希望可以對你解釋這些想法的錯誤。如果你趕時間剩下的就別看了,直接算人頭每兩個全職程式師請一個全職測試人員就對了。

下面是我聽過不雇用測試人員最常見的鬼叫:

1. 問題是懶惰的程式師弄出來的。

這種幻想的內容是這樣的:「如果你請了測試人員,程式師就會馬虎而寫出問題更多的程式。不要請測試人員,就可以強迫程式師一開始就寫出正確的程式。」 哇!如果你會這樣想,那你不是沒寫過程式,就是把寫程式這回事完全想歪了。由定義來看,臭蟲會出現就是因為程式師看到程式碼裡的問題。通常就是需要其他人才看得到問題。 當我還在Juno寫程式時,每次都會用一樣的方式執行我的程式。我會照我自己的習慣大量使用滑鼠操作。我們神奇的測試強者習慣有點不同:她比較常用鍵盤(而且會嚴厲地實際用所有可能的組合去測試使用介面)。這樣子很快就會找出大量的問題。事實上有時候她還會說整個介面都不能用,而且是百分之百不能用,可是在我的機器上一切正常。當我看著她重現問題才恍然大悟。Alt鍵!你按住Alt鍵了!我怎麼會沒測到呢?

2. 我的軟體放在網路上。即使有問題也馬上就能修好。

哈哈哈哈!好吧,你說對了,用網路分發軟體的確能比以往套裝軟體時代更快速的更新修正版本。不過即使把軟體放在網站上,也別低估在專案凍結後修正一個問題的代價。一來你可能在修正第一個問題時產生更多的問題。更糟的是如果你檢討發行新版本的程序,就會瞭解在網路上丟出修正版是個相當昂貴的建議。更別提會讓人因為有以下感覺而造成壞印象了:

3. 客戶會替我測試軟體。

啊,令人害怕的「Netscape防線」。這家可憐的公司藉著獨特的「測試」方法嚴重傷害了自己的聲譽。他們的測試方法是:
    1. 當程式帥寫好一半時,不經任何測試就把軟體發行到網路上。
    2. 當程式師完成時,不經任何測試就把軟體發行到網路上。
    3. 重複做六到七次。
    4. 把其中某個版本稱為「最終版」
    5. 每次當c|net上爆出一個丟臉的問題時就發行.01、.02、.03版。

這家公司是「廣泛beta」這個點子的先驅。意思是讓數百萬人下載這些多蟲的未完成版本。最初幾年幾乎所有Netscape使用者都在用某個搶鮮版或beta版。結果大多數人都認為Netscape軟體的問題實在很多。雖然最終版通常問題都極少,可是Netscape已經讓到離譜的人用過多蟲的版本,所以大多數人對該軟體的整體印象都很差。

另外讓「客戶」來測試的重點在於讓他們找到問題然後由你來修正。不幸的是,Netscape或任何其他地球上的公司都沒有人力,可以處理兩百萬客戶的問題回報並找出真正重要的問題。當我要填報Netscape 2.0的問題時,問題回報網站一直當機,根本不讓我回報(不過反正問題回報最後都會丟進黑洞)。可是Netscape並沒有學到教訓,現在6.0「搶鮮版」的測試人員就在新聞群組裡抱怨,說問題回報網站是沒辦法送出報告。那麼多年了!還是老問題!

不過我敢打賭,在這些多得要命的問題回報中,絕大多數都在講相同的5到10組很明顯的問題。裡面可能還埋有一兩個有意思又難查的問題,是某人千辛萬苦才成功送出的。不過反正沒人會看這些報告,所以也就等於不見了。

這種測試型式最糟的一點,就是公司會得到非常差的印象。當Userland推出主力產品Frontier的第一個Windows版時,我去下載並開始照著教學操作。不幸的是Frontier當了好幾次。我完全照著教學上面的指令逐一照做,怎麼樣都沒辦法執行兩分鐘以上。我覺得Userland可能連最基本的測試都沒做,根本沒有確認教學是能動的。產品品質低落的印象讓我有很長一段時間不再碰Frontier。

4. 有資格可以勝任的人都不想做測試人員。

這是個很沈痛的理由。好的測試人員非常難找。 測試人員和程式師一樣,頂尖高手和一般水平的人相差一個量級。Juno有一個測試人員Jill McFarlane,她找到的問題是其他四個人合起來三倍。我是真的算過,絕對沒有誇大其辭。她比普通測試人員的生產力好12倍。當她離職時,我寫了封電子郵件給執行長說道:「我寧願只有星期一和星期二讓Jill幫忙,也好過讓QA團隊其他人全部一起測。」 不幸的是,這麼聰明的人大都容易對日復一日的測試感覺厭煩,所以頂尖的測試人員通常只待三或四個月就會換工作。 這個問題唯一的解法就是面對然後想辦法處理。下面列出幾個建議:
    1. 把測試當作技術支援的下一個晉升工作。測試或許很沈悶,不過絕對比用電話處理憤怒的使用者好,而且可能也是消除某些技術支援人員騷擾的方法。
    2. 允許測試人員上程式設計課程拓展職業生涯,並且鼓勵較聰明的測試人員,運用程式工具及腳本語言開發自動化測試套件。這比不斷重複測試相同的對話盒要有趣多了。
    3. 要有頂尖測試人員經常流動的認知。積極的進行招募以保持穩定的人員流入。不要只因為暫時滿額而停止招募,因為總會有下一波好景氣。
    4. 找尋「非傳統」的工作者:找聰明的青少年,大學裡的小朋友還有退休人士來兼差。你可以用兩三位頂尖全職人員再搭配一群趁暑假賺學費的Bronx Science(紐約一流高中)學生,建立出一個效果驚人的測試部門。
    5. 雇用臨時人力。如果請10個臨時工進來拿你的軟體來玩個幾天,就會發現很多很多的問題。裡頭可能會找到兩三個測試技巧不錯,值得簽約轉成全職人員的人。要先有心理準備,裡面有些人可能做不了測試人員;這時只能請他回家再繼續找新人。這也正是臨時人力仲介的功用。

下面這種方法無法處理這個問題:

    1. 千萬不要對來工作的電腦科系學生打歪主意,說什麼「所有人都要在QA部門磨練一陣子才能去寫程式。」我看過太多例子了。程式師沒法子當個好的測試人員,而且還會因而損失好的程式師,而這就更難找了。

終於到了,這是人們不雇用測試人員的頭號笨理由:

5. 我請不起測試人員!

這是最笨而且也是最容易揭穿的理由。 不管測試人員有多難找,還是比程式師要便宜,而且便宜多了。另外如果不請測試人員,就得讓程式師自己測。再來如果你認為測試人員大量增加不太好,就想想這件事的代價吧:年薪十萬美元的明星程式師受不了有人要他「在發行前留幾個星期測一測」,而換去比較專業的公司。光是為找新程式師而付給獵人頭公司就夠你一年請三個測試人員了。 吝嗇請測試人員是如此的划不來,我實在不懂為什麼有這麼多人認不清。

這些網頁的內容為表達個人意見。
All contents Copyright © 1999-2006 by Joel Spolsky. All Rights Reserved.


Personal tools