解鎖探索式測試:發展階段、相關類型、優秀實踐
譯文【51CTO.com快譯】
什么是探索性測試(Exploratory Testing)?
在探索性測試中,測試人員會在沒有既定計劃的情況下去檢查目標系統,以發現用戶在瀏覽網站或使用應用程序時,可能遇到的各種缺陷。此方式應盡量能夠模仿最終用戶的各種自由選擇,也就是說:在該過程中,測試人員可以自行遍歷軟件的各項功能,以獲悉用戶的體驗質量。因此,探索性測試有助于驗證系統是否按照預期進行運作,而且能夠保障用戶在使用的過程中得到輕松愉快的感受。
探索性測試的階段
#1對于缺陷進行分類
- 基于相似的軟件,分類常見缺陷(請參見:https://dzone.com/articles/about-the-chances-to-detect-visibility-bugs-in-con)。
- 分析并記錄此類缺陷的根本原因。
- 開發測試方案以測試這些缺陷。
#2創建測試章程
測試章程應當包括如下方面:
- 需要測試哪些功能。
- 如何開展測試。
- 尋找什么缺陷。
- 測試時需要記住哪些指標。
#3時間盒(Time Box)
時間盒的重點是測試人員如何測試和處置系統的響應。
- 測試人員在特定的時間范圍內(通常為90分鐘)進行上述測試。
- 在測試時間段內不應出現間斷。
- 如有必要,可以延長或減少時間范圍(通常取決于測試的進度)。
#4評審結果
- 對于已識別的缺陷進行分類。
- 評估各類缺陷。
- 記錄存在的問題。
#5報告
- 編譯輸出結果。
- 根據測試章程,將實際的測試結果與預期的結果進行比較。
- 確定是否需要引入其他方面的測試。
有關探索性測試的實用提示
- 可以將軟件分為多個模塊,以簡化測試的復雜度,并提高測試的覆蓋率。
- 列出所有需要測試的功能清單,以確保不會遺漏任何細節功能。
- 優先測試基本的用戶功能方案。接著擴展性地在測試過程中添加更多的檢測點。
- 根據測試章程中列舉的標準,逐一檢查產品的圖形用戶界面(Graphical User Interface,GUI)。
- 明確地在探索性測試會話中列舉出待測任務。
- 準確記錄需要測試的內容,測試原因,同時包括如何評估其運行質量。
- 記錄在測試期間所發現的各項問題。
- 對接專職的測試人員,以進行有效的測試。
- 創建盡可能多且詳盡的測試相關文檔。
- 如有可能,請運行多種測試,以最大程度地提高測試覆蓋率。
探索性測試的類型
(1)自由式(Freestyle)探索性測試
此類探索性測試被視為按需采取的臨時性方法(請參見:https://dzone.com/articles/using-ad-hoc-scripts-in-your-automated-database-de),因此它既無固定的規則,也沒有對應的結構和組織。通過快速瀏覽目標應用,測試人員可以驗證在其他環節測試人員所獲取的成果,調查特定的缺陷,以及進行快速的冒煙測試(smoke test)。
(2)基于場景(Scenario-Based)的探索性測試
這種形式的探索性測試基于實際的用戶場景。在此類測試中,測試人員會采用所有可能的方式,來試探軟件以匹配不同的場景。可見,此處的重點是:測試盡可能多的場景,以提供最大的測試覆蓋率。
(3)基于策略(Strategy-based)的探索性測試
通常,此類測試會被分配給已經熟悉了被測試軟件的測試人員。其中包括:邊界值分析、等效(equivalence)技術和各種基于風險的技術,以識別那些更具挑戰性的缺陷。
在敏捷開發中采取探索性測試的優勢
- 在開發的前期階段提供了快速、且盡早的反饋。
- 有助于發現各種現有缺陷。
- 由于不需要腳本,因此軟件項目中的開發人員、測試人員、設計師和任何其他利益相關者,都可以發起并執行探索性測試。
- 在應用程序的迭代編碼過程中,探索性測試非常適合于測試那些新的功能,而自動化測試則專注于回歸測試、以及向后的兼容性測試。
- 如果項目的需求并不確定,那么探索性測試則非常適合在有限的時間內,測試各種新的需求,以快速提供各種實用的結果。
探索性測試的優秀實踐
- 了解您的客戶:所有軟件測試都關乎于檢查產品的質量,以提供最大的用戶滿意度。因此,為了執行有效的探索性測試,了解客戶的專注點是必不可少的。也就是說,我們應當從客戶的角度,來開展有意義的探索性測試。當然也請記住:不要狹隘地僅從單個客戶的角度去考慮問題。您可以將最終用戶根據他們的年齡、性別、經濟狀況、偏好、以及其他方面分類,以模擬不同的方式使用同一個被測軟件。同時,測試人員也必須能夠跳出技術人員的角色,以一般用戶的心態去體驗與試用。
- 使用真實的瀏覽器和設備:眾所周知,沒有一種模擬器能夠提供真實的用戶環境(請參見:https://dzone.com/articles/real-user-monitoring-vs-synthetic-monitoring-which)。而在實際場景中,用戶只會在真實的設備上,而不是在那些模擬器虛擬出的測試設備上使用目標軟件。因此,也請您務必在真實的設備上運行探索性測試。當然,如果軟件企業由于資金預算不夠,甚至無法創建和維護內部實驗環境,以供測試人員使用的話,那么請您可能地按需選擇那些基于云端的測試服務。
- 了解競爭對手:俗話說:知己知彼百戰不殆。通過了解您的競爭對手及其產品的功能與缺陷,測試人員可以更有針對性的測試手頭上的產品。當然,這可能更需要整個團隊在開發階段就引起足夠的重視。例如:當我們獲悉“友商”的某個競品應用,經常會被用戶投訴購物車功能上的設計缺陷時,那么測試人員就應當著重且謹慎地測試手頭產品的購物車功能,并確保不會重蹈覆轍。
其實,探索性測試是每個軟件測試過程的重要組成部分之一。我們應當將其納入測試的整個生命周期中,以確保本團隊能夠推出功能齊備、且讓用戶滿意的軟件產品。
原文標題:Exploratory Testing: A Detailed Guide,作者:Shreya Bose
【51CTO譯稿,合作站點轉載請注明原文譯者和出處為51CTO.com】