本書所有版稅收入將捐給聯合國Nothing But Nets 募款活動,這是個 ...

17
本書所有版稅收入將捐給聯合國 Nothing But Nets 募款活動,這是個致力於消滅瘧疾的募款活動, 每年在非洲有成千上萬的兒童死於瘧疾。

Transcript of 本書所有版稅收入將捐給聯合國Nothing But Nets 募款活動,這是個 ...

本書所有版稅收入將捐給聯合國 Nothing But Nets 募款活動,這是個致力於消滅瘧疾的募款活動,

每年在非洲有成千上萬的兒童死於瘧疾。

目錄

前言 ....................................................................................................... xv

第一部份 美麗的測試員

第一章 這對你有幫助嗎? ............................................................. 3 Linda Wilkinson

第二章 美麗的測試能滿足相關人員 .............................................. 15 Rex Black

為誰而測? ............................................................................................ 16

滿足條件為何? ..................................................................................... 18

那些是外在的美? ................................................................................. 20

那些是內在的美? ................................................................................. 24

結論 ...................................................................................................... 26

第三章 建立開放原始碼品質控管社群 .......................................... 27 martin Schroder & Clint Talbert

溝通 ...................................................................................................... 27

自願者 ................................................................................................... 28

協調 ...................................................................................................... 29

你並不特別 .................................................................................... 30

你總是在找人................................................................................. 31

你總是參與其中 ............................................................................. 31

vi│目錄

公開活動 ............................................................................................... 32

宣傳............................................................................................... 33

我們實際上做了什麼 ...................................................................... 34

目標設定與回報 ............................................................................. 35

結論 ...................................................................................................... 35

第四章 合作是美麗效能測試的基石 .............................................. 37 Scott Barber

決定舞台 ............................................................................................... 38

100%?!?失敗 ................................................................................... 38

好吧,什麼是效能測試案例? ........................................................ 41

你無法對任何事情做效能測試 ........................................................ 43

這不是記憶體洩漏 ................................................................................. 45

負荷超過處理能力?改變使用者介面...................................................... 46

不可能是網路問題 ................................................................................. 47

這太慢了,我們討厭他 ................................................................... 49

總結 ...................................................................................................... 50

第二部份 美麗的程序

第五章 模糊測試讓辦公室軟體更加可靠 ....................................... 55 Kamran Khan

使用者預期 ............................................................................................ 55

什麼是模糊 ............................................................................................ 57

為何使用模糊測試 ................................................................................. 57

改善互通性 .................................................................................... 57

改善使用者滿意度 .......................................................................... 58

改善安全性 .................................................................................... 59

模糊測試 ............................................................................................... 60

準備............................................................................................... 60

常規模糊........................................................................................ 61

客製模糊(Custom Fuzzing)........................................................ 62

隨機模糊........................................................................................ 64

目錄│vii

限制............................................................................................... 65

展望未來 ............................................................................................... 65

第六章 臭蟲管理與測試案例有效性 .............................................. 67 Emily Chen & Brian Nitz

臭蟲管理 ............................................................................................... 68

第一隻被發現的臭蟲 ...................................................................... 68

不僅僅是「這是一個臭蟲」 ............................................................ 69

明確定義是管理缺陷的第一步 ................................................................ 70

誰?............................................................................................... 70

什麼? ........................................................................................... 71

何時? ........................................................................................... 72

何處? ........................................................................................... 72

標籤............................................................................................... 76

加上標籤的缺陷集(標籤雲):為何? .......................................... 77

測試案例有效性 ..................................................................................... 77

捕抓臭蟲嚴重性的影響 ................................................................... 78

分析測試逃逸臭蟲 .......................................................................... 79

OpenSolaris Desktop 團隊的案例研究 ................................................... 79

假設............................................................................................... 80

計算 TCE 指標的程序 ..................................................................... 80

結論 ...................................................................................................... 84

