淺談探索式測試
(一)探索式測試理論知識
什麼是探索式測試?
- 探索式測試(ET,Exploratory Testing)是一種軟體測試風格,而不是一種具體的軟體測試技術(什麼是具體的軟體測試技術?如:等價類劃分法、邊界值分析法、組合測試等)。(探索式測試是測試專屬的,不像敏捷模式,有敏捷開發和敏捷測試)
- 探索式測試強調依據當前待測專案實際情況,選擇合適的測試技術,而不侷限於特定的測試技術。
- 這種方法強調測試者的
主觀能動性
,以及測試設計
和測試執行
的同時性
。 - 目的是探索開發更多不同形態的測試方法,以便改善測試流程。
- 傳統的測試流程——“先設計,再測試”,通常是先進行需求分析,再製定測試計劃,接著梳理測試點,然後針對測試點設計好測試用例,最後執行測試。這種模式也帶來一些問題,比如在測試目標不明確的情況下,需求變換頻繁,輸出範圍過大等,經常可能出現測試遺漏,而且在一定程度上也限制了測試思維的發散。而探索式測試的出現,正好彌補了傳統測試中出現的這種問題。
探索式測試的核心思想:
- 探索式測試強調獨立測試人員的
自由
和責任
。測試人員應該為個人和團隊負責,調動所有能量,發揮人的靈活性,在整體上持續優化個人和團隊的產出。 - 探索式測試建議在整個專案過程中,將
測試相關學習
、測試設計
、測試執行
和測試結果分析
作為相互支援的活動,並行地執行。實際上,人腦難以並行地執行多項任務。探索式測試旨在將測試學習、測試設計、測試執行和測試結果分析作為一個迴圈快速地迭代,以不斷收集反饋、調整測試、優化價值。
什麼樣的專案適合進行探索式測試?
-
SRS(Software Requirements Specification)
軟體需求說明書不完善
,時間緊迫
,沒有測試用例
作用:更快設計,更快執行,更低成本。
-
系統測試完成之後,還有剩餘時間的情況下,以探索式測試作為補充,嘗試系統測試覆蓋不到的場景,從而減少漏測,提高測試覆蓋率。
進行探索式測試的前提條件:
- 團隊對產品功能比較熟悉。(比如:做過同類型的軟體)
- 已經可以執行的待測軟體。(開發已經開發完成)
探索式測試在專案中如何落地?
-
快速學習需求:基於對軟體歷史版本的熟悉,對新版本功能快速學習,提出問題並進行澄清。
-
作出
測試計劃
:時間,範圍,團隊分工等。(如:表-論壇專案探索式測試計劃所示簡單的表格) -
利用
腦圖
形式,列出有哪些模組,覆蓋哪些場景,每個場景的注意事項,然後進行評審。 表-論壇專案探索式測試計劃
模組 | 時間 | 負責人 |
---|---|---|
註冊登入 | 6.23 - 6.24 | 測試小王 |
技術文章 | 6.23 - 6.25 | 測試小劉 |
問答貼 | 6.23 - 6.25 | 測試小李 |
-
探索:按照腦圖,執行探索的過程中,根據情況,逐步深挖(也是邊執行邊學習的過程)每條Path,更新並記錄(做出√或者×的標識)執行探索過程中走過的Path(帶著反思去執行測試)。
-
提交缺陷:把探索式測試過程中發現的缺陷提交到缺陷管理系統中,修復後迴歸。
-
報告總結:以簡單的表格,對BUG的分佈,數量,級別,進行統計和報告。(
測試報告
)
(二)探索式測試分類
探索式測試可分為四類:
-
自由式探索式測試
自由式顧名思義就是沒有約束,純粹從使用的角度出發,拋開規則、模式,測試人員可以任意順序和方式對軟體進行使用測試。這種測試通常會被選做冒煙測試用例。
-
基於場景的探索式測試
這種測試跟傳統的基於場景的測試(場景法)比較像,不同的是,在這種測試中測試人員會
擴大測試範圍
。例如1,對某搜尋框的測試: - 傳統的場景測試用例可能是: ① 輸入“襯衫”,預期結果是搜尋到襯衫相關的資訊; ② 輸入“風扇”,搜尋到風扇相關的資訊。 - 而基於場景的探索式測試,測試場景可能是: ① 輸入“襯衫”,探索搜尋結果; ② 貼上“123@”,搜尋結果; ③ 輸入一個亂碼,搜尋結果; ④ 輸入“襯衫”,搜尋結果後返回退到搜尋首頁再次搜尋。 例如2,對於一個批量下載功能:== - 傳統的場景測試用例可能是: ① 點選“選中全部檔案”按鈕,批量下載; ② 手動選擇要下載的檔案,批量下載。 ③ 測試是否支援跨頁批量下載; ④ 批量下載的個數:1,2,499,500,501,999,1000,1001…… …… - 而基於場景的探索式測試,測試場景可能是: ① 點選“選中全部檔案”,再手動取消勾選任意個數的檔案,批量下載; ② 點選“全選”按鈕,選中當前頁面的所有檔案,再切換到另一頁手動勾選任意個數檔案,批量下載; ③ 點選“選中全部檔案”,再取消,再手動勾選任意個數檔案,批量下載; ……
-
基於策略的探索式測試
這是一種比較依靠經驗的測試方法,簡單來說就是測試老手,融合自己的經驗、技能、感知等條件,結合自由式探索式測試,用自己積累下來的知識來指導測試,是一種經驗結合隨機性的測試。(類似於編寫測試用例時用到的
錯誤推斷法
,基於經驗和直覺推測程式中所有可能存在的各種錯誤,從而有針對性的設計測試用例。) -
基於反饋的探索式測試
反饋指的是當測試人員對被測程式做出指令後得到的響應結果。
基於這個結果,測試人員可以
調整自己的輸入
,以期望得到不同的結果
。 例如:在基於場景的探索式測試的描述中,輸入襯衫和風扇會得到不同的搜尋結果,而襯衫的搜尋結果就是對襯衫這個輸入的反饋,風扇的結果就是對風扇這個輸入的反饋。