讀《軟體測試的藝術》——第一章
簡介
《軟體測試的藝術》作為元老級別的測試理論書籍,在業內非常經典且有口皆碑,書中提出的軟體測試為求錯而非求證的觀點至今仍在學術界被廣泛討論。本書還為計算機界一個最為重要的主題提供了一個長期、基本的指南:
如何確保所開發的所有軟體做了應該做的,同樣重要的是,未做不該做的?
40多年前本書最早出版時,有一條著名的經驗:
在一個典型的程式設計專案中,軟體測試或系統測試大約佔用50%的專案時間和超過50%的總成本。
事實上,即使在40多年後的今天,同樣的經驗仍然成立。在任何軟體開發專案中,測試依然扮演重要角色。然而,與軟體開發的任何其他方面相比,人們對軟體測試仍然知之甚少,軟體測試從始至終未曾成為熱門課題。測試,依然是軟體開發中的“黑色藝術
隨著軟體測試的重要性越來越受到現代軟體企業的重視,本書也如同被塵封的寶藏一般被髮掘並受到追捧。
儘管市面上的測試書籍琳琅滿目,但它們的源泉之一正是本書。本書旨在成為實用且腳踏實地的手冊,其精悍凝練的篇幅可以讓人在最短時間內獲得關於軟體測試的真知灼見。正如一位豆瓣讀者所言:
很直白的軟體測試書,覆蓋面很全面。看過之後,令以前對軟體測試一知半解的人頓時對軟體測試有了新的、系統性的瞭解。
作為一個測試領域的小學生、初學者,我會把本書作為一本入門參考書;
而有一定經驗的測試工程師更應當將本書作為理論指南,藉此機會梳理自己的知識框架;
對開發人員而言,本書可以幫助你在最短時間內建立起一個測試理論框架,從而在編碼時保有一些測試思想。同時,在極限程式設計中,開發者需要編寫單元測試用例;
對測試管理者(專案經理)而言,本書內容有助於你根據具體專案情況指定更合理、更有效的測試計劃。
總之,測試是個相比開發來講門檻不算太高的職業(當然要做到精深絕非易事)。
一次自評價測試
40年來,軟體測試變得比以前容易得多,也困難得多。
之所以變得更困難,是由於大量程式語言、作業系統以及硬體平臺的湧現。今天“計算機”這個概念也變得越來越廣泛和越來越難被準確定義。
之所以變得更容易,是由於大量軟體和作業系統內部已提供了充分測試過的例程以供應用程式整合,無需從頭設計(造輪子)。
定義
軟體測試,是一個過程或一系列過程,用以確認計算機程式碼完成了其應該完成的功能,且不執行其不該有的操作。軟體應當是可預測且穩定的,不會給使用者帶來意外驚奇。
例題-設計一組測試用例
這個程式從一個輸入對話方塊中讀取三個整數值,這三個整數值代表了三角形三條邊的長度。程式顯示提示資訊,指出該三角形是何種三角形:不規則三角形、等腰三角形還是等邊三角形。
設計好用例集後,請用你設計的用例集回答如下問題,對每個回答“是”的問題,得1分:
- 是否有測試用例代表一個有效的不規則三角形(如3,4,5)?
- 是否有測試用例代表一個有效的等邊三角形(如3,3,3)?
- 是否有測試用例代表一個有效的等腰三角形(如3,3,4)?
- 是否有至少三個測試用例代表有效的等腰三角形,以確保測試覆蓋到任意兩邊相等的所有三種可能情況?
(如3,3,4; 3,4,3; 4,3,3) - 是否存在測試用例,其中某邊長度為0?(如0,3,3)
- 是否存在測試用例,其中某邊長度為負數?(如-1,3,3)
- 是否存在測試用例,三個整數皆大於0,其中兩個整數之和等於第三個?(如1,2,3)
- 是否存在至少三個測試用例,覆蓋了第7類中的所有情況?
(如1,2,3; 1,3,2; 3,1,2) - 是否存在測試用例,三個整數皆大於0,其中兩個整數之和小於第三個?(如1,2,4)
- 是否存在至少三個測試用例,覆蓋了第9類中的所有情況?
(如1,2,4;1,4,2;4,1,2) - 是否存在測試用例,三邊長度皆為0?
- 是否存在測試用例,輸入邊長為非整數值?(如2.5,3.5,4.5)
- 是否存在測試用例,輸入邊長的個數錯誤?(如1,2)
- 對每一個測試用例,除定義輸入值之外,是否定義了針對該輸入值的預期輸出?
事實上,即使測試用例集滿足上述所有條件,也不能確保查找出程式所有可能的錯誤。(本書後續還會提到測試用例的設計方法,讀者可以在閱讀完第4章後重新回顧本題,相信你可以設計出更完備的用例集)根據資料統計,高水平的專業程式設計師在本題的平均得分僅為7.8/14。
但通過對本書的學習,相信你可以認識到充分測試是完全可以實現的一項工作。