感謝 ...................................................................................................... 84

參考文獻 ............................................................................................... 84

第七章 美麗的 XMPP 測試 .......................................................... 85 Remko Trongon

簡介 ...................................................................................................... 85

XMPP 101 ............................................................................................. 86 測試 XMPP 協定 .................................................................................... 89

簡單請求-回應協定單元測試 .................................................................. 89

多階段協定單元測試 .............................................................................. 94

測試階段初始化 ..................................................................................... 98

測試自動化互通性 ................................................................................100

viii│目錄

鑽石原礦:測試 XML 有效性 .................................................................102

結論 .....................................................................................................102

參考文獻 ..............................................................................................103

第八章 美麗的大規模測試自動化 ............................................... 105 Alan Page

開始之前 ..............................................................................................106

什麼是大規模測試自動化 ......................................................................106

測試自動化系統的基礎 ..................................................................107

一個美麗的系統 ............................................................................107

第一步 ..................................................................................................108

測試基礎設施很關鍵 .....................................................................109

測試輔助文件 ................................................................................109

自動化測試與測試案例管理 ..................................................................109

自動化測試實驗室 ................................................................................114

部署測試基礎 ................................................................................114

其他考量.......................................................................................114

測試分佈 ..............................................................................................115

失敗分析 ..............................................................................................116

報表 .....................................................................................................117

總合 .....................................................................................................118

第九章 美麗比醜陋更好 ............................................................. 121 Neal Norwitz & Michelle Levesque & Jeffrey Yasskin

穩定性的價值 .......................................................................................122

確保正確性 ...........................................................................................123

Buildbot 系統 ................................................................................123

參考洩漏測試 ................................................................................124

文件測試.......................................................................................125

釋出測試.......................................................................................125

動態分析.......................................................................................126

靜態分析.......................................................................................128

結論 .....................................................................................................130

目錄│ix

第十章 測試亂數產生器............................................................. 131 John D. Cook

亂數產生器不易測試的原因 ..................................................................131

均勻亂數產生器 ....................................................................................133

非均勻亂數產生器 ................................................................................134

測試的演進 ...........................................................................................136

範圍測試.......................................................................................136

平均值測試 ...................................................................................137

變異數測試 ...................................................................................138

Bucket 測試 ..................................................................................139

Kolmogorov-Smirnov 測試 ............................................................141

結論 .....................................................................................................142

第十一章 變更中心式測試............................................................. 145 Murali Nandigama

如何設定文件導向,變更中心式測試框架..............................................146

複雜程式開發中的變更中心式測試 ........................................................148

變更中心式測試步驟 .....................................................................149

瞭解呼叫者-被呼叫者相依關係以及測試案例與原始碼檔案的對

應 .................................................................................................150

產生執行檔中呼叫者-被呼叫者關係圖 ............................................151

瞭解變更的影響 ............................................................................152

認識程式碼覆蓋率與差距分析 .......................................................153

學到些什麼? .......................................................................................155

結論 .....................................................................................................157

第十二章 使用中的軟體 ................................................................ 159 Karen N. Johnson

與工作的關係 .......................................................................................160

內部訊息 ..............................................................................................161

增加不同觀點 .......................................................................................163

探索測試、隨機測試與命令稿測試 ........................................................164

多使用者測試 .......................................................................................166

x│目錄

科學實驗室 ...........................................................................................168

模擬真實使用情境 ................................................................................169

在管制環境測試 ....................................................................................171

寫在最後 ..............................................................................................173

第十三章 軟體開發是個創造程序 ................................................... 175 Chris McMahon

敏捷開發的重點在效能 .........................................................................175

練習,排演,執行 ................................................................................176

評估言外之意 .......................................................................................177

兩個重要工具 .......................................................................................178

軟體測試運動 .......................................................................................180

敏捷測試之美 .......................................................................................181

品質管理不是罪惡 ................................................................................182

