任何一個(gè)軟件公司發(fā)布的產(chǎn)品都有缺陷,所以軟件測試是產(chǎn)品開發(fā)過程中必不可少的一部分。經(jīng)過長期的發(fā)展,軟件測試方法不斷完善,探索式測試方法也是其中的一種。本文將結(jié)合實(shí)際工作談?wù)剬?duì)探索式測試方法的理解。
探索式測試方法主要分為兩類:
局部探索式測試法針對(duì)測試人員在運(yùn)行任何一個(gè)測試用例時(shí)所需要作出的細(xì)微決定;
全局探索式測試法針對(duì)測試人員在編制測試計(jì)劃和測試用例設(shè)計(jì)時(shí)所需要考慮的廣泛的戰(zhàn)略性問題。
一、局部探索式測試法
1 輸入:合法輸入、非法輸入
1)輸入篩選器
第一,開發(fā)是否正確的實(shí)現(xiàn)了該功能?
第二,是否可以繞過屏蔽器?或者當(dāng)輸入值進(jìn)入系統(tǒng)后還可以修改?
2)輸入檢查
測試時(shí)必須仔細(xì)閱讀每一條錯(cuò)誤信息,檢查該信息是否寫錯(cuò)了,錯(cuò)誤信息還可以透漏開發(fā)編程時(shí)的一些想法。
3)異常處理
如果測試看到一個(gè)通用出錯(cuò)信息,建議測試再反復(fù)測試同一段函數(shù),繼續(xù)使用剛才引發(fā)異常的輸入數(shù)據(jù),或稍微修改一下,看看會(huì)不會(huì)導(dǎo)致出錯(cuò)。嘗試運(yùn)行其他一些要調(diào)用該函數(shù)的測試用例,看看會(huì)發(fā)生什么情況。
4)常規(guī)輸入和非常規(guī)輸入
例如:
和Ctrl、Alt、Esc按鍵組合的字符,操作系統(tǒng)、編程語言、瀏覽器和運(yùn)行時(shí)環(huán)境的特定保留詞或按鍵。
5)使用輸出來指導(dǎo)輸入選擇
①首先確定希望程序產(chǎn)生的輸出結(jié)果,然后考察所有用戶場景,來確定輸入;
②先觀察輸出結(jié)果,再選擇新的輸入,使新的輸出為重新計(jì)算后的結(jié)果。
2 狀態(tài)
軟件的一個(gè)狀態(tài)就是狀態(tài)空間中的一個(gè)點(diǎn),它由所有內(nèi)部數(shù)據(jù)結(jié)構(gòu)的取值來唯一確定。
①使用狀態(tài)信息來幫助尋找相關(guān)的輸入,如果兩個(gè)或更多個(gè)輸入在某種程度上關(guān)聯(lián),那么它們應(yīng)該放在一起測;
②使用狀態(tài)信息來辨識(shí)重要的輸入序列,當(dāng)一個(gè)輸入導(dǎo)致狀態(tài)信息被更新時(shí),緊接著再多次使用同樣的輸入會(huì)導(dǎo)致一連串的狀態(tài)變化。
例如:
對(duì)數(shù)據(jù)庫中的表進(jìn)行多次更新,查看數(shù)據(jù)是否會(huì)溢出。
3 代碼路徑
測試需明確知道代碼的所有選擇結(jié)構(gòu),并理解哪些輸入會(huì)導(dǎo)致軟件走這條分支而不走另一條。
4 用戶數(shù)據(jù)
①如何模仿真實(shí)的用戶數(shù)據(jù)
②使用真實(shí)的用戶數(shù)據(jù)時(shí),應(yīng)考慮如何解決“隱私問題”。
5 執(zhí)行環(huán)境
是指測試使用的操作系統(tǒng)及其當(dāng)前的配置,還包括運(yùn)行在同一操作系統(tǒng)上會(huì)和被測試軟件進(jìn)行交互的其他一些應(yīng)用程序,以及會(huì)間接或直接影響被測試軟件本身或影響被測試軟件運(yùn)行的任何驅(qū)動(dòng)程序、代碼、文件、設(shè)置等,還包括軟件當(dāng)前連接的網(wǎng)絡(luò)情況、網(wǎng)絡(luò)的可用帶寬、性能等。