本書所有版稅收入將捐給聯合國Nothing But Nets 募款活動,這是個 ...
-
Upload
khangminh22 -
Category
Documents
-
view
1 -
download
0
Transcript of 本書所有版稅收入將捐給聯合國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。
給予有用的回饋有時候和接受回饋一樣困難,但我們由他們所收到的回饋確實讓
本書內容更加美麗。
當然,還有我們的太太與小孩,你們在過去的一年忍受與我們進行「寫書」的工作。