美是產品的本質 ....................................................................................182

參考文獻 ..............................................................................................183

第十四章 測試導引式開發:為美帶來新標準 .................................. 185 Jennitta Andrea

美是一種調和與平衡 .............................................................................185

敏捷:新的調和與平衡 .........................................................................186

測試導引式開發 ....................................................................................186

範例與測試 ...........................................................................................188

具可讀性的範例 ....................................................................................189

終極的需求文件 ....................................................................................191

可測試設計 ...........................................................................................192

支援的工具 ...........................................................................................193

作者..............................................................................................195

讀者..............................................................................................196

執行者 ..........................................................................................196

結果使用者 ...................................................................................196

報告使用者 ...................................................................................196

團隊協同合作 .......................................................................................197

目錄│xi

TDD 之美的經驗 ...................................................................................198

參考文獻 ..............................................................................................199

第十五章 美麗的測試是商業成功的基石 ........................................ 201 Lisa Crispin

全團隊的方式 .......................................................................................203

所有情境直到測試完畢才「完成」 ................................................203

持續改善.......................................................................................204

提供最大的商業價值 .....................................................................204

專注在可測試性 ............................................................................205

測試自動化 ...........................................................................................205

由團隊共識選擇工具 .....................................................................207

遞增自動化 ...................................................................................207

翻轉金字塔 ...................................................................................208

用測試引導開發 ....................................................................................209

實驗..............................................................................................209

規劃..............................................................................................210

用範例引導程式撰寫 .....................................................................211

坎坷前行.......................................................................................212

提供價值 ..............................................................................................213

每個人都擁有商業問題 ..................................................................213

遞增測試與程式撰寫 .....................................................................214

計劃剛好夠早就行了 .....................................................................214

成功案例 ..............................................................................................215

寫在最後 ..............................................................................................215

第十六章 剝開 socialtext 的表皮 ................................................... 217 Matthew Heusser

這與工作無關... 而是私事 .....................................................................217

測試者站在舞台上,美麗登場,正確走位..............................................218

與我同行,最好的就在前方 ..................................................................221

測試自動化並不自動 .............................................................................222

進入 Socialtext .....................................................................................223

但是,你們到底是做什麼的? .......................................................224

xii│目錄

Socialtext 的軟體程序 ...................................................................226

我們實際的作法 ............................................................................227

Wikitests.......................................................................................232 均衡早餐的方式 ....................................................................................236

迴歸與改善程序 ....................................................................................240

最後一塊拼圖 .......................................................................................241

感謝 .....................................................................................................242

第十七章 美麗測試就是有效測試 ................................................... 243 Adam goucher

SLIME ..................................................................................................243

S:安全 ........................................................................................243

L:語言 ........................................................................................245

I:需求 .........................................................................................245

M:測量 .......................................................................................246

E:現存 ........................................................................................247

命令稿 ..................................................................................................247

找出開發人員的註記 .............................................................................248

LOUD ...........................................................................................248

Oracles 與產生測試資料 .......................................................................249

心智圖 ..................................................................................................250

達成有效性 ...........................................................................................252

第三部份 美麗的工具

第十八章 放植臭蟲來找出臭蟲:美麗的變異測試 ........................... 255 Andreas Zeller & David Schuler

評估測試組合品質 ................................................................................255

監督守門人 ...........................................................................................257

有效的變異測試 ............................................................................259

選擇變異操作元(mutation operator)..........................................259

使用 AspectJ 的範例 .............................................................................260

等價變異 ..............................................................................................261

目錄│xiii

專注在影響 ...........................................................................................262

Javalanche 框架 ...................................................................................263

其他 .....................................................................................................264

感謝 .....................................................................................................265

參考文獻 ..............................................................................................265

第十九章 參考測試是美麗測試 ...................................................... 267 Clint Talbert

參考測試架構 .......................................................................................268

參考測試的擴展性 ................................................................................271

