輸入:由環境產生的一種刺激,該刺激導致被測試的應用程式有所響應。原子輸入和抽象輸入:簡單到不能再簡單的是原子輸入,由於數量過大,可以抽象。
如何從一堆原子輸入中找到最佳的子集:輸入之間會相互影響從而造成軟體失效。分別輸入沒問題,組合使用有問題。輸入值的先後順序也會導致問題。同等的對待兩個或兩個以上的原子輸入的方法稱為等價類劃分,如果兩個輸入都執行相同的**路徑,同時又都可以被完全放入目標資料結構內,在測試上就可以看做等價的。
所有的軟體都會執行四個基本任務:接收資料,產生輸出,儲存資料和進行運算。
正向測試:讓軟體進行正常工作,輸入合法輸入。
逆向測試:讓軟體失效,輸入非法輸入。
開發人員針對非法輸入會實現錯誤處理**。有三種方式定義錯誤處理程式:輸入篩選,輸入檢查,異常處理。
輸入篩選器用於防止非法的輸入值被傳遞給應用軟體的功能**。輸入篩選器不會產生錯誤資訊,而是把非法輸入排除在外,只把合法的輸入值傳給應用程式。所有的列表框和下拉框都是一種輸入篩選器,提供合法輸入選項。針對輸入篩選器需要考慮:
輸入檢查屬於應用程式**的一部分,通常採用分支結構實現。接受乙個輸入值,如果輸入合法,那麼繼續執行,否則產生一條錯誤訊息並終止處理。輸入檢查和異常處理的區別在於**的位置,當程式從外部接收到輸入值後,一般緊接著就是輸入檢查的**,顯示的錯誤資訊會非常精確。如果報錯資訊比較籠統,則是異常處理。
異常處理把整個例項當成乙個整體,檢測其上發生的任何乙個錯誤。錯誤處理**通常位於程式結尾部分,或位於乙個單獨檔案中。如果執行出錯,或違規記憶體訪問, 異常**都會處理。異常處理**可以處理各種各樣的軟體失效情況,不單侷限於非法輸入。對於異常處理給出的籠統的提示資訊,建議反覆測試同一段函式,繼續使用引發異常的輸入資料,或稍加修改,然後觀察。
輸入分為常規輸入和非常規輸入,乙個常規輸入表示沒有特定的格式或含義,可以直接使用於被測軟體。非常規輸入只在特殊情況下發生。如shift+c錯按撐了ctrl+c,因為後者有別的含義,可能引發缺陷。所有和ctrl、alt、esc組合的字元都算特殊字元,建議測試這些字元。某些字型,在處理unicode或某些多位元組字符集時,如果沒有被正確的本地化,就會引發軟體失效。還有一些特殊字元與平台有關,每乙個作業系統、程式語言、瀏覽器和執行時環境都有一些固定的保留字,具有特殊含義。如windows的com1、aux等。如果輸入框沒有處理這些保留字,程式可能會掛起或崩潰。建議作為輸入值來測試。
空白輸入,不輸入字元或給api傳遞null引數,需要軟體在預設情況下執行。單元測試時常常忽視空輸入。輸入的非空校驗應該根據空值欄位來變化。除了空輸入,還可以把預設值置空,或者嘗試預設值附近的一些值。如數字±1,字串就刪前刪後幾個字元,或提供等長的不同字元。
軟體的乙個狀態就是狀態空間中的乙個點,它由所有內部資料結構的取值來唯一確定。應用程式和其執行環境進行互動和接收到的所有輸入導致軟體狀態發生變化。軟體狀態保持了乙個輸入的歷史記錄,可以記住前一次使用者使用軟體時做了哪些事兒。因為軟體狀態的改變源於連續不斷的輸入,所以測試它就需要使用多個測試用例,並持續不斷的執行軟體、中止執行、再執行軟體。過程中注意觀察輸入是如何影響系統執行的,可以注意到軟體狀態的變化。軟體狀態可以看成是描述軟體記住過去發生的所有輸入輸出的一種方式。狀態可以是臨時的,也可以長期儲存。這兩種情況被稱為資料轄域,檢測軟體的資料轄域是否正確實現也很重要。如果資料轄域有問題,可以導致安全隱患(只記住該記住的,如信用卡號不能記住)。很多臨時或被長期保持的資料不能直接觀測,只能通過對軟體行為的影響來推測。如果同乙個輸入會導致軟體做出兩種不同的響應,則這兩種情況下軟體狀態完全不同。兩點建議:
使用狀態資訊來辨識重要的檔案序列:當乙個輸入導致狀態資訊更新,再多次使用同樣輸入會導致一連串的狀態變化。如果累加狀態變化,必須考慮溢位。
一連串的**語句構成了乙個**路徑,起始於軟體開始執行的語句,終止於一條特定的語句。測試人員必須明確知道程式有哪些分支,盡量覆蓋所有分支。
用真實的使用者資料測,有利於發現缺陷。需注意:①備份資料,在副本上工作。②保護使用者隱私資料。
環境本身也是一種輸入源,產品發布之前應盡量嘗試各種使用者環境。環境包括使用的作業系統和當前配置,還包括執行在同一系統上會和被測軟體進行互動的一些其他應用程式,還包括可能影響被測的驅動、**、檔案、設定等,還包括網路情況、效能等。
讀書筆記 探索式測試 混合探索式測試
1.講述使用者故事 2.描述需求 3.演示產品功能 4.演示整合場景 5.描述設定和安裝 6.描述警告和出錯情況 1.通過場景操作引入變化 操作後得到的新場景稱為衍生場景。刪除步驟 替換步驟 重複步驟 替換資料 替換環境 替換硬體 替換容器 瀏覽器相容性 替換版本 修改本地設定 cookie 登錄檔...
探索式軟體測試讀書筆記
2011年4月買的書,2014年1月才讀,罪過罪過,後悔莫及.中括號裡面的內容是自己的評注 第2章 手工測試 1.軟體失效的主要原因是因為開發人員沒有理解,預見或測試所有可以執行軟體的環境 環境應該只是失效的乙個因素 2.測試人員擁有那種 如何才能攻破這個功能 的態度和開發人員那種 如何才能實現這個...
探索式測試學習筆記之一 區域性探索式測試法
什麼是探索式測試?簡單的說就是 測試人員根據應用程式所提供的資訊自由發揮,不受限制,不受任何約束的探索程式的各種功能。主要強調測試人員個人自由和責任的測試方法。探索式測試的缺點是 測試人員可能在測試過程中沒有重點,有些模組可能會重複測試,而有些會遺漏掉。這時必要的指導方法顯得尤為重要,在指導方法的引...