開篇聲名:這是第一次翻譯,介於本人英語水平有限,可能部分內容翻譯得不太恰當,呵呵,還請各位高抬貴手不要扔磚頭啊。附件中是《軟體測試藝術》的原文,請參閱。
第一章 自我評估測試

在這本書出版的25年來,軟體測試已經向著更快捷更復雜化的方向發展。
軟體測試工作的複雜化,是由大量程式語言、作業系統以及硬體平臺的快速發展所決定的。並且,在相對於少數專業人士使用電腦的20世紀70年代,當今,幾乎沒有任何企業或者教育機構能夠脫離計算機的使用。此外,計算機的功能也要比早期裝置強大百倍以上。
因此,我們所編的軟體可能會被數以百萬計的人所使用,幫助他們更加高效的完成工作,減少工作損失及成本,有效的完成工作任務。這並不代表,如今軟體的地位比這本書第一次出版的時候高出很多,確切的說,當今計算機及計算機機軟體的採用會影響更多的人或企業。
從某種角度來說軟體測試工作是比較輕鬆的,因為應用軟體與作業系統的相容性得到了改善,無需開發人員的干預便可以穩定的執行在作業系統中處理日常事務。使用圖形使用者介面(GUI),建立開發語言庫,在軟體測試工作開始之前儲存適用於測試的物件庫,這樣測試某個應用軟體的時候可以減少測試工作量提高測試效率。
軟體測試是一個過程,或者說是一系列的過程,按照計劃有條不紊的檢查程式碼是否按照預定的目標執行,有沒有產生額外的執行結果。對使用者而言,軟體的執行結果應該是明確的,不應該發生預定目標外的情況。在這本書中,我們將瞭解到如何達成這個目標。
在我們開始閱讀這本書之前,我希望做一個小測試。我希望你能夠編寫一套測試用例,提供詳細而精確的一套資料對下面的小程式做個完全的測試。建立一套測試資料,該資料必須能夠被程式成功的執行,以下是程式的描述:
該程式讀取對話方塊中輸入三個整數的值,這三個值代表了一個三角形的邊長。程式會顯示一條訊息,顯示出該資料得出的是不等邊三角形、等腰三角形還是等邊三角形。
記住,不等邊三角形的任何一邊不能與其他兩個邊的長度相等,等腰三角形有兩個邊的長度相等,而等邊三角形的三條邊長度均相等。並且等腰三角形兩邊長度相等的邊的夾角度數相等,等邊三角形的三個角的角度均相等,不等邊三角形的任何一個夾角不能與其他夾角度數相等。評估你所設定的測試例用它來回答以下的問題,對用例滿足的條件記為“yes”。
1.你是否有一個測試用例有效的描述了一個不等邊三角形?(請注意,像1232510這樣的用例不能夠記為“yes”,因為根本不存在這種邊長的三角形)
2.你是否有一個用效的用例描述了等邊三角形?
3.你是否有一個用例有效的描述了等腰三角形?(清注意,如果用例中包含如224這樣的資料,它不能作為有效的用例,因為不存在這種邊長的三角形。)
4.你是否有至少三個用例,用來表現等腰三角形兩等邊的邊長相互置換的情況?(例如,3,3,43,4,34,3,3)?
5.你是否有一個用例,用來描述其中一個邊長為0的情況?
6.你是否有一個用例,用來描述其中一個邊長為負值的情況?
7.你是否有一個用例,用來描述兩邊之和等於第三邊的情況?(比如,程式顯示123所表示的三角形,有可能存在錯誤)
8.你是否有至少三個類別的測試案例,使得7您嘗試了所有三個數值的排列,其中一個邊長為另外兩個邊長之和(例如,1,2,31,3,23,1,2)?
9.你是否有這樣一個用例,三角形的三個邊長都是大於0的整數,其中兩邊之和小於第三邊?
10.你是否有至少三個測試用例,使得9您嘗試了所有的3個排列(例如,1,2,4;1,4,24,1,2)?
11.你是否有一個測試用例,描述了三邊都為零的情況(0,0,0)?
12.你是否有一個用例,描述了三角形的三邊邊長為非整數值的情況(如2.5,3.5,5.5)?
13.你是否有至少有一個測試用例,描述了指定無效邊長的情況?
14.對於每個測試用例,你是否指定了程式的預期輸出結果?
當然,不敢保證一套滿足上述所有條件的測試用例能夠發現所有可能產生的問題,但從問題113所描述的問題來看,在程式執行的過程中有可能發生這樣或那樣的錯誤,對這個程式做個充分的測試應該至少能揭露上述的問題。
現在,在給自己打分之前,先思考下述的問題:根據我們的經驗,一個資深的軟體工程師的平均分數應該是7.8,得到這個分數是由於缺少第14個條件。如果你比這個成績做得好,那麼祝賀你。如果你還沒有達到這個成績,那麼繼續努力吧。
物件導向的語言所開發的程式,如JavaC + +,使系統、編譯器,甚至是普通的工資統計系統的測試都變成更加複雜。例如,你要測試上述程式語言構建的應用程式,暴露它們的關聯問題,那麼就得了解物件例項的關聯錯誤和記憶體的管理等等。
從上述的例子似乎可以看出,完全的測試是不可能實現的。事實絕非如此!制定恰當的測試計劃,嘗試接觸軟體程式的開發或者從學習這本書開始吧。