閱讀《軟件測試》書籍隨手記錄的筆記
動態(tài)黑盒測試
不深入代碼細節(jié)測試軟件的方法稱為動態(tài)黑盒測試。動態(tài)黑盒測試常被稱為行為測試,因為測試的是軟件在使用過程中實際行動。
測試用例是指進行測試時使用的特定輸入,以及測試軟件的過程步驟。
選擇測試用例是軟件測試員最重要的一項任務。不正確的選擇可能導致測試量過大或者過小,甚至測試目標不對。通過性測試和失效性測試
通過性測試實際上是確認軟件至少能做什么,而不會考驗其能力。純粹為了破壞軟件而設(shè)計和執(zhí)行的測試用例稱為失效性測試或錯誤強制測試
在設(shè)計和執(zhí)行測試用例時,總是首先進行通過性測試。等價類劃分
等價類劃分是指分步驟地把海量(無限)的測試用例集減得很小,但過程同樣有效。
一個等價類或者等價劃分是指測試相同目標或者暴露相同軟件缺陷的一組測試用例。考慮把軟件具有相似輸入、相似輸出、相似操作的分在一組。這些組就是等價劃分。數(shù)據(jù)測試
進行等價類劃分,以合理減少測試用例的關(guān)鍵原則是:邊界條件、次邊界條件、空值和無效數(shù)據(jù)。
邊界條件是指軟件運行在計劃操作界限的邊界的情況。
提出邊界條件時,一定要測試臨近邊界的有效數(shù)據(jù),測試最后一個可能有效的數(shù)據(jù),同時測試剛超過邊界的無效數(shù)據(jù)。
有些邊界在軟件內(nèi)部,最終用戶幾乎看不到,但是軟件測試員仍有必要進行檢查。這樣的邊界條件稱為次邊界條件或者內(nèi)部邊界條件。
一定要考慮建立處理默認值、空白、空值、零值或者無輸入等條件的等價劃分。
無效數(shù)據(jù)是指非法、錯誤、不正確和垃圾數(shù)據(jù)。例如:如果要求輸入數(shù)字,就輸入字母。如果軟件只接受正數(shù),就輸入負數(shù)。如果軟件對日期敏感,就看它在公元3000年是否還能正常工作。狀態(tài)測試
軟件測試的另一方面是通過不同的狀態(tài)驗證的程序的邏輯流程。軟件狀態(tài)是指軟件當前所處的條件或者模式。
1.建立狀態(tài)轉(zhuǎn)換圖
狀態(tài)轉(zhuǎn)換圖應該表示出以下項目:
?軟件可能進入的每一種獨立狀態(tài)。這里有一個很好的經(jīng)驗是,如果不能判定是否為獨立狀態(tài),它就可能是。如果以后發(fā)現(xiàn)它不是,隨時可以將其剔除。
?從一種狀態(tài)轉(zhuǎn)入另一種狀態(tài)所需的輸入和條件。可能是按鍵、菜單選擇、傳感器信號或者電話振鈴等。狀態(tài)不可能無緣無故地存在,其原因正是我們在這里要尋找的。
?進入或者退出某種狀態(tài)時的設(shè)置條件及輸出結(jié)果。包括顯示的菜單和按鈕、設(shè)置的標志位、產(chǎn)生的打印輸出、執(zhí)行的運算等。這些是狀態(tài)轉(zhuǎn)換時發(fā)生的部分或全部現(xiàn)象。
2.減少要測試的狀態(tài)及轉(zhuǎn)換的數(shù)量
將大量的可能性減少到可以操作的測試用例集合有以下5種實現(xiàn)方法:
?每種狀態(tài)至少訪問一次。如何到達的沒有關(guān)系,但是每一種狀態(tài)都必須測試。
?測試看起來是最常見和做普遍的狀態(tài)轉(zhuǎn)換。盡管聽起來很主觀,但是其根據(jù)是進行產(chǎn)品說明書的靜態(tài)黑盒子分析時收集到的信息。某些用戶情況很可能比其他更常見。
?測試狀態(tài)之間最不常用的分支。這些分支是最容易被產(chǎn)品設(shè)計者和程序員忽視的。軟件測試員也許是第一個測試它們的人。
?測試所有錯誤狀態(tài)及其返回值。出錯條件通常難以建立。程序員常常編寫代碼處理某些錯誤,但不會測試自己的代碼。錯誤沒有得到正確處理、錯誤提示信息不正確、修復錯誤時未正確恢復軟件等情況常有發(fā)生。
?測試隨機狀態(tài)轉(zhuǎn)換。如果打印了狀態(tài)圖,就可以在上面任意做各種標記。如果有時間做得更多,可以利用測試工具自動執(zhí)行狀態(tài)隨機轉(zhuǎn)換的測試。
測試狀態(tài)及其轉(zhuǎn)換包括檢查所有的狀態(tài)變量——與進入和退出狀態(tài)相關(guān)的靜態(tài)條件、信息、值、功能等。失敗狀態(tài)測試
失效性狀態(tài)測試包含競爭條件、重復、壓迫和重負。
競爭條件問題是指幾個事件恰巧擠在一起,由于軟件未預料到運行過程會被中斷,以致造成混亂。
重復測試是不斷執(zhí)行同樣的操作。這種測試主要原因是檢查是否存在內(nèi)存泄漏
壓迫測試是使軟件在不夠理想的條件下運行——內(nèi)存小、磁盤空間少、CPU速度慢、調(diào)制解調(diào)器速率低等。
重負測試與壓迫測試相反。壓迫測試是盡量限制軟件,而重負測試是盡量提供條件任其發(fā)揮。讓軟件處理盡可能大的數(shù)據(jù)文件。其他黑盒測試技術(shù)
1、像無經(jīng)驗的用戶那樣想問題;
2、在已經(jīng)找到的軟件缺陷的地方再找找;
3、像黑客一樣考慮問題;
4、憑借經(jīng)驗、直覺和預感。