寫作緣起#

半個多世紀前,作者溫伯格(Gerald M. Weinberg)剛踏入電腦業時,電腦還是極為稀有而昂貴的設備。當時他不過是個年輕人,卻坐在一整間機房前的主控台,操作著大約佔全世界一成運算能力的硬體——這些設備如今看來慢得驚人。

時至今日,運算能力已普及到難以想像的地步:

  • 作者隨手送人的舊機器,速度與記憶體都已是早年那些龐然大物的五萬倍
  • 而這些「贈品級」電腦的運算能力,加起來甚至不及今日全球運算總量的十億分之一

技術進步是漸進的,因此作者起初並未特別在意,直到某次新聞報導點醒了他。

一場廣播對話#

一次火箭發射臨時中止的新聞中,主播說:「NASA 表示這是電腦軟體錯誤。」另一位主播回應:「奇怪,電腦這種簡單又普遍的東西,怎麼會犯這種錯?」第一位接著說:「對啊,他們難道不會測試自己的軟體嗎?」

這段對話揭示了一種普遍的誤解:人們以為只要做了測試,就必然能得到完美的產品。

作者確信 NASA 一定測試過軟體。問題不在於測不測,而在於主播心中那套「測試必然帶來完美」的錯誤期待。

為何寫這本書#

起初作者只想聳聳肩,把這歸咎於「大眾對軟體測試的無知」,但他很快發現,連他客戶公司裡的管理者也抱持同樣的誤解,而且管理者尤其嚴重。軟體測試正把這些人逼到崩潰邊緣。

作者觀察到,這些痛苦的根源並非測試本身有多複雜、多耗時、多費力,而是來自:

  • 對軟體測試不切實際的期待
  • 對軟體測試錯誤的心智模型(fallacious models)

如同他先前寫作《程式設計的心理學》(The Psychology of Computer Programming)幫助人們理解程式設計一樣,這本書的目的是幫助人們理解測試

寫給誰看#

本書設定的讀者群很廣,涵蓋專業測試人員、開發者、消費者、分析師、設計師、程式設計師,以及他們所有的主管與同事。

多數專業測試人員或許已熟悉書中大部分內容,但作者希望他們能從中找到新的方式,向主管、開發者、同事與客戶傳達自己所知道的事

為了觸及廣大讀者,作者刻意採用淺白的語言,避開高度技術性的術語與過於細節的分析。全書圍繞著最多人困惑的問題展開,例如:

  • 測試明明拖慢進度,為何還非做不可?
  • 為什麼不能一開始就把軟體寫對,省去測試?
  • 真的需要測試「所有東西」嗎?
  • 是什麼讓測試這麼難?為什麼測試這麼花時間?
  • 完美的軟體真的可能存在嗎?我們為何不能接受少數幾個 bug?