非同步測試 ...................................................................................272

列印測試.......................................................................................273

失效測試(invalidation test) .......................................................275

建立社群 ..............................................................................................277

第二十章 Clam 防毒軟體:用開放工具測試開放原始碼 .................. 279 Tomasz Kojm

Clam 防毒軟體計畫 ..............................................................................279

測試方式 ..............................................................................................280

黑箱測試與白箱測試 .....................................................................280

靜態分析.......................................................................................281

記憶體檢查器................................................................................283

單元測試.......................................................................................285

測試命令稿 ...................................................................................286

模糊測試.......................................................................................287

問題檔案集合................................................................................288

環境的測試 ...................................................................................288

Buildbot........................................................................................288 相容性測試 ...................................................................................289

效能測試.......................................................................................289

測試誤報與漏報警示 .....................................................................291

使用性與驗收測試 .........................................................................292

總結 .....................................................................................................293

感謝 .....................................................................................................293

xiv│目錄

第二十一章 使用 WINDMILL 測試網站應用 ....................................... 295 Adam Christian

前言 .....................................................................................................295

概述 .....................................................................................................296

撰寫測試 ..............................................................................................296

執行測試.......................................................................................299

測試除錯.......................................................................................301

Firebug Lite ..................................................................................301

LookupNode.................................................................................302 專案 .....................................................................................................302

比較 .....................................................................................................303

結論 .....................................................................................................303

參考文獻 ..............................................................................................304

第二十二章 測試一百萬個網頁 ......................................................... 305 Tim Riley

起初... ..................................................................................................305

工具的融合與演變 ................................................................................308

基本事實 ..............................................................................................310

總結 .....................................................................................................312

感謝 .....................................................................................................312

第二十三章 在多主機環境測試網路服務 ............................................ 313 Isaac Clerencia

eBox 需要更先進的測試工具 .................................................................313

開發 ANSTE 改進 eBox 品質控管程序....................................................314

eBox 如何使用 ANSTE ..........................................................................317

eBox 的 ANSTE 測試範例 ..............................................................318

其他專案能從 ANSTE 得到什麼好處 ......................................................325

附錄 作者群 .................................................................................... 327

索引.................................................................................................. 333

前言

在我十多年剛進入測試這行時,無法想像美麗測試的概念被提出,更別說是出書了。測

試部門一直是個很枯燥的地方,在企業組織的階層中,地位只比第一線的支援人員稍微

高一點,充滿一群重複執行固定測試步驟的可憐人。

然而,這樣的環境裡也有美麗的微光閃爍。

順著微光持續追尋,沿著路徑前行,一但走得夠遠,你將發現自己測試的方式開始包含

以下特性:

樂趣(Fun)

挑戰(Challenging)

迷人(Engaging)

經驗性

深思熟慮

有價值

或是,換個說法,美。

我認為,將測試從公認的慣例中帶來更多美,一部份原因來自於測試引導式開發(test-

driven development,TDD)、敏捷(agile)與工藝(craftsmanship)概念所帶來的影響,

同時也源自於現代應用程式的開發型態改變,隨著我們所開發的產品與開發方式愈來愈

社會化,而非呆板的固定程序,愈來愈多人認知到測試並不需要是制式程序,或醜陋。

然而,美存在於觀察者的眼中,如果每個人對美都有不同的想法,我們該如何挑選《測

試之美》的內容呢?

xvi│前言

我們很早就決定不要創造一本由枯燥的案例研究所組成的書,我們想讓每個章節的內容

都反應出撰稿人本身對美與測試的觀點。《測試之美》中,這二十多位撰稿人,有測試

人員、開發人員,或兼具兩者身份,每個撰稿者對美的理解與達成方式各有不同,他們

的想法隨著過去與現在環境的改變而演進。

每個撰稿者都同意捐出各自的版稅,《測試之美》的所有收益都將捐贈給聯合國的 Nothing

