閱讀《軟件測試》書籍隨手記錄的筆記
動態(tài)黑盒測試
不深入代碼細(xì)節(jié)測試軟件的方法稱為動態(tài)黑盒測試艺谆。動態(tài)黑盒測試常被稱為行為測試,因為測試的是軟件在使用過程中實際行動。
測試用例是指進(jìn)行測試時使用的特定輸入具帮,以及測試軟件的過程步驟。
選擇測試用例是軟件測試員最重要的一項任務(wù)痒芝。不正確的選擇可能導(dǎo)致測試量過大或者過小,甚至測試目標(biāo)不對牵素。
通過性測試和失效性測試
通過性測試實際上是確認(rèn)軟件至少能做什么严衬,而不會考驗其能力。純粹為了破壞軟件而設(shè)計和執(zhí)行的測試用例稱為失效性測試或錯誤強(qiáng)制測試
在設(shè)計和執(zhí)行測試用例時两波,總是首先進(jìn)行通過性測試瞳步。
等價類劃分
等價類劃分是指分步驟地把海量(無限)的測試用例集減得很小闷哆,但過程同樣有效腰奋。
一個等價類或者等價劃分是指測試相同目標(biāo)或者暴露相同軟件缺陷的一組測試用例”д考慮把軟件具有相似輸入劣坊、相似輸出、相似操作的分在一組屈留。這些組就是等價劃分局冰。數(shù)據(jù)測試
進(jìn)行等價類劃分,以合理減少測試用例的關(guān)鍵原則是:邊界條件灌危、次邊界條件康二、空值和無效數(shù)據(jù)。
邊界條件是指軟件運(yùn)行在計劃操作界限的邊界的情況勇蝙。
提出邊界條件時沫勿,一定要測試臨近邊界的有效數(shù)據(jù),測試最后一個可能有效的數(shù)據(jù)味混,同時測試剛超過邊界的無效數(shù)據(jù)产雹。
有些邊界在軟件內(nèi)部,最終用戶幾乎看不到翁锡,但是軟件測試員仍有必要進(jìn)行檢查蔓挖。這樣的邊界條件稱為次邊界條件或者內(nèi)部邊界條件。
一定要考慮建立處理默認(rèn)值馆衔、空白瘟判、空值怨绣、零值或者無輸入等條件的等價劃分。
無效數(shù)據(jù)是指非法拷获、錯誤梨熙、不正確和垃圾數(shù)據(jù)。例如:如果要求輸入數(shù)字刀诬,就輸入字母咽扇。如果軟件只接受正數(shù),就輸入負(fù)數(shù)陕壹。如果軟件對日期敏感质欲,就看它在公元3000年是否還能正常工作。狀態(tài)測試
軟件測試的另一方面是通過不同的狀態(tài)驗證的程序的邏輯流程糠馆。軟件狀態(tài)是指軟件當(dāng)前所處的條件或者模式嘶伟。
1.建立狀態(tài)轉(zhuǎn)換圖
狀態(tài)轉(zhuǎn)換圖應(yīng)該表示出以下項目:
?軟件可能進(jìn)入的每一種獨(dú)立狀態(tài)。
這里有一個很好的經(jīng)驗是又碌,如果不能判定是否為獨(dú)立狀態(tài)九昧,它就可能是。如果以后發(fā)現(xiàn)它不是毕匀,隨時可以將其剔除铸鹰。
?從一種狀態(tài)轉(zhuǎn)入另一種狀態(tài)所需的輸入和條件。
可能是按鍵皂岔、菜單選擇蹋笼、傳感器信號或者電話振鈴等。狀態(tài)不可能無緣無故地存在躁垛,其原因正是我們在這里要尋找的剖毯。
?進(jìn)入或者退出某種狀態(tài)時的設(shè)置條件及輸出結(jié)果。
包括顯示的菜單和按鈕教馆、設(shè)置的標(biāo)志位逊谋、產(chǎn)生的打印輸出、執(zhí)行的運(yùn)算等土铺。這些是狀態(tài)轉(zhuǎn)換時發(fā)生的部分或全部現(xiàn)象胶滋。
2.減少要測試的狀態(tài)及轉(zhuǎn)換的數(shù)量
將大量的可能性減少到可以操作的測試用例集合有以下5種實現(xiàn)方法:
?每種狀態(tài)至少訪問一次。
如何到達(dá)的沒有關(guān)系舒憾,但是每一種狀態(tài)都必須測試镀钓。
?測試看起來是最常見和做普遍的狀態(tài)轉(zhuǎn)換。
盡管聽起來很主觀镀迂,但是其根據(jù)是進(jìn)行產(chǎn)品說明書的靜態(tài)黑盒子分析時收集到的信息丁溅。某些用戶情況很可能比其他更常見。
?測試狀態(tài)之間最不常用的分支探遵。
這些分支是最容易被產(chǎn)品設(shè)計者和程序員忽視的窟赏。軟件測試員也許是第一個測試它們的人妓柜。
?測試所有錯誤狀態(tài)及其返回值。
出錯條件通常難以建立涯穷。程序員常常編寫代碼處理某些錯誤棍掐,但不會測試自己的代碼。錯誤沒有得到正確處理拷况、錯誤提示信息不正確作煌、修復(fù)錯誤時未正確恢復(fù)軟件等情況常有發(fā)生。
?測試隨機(jī)狀態(tài)轉(zhuǎn)換赚瘦。
如果打印了狀態(tài)圖粟誓,就可以在上面任意做各種標(biāo)記。如果有時間做得更多起意,可以利用測試工具自動執(zhí)行狀態(tài)隨機(jī)轉(zhuǎn)換的測試鹰服。
測試狀態(tài)及其轉(zhuǎn)換包括檢查所有的狀態(tài)變量——與進(jìn)入和退出狀態(tài)相關(guān)的靜態(tài)條件、信息揽咕、值悲酷、功能等。失敗狀態(tài)測試
失效性狀態(tài)測試包含競爭條件亲善、重復(fù)设易、壓迫和重負(fù)。
競爭條件問題是指幾個事件恰巧擠在一起逗爹,由于軟件未預(yù)料到運(yùn)行過程會被中斷亡嫌,以致造成混亂。
重復(fù)測試是不斷執(zhí)行同樣的操作掘而。這種測試主要原因是檢查是否存在內(nèi)存泄漏
壓迫測試是使軟件在不夠理想的條件下運(yùn)行——內(nèi)存小、磁盤空間少于购、CPU速度慢袍睡、調(diào)制解調(diào)器速率低等。
重負(fù)測試與壓迫測試相反肋僧。壓迫測試是盡量限制軟件斑胜,而重負(fù)測試是盡量提供條件任其發(fā)揮。讓軟件處理盡可能大的數(shù)據(jù)文件嫌吠。其他黑盒測試技術(shù)
1止潘、像無經(jīng)驗的用戶那樣想問題;
2辫诅、在已經(jīng)找到的軟件缺陷的地方再找找凭戴;
3、像黑客一樣考慮問題炕矮;
4么夫、憑借經(jīng)驗者冤、直覺和預(yù)感。