But Nets 募款活動,每募得 $10 的捐款,就會購買一件蚊帳,保護非洲地區的人們不受

瘧疾的傷害。這個募款活動已經將因這個疾病死亡的人數減少了將近一百萬人,大多數

是小於五歲的幼童,這個活動本身就是個美麗的行動,Tim 和我都十分感激每位撰稿人

的付出,讓這一切得以實現。

本書結構 在等待撰稿人完成各自的章節時,我們很害怕最後會是許多不同版本的「如何進行測試」

或是「維持綠燈」,還好,最後是涵蓋許多不同觀點的短文,宣言、詳細的案例研究、

讓人很有啟發的經驗報告以及來自最前線的戰爭實況 ─《測試之美》對各方面都有些

討論。

每一章也自然形成各自的章節。

第一部份,美麗的測試員 測試本質上是人類的活動,即使測試案例(test case)無法思考、感覺也不會沮喪,需要

有人思考才能將這些測試案例自動化。因此《測試之美》由測試人員的角度開始,不論

這指的是測試人員本身或是測試人員與其他人員間的互動。

第一章,這對你有幫助嗎?

Linda Wilkinson提供測試人員心理獨到的見解。

第二章,美麗的測試能滿足相關人員(stakeholders)

過去 25 年來,Rex Black 持續讓所有相關人員感覺滿意,他解釋為什麼這是件美麗

的事。

前言│xvii

第三章,建立開放原始碼品質控管(QA)社群

開放原始碼專案由支援社群決定其生死,Clint Talbert 與 Martin Schroder 分享他們

建立一個美麗的測試人員社群的經驗。

第四章,合作是美麗效能測試的基石

認為效能測試只是在測量速度嗎?Scoot Barber 解釋了在美麗的效能測試中最重要

的是團隊合作。

第二部份,美麗的程序 我們接著進入最大的段落,測試程序的介紹,本段落中的各章節會介紹測試人員所做的

工作以及做這些工作的原因。

第五章,模糊測試讓辦公室軟體更加可靠

對 Kamran Khan來說,辦公室軟體的美在於將複雜隱藏,模糊測試則是一個使用相

似模式(pattern)的測試技巧。

第六章,臭蟲管理與測試案例有效性

Brian Nitz與 Emily Chen相信追蹤測試案例與臭蟲的方式也可以十分美麗,他們用

OpenSolaris作例子說明。

第七章,美麗的 XMPP 測試

Remko Troncon與 XMPP社群有密切的關係,本章中,他解釋如何測試 XMPP通訊

協定,描述了測試由醜陋轉化為美麗的過程。

第八章,美麗的大規模測試自動化

任職於微軟的 Alan Page對大規範測試自動化十分熟悉,他分享個人讓測試更加美麗

的秘訣。

第九章,美麗比醜陋好

美麗一直是 Python 開發的中心思想,Neal Noritz、Michelle Levesque 與 Jeffrey

Yasskin指出程式語言美麗的其中一個要素就是穩定性,而要達到穩定性需要藉助於

美麗的測試。

xviii│前言

第十章,測試亂數產生器

John D. Cook 是個數學家,堅守古典上源自於複雜度與協調性的美麗定義,並依據

這個定義測試亂數產生器。

第十一章,變更中心式測試

Murali Nandigama 認為測試沒有異動的程式碼既無效率也不美麗,而變更中心式測

試則符合美麗的條件。

第十二章,使用中的軟體

Karen N. Johnson 分享了一段他對醫療軟體的測試,直接對他工作之外的生活造成

影響。

第十三章,軟體開發是個創造程序

Chris McMahon 在進入測試領域前是個音樂家,因此,他認為美麗的測試比較接近

爵士樂而非製造工廠就不令人意外。

第十四章,測試導引式開發:為美帶來新標準

Jennitta Andrea示範 TDD如何成為軟體專案中美的觸媒。

第十五章,美麗的測試是商業成功的基石

Lisa Crispin討論團隊對於美麗測試的承諾,以及如何成為商業成功的關鍵要素。

第十六章,剝開 socialtext 的表皮

Matthew Heusser曾經在許多不同的公司工作過,在這章中,我們將會看到為何他認

為目前公司的程序不只是好,而且美麗。

第十七章,美麗測試就是有效測試

美麗測試在重複測試時最為省力,Adam Goucher這麼認為,他分享三個能夠降低重

複測試成本的技巧。

前言│xix

第三部份,美麗的工具 美麗測試最後一個段落以幫助測試人員有效率地完成工作的工具作為結束。

第十八章:放植臭蟲來找出臭蟲:美麗的變異測試(mutation testing)

信任是美麗的一部份,這代表如果你無法信任測試組合(test suite),測試就不美麗,

Andreas Zeller與David Schuler介紹利用人工植入臭蟲到程式碼中來提高對測試信任

的過程。

第十九章,參考測試是美麗測試

Clint Talbert展示了 Mozilla如何重新思考,將自動迴歸測試視作預估與向前看的工

具,而非單單只是迴歸測試。

第二十章,Clam 防毒軟體:用開放工具測試開放原始碼

Tomasz Kojm討論 ClamAV團隊如何選擇與使用不同的測試工具,以及在測試時將

KISS原則具體化成為美麗的測試。

第二十一章,使用 WINDMILL 測試網站應用

Adam Christian向讀者簡介了 Windmill專案,並解釋雖然網頁測試的單一步驟並不

美麗,但全部結合起來卻是美麗的原因。

第二十二章,測試一百萬個網頁

Tim Riley從測試工具的演進與成長中看到美麗,它們一開始只是簡單的工具,卻成

長的十分成熟。

第二十三章,在多主機環境測試網路服務

即使達到 100% 的測試自動化,在單一情境(scenario)中包含數台主機增加了許多

複雜度也不美麗,Isaac Clerencia展示了 ANSTE,解釋它如何增加這類測試的美。

美麗的測試人員依循美麗的程序,藉助美麗的工具幫助,建造出美麗的測試,至少我們

認為如此,也希望各位能夠達到。

xx│前言

使用範例程式碼 本書的目的在協助你完成工作。一般而言,你可以在自己的程式與文件裡,使用本書的

範例程式碼。除非重新製作並散佈大部分程式碼,否則不需要與我們連繫以取得授權。

例如,開發程式時使用書中一些範例程式碼,並不需要取得授權。然而販賣或散佈歐萊

禮書籍的範例程式光碟,就需要取得授權。為了回答問題,引用這本書的內容或程式碼,

並不需要取得授權。把書中大量範例放到你自己的產品文件中,就需要取得授權。

我們會很感謝你在使用範例程式碼時註明出處,但這並非必要。出處說明通常包括書名、

作者、出版社以及 ISBN書號。例如:「測試之美,由 Tim Riley與 Adam Goucher合著。

版權為 2010歐萊禮媒體公司所有,ISBN書號 978-0-596-15981-8。」

感謝 我們要感謝以下這些幫助《測試之美》的人們:

Greg Wilson博士,如果他沒有撰寫《美麗程式碼》(《Beautiful Code》,ISBN:

978-0-596-51004-6),我們可能永遠不會有《測試之美》的想法,並讓它出版。

所有的撰稿人,你們花費了許多時間寫作、修改,有時候還多次重寫個人的章節,

除了防止瘧疾擴散的滿足感之外,你們並無法得到任何實質的報酬。

我們的技術編輯:Kent Beck、Michael Feathers、Paul Carvalho以及 Gary Police。

給予有用的回饋有時候和接受回饋一樣困難,但我們由他們所收到的回饋確實讓

本書內容更加美麗。

當然,還有我們的太太與小孩,你們在過去的一年忍受與我們進行「寫書」的工作。