探索性測試:如何利用經驗知識擴充ET測試技能辨認故障?

博為峰網校發表於2022-07-11

傳統認知中的軟體測試是一個使用測試用例設計技術設計用例並執行測試用例的過程。 加我VX:atstudy-js 回覆“測試”,進入 自動化測試學習交流群~~

  測試用例技術的目的是確保能夠更多地覆蓋、檢測軟/硬體錯誤,減少冗餘測試。自動化測試或多或少地被認為是機械地執行測試指令碼,將預定義的測試用例輸入被測系統,對比系統輸出和預期結果。

  然而,在實際的工程實踐中我們會發現,現實世界的測試很少是基於嚴格、系統、以及完成 去執行預定義的測試用例。

  相較於傳統的測試方法,探索性測試(ET)方法更具創造性。

  測試設計、執行和學習並行,不斷地學習、反饋、最佳化測試方法並在實踐中應用。但是ET通常被認為是一種經驗類方法或錯誤猜測法,更多地依賴隱性的經驗知識,我們不否認ET的這個特點。

  容易理解的是:累積的經驗知識可以幫助我們更好地進行測試設計,可以幫助我們更好地辨認測試過程中的異常或故障(例如,從日誌中觀察到某個WARNNING輸出,如何確定它是否是軟體故障導致的異常輸出)。

  ——這也是本篇文章討論ET圍繞的核心問題:如何辨認故障。問題關鍵是:如何利用經驗知識擴充ET測試技能辨認故障。

  那麼,我們需要哪些經驗知識呢?在這裡,總結出了三大類經驗,是我們提高ET測試技能時需要的,分別是:領域知識、系統知識、通用軟體技術知識。

領域知識

  領域知識又可以分為使用者視角和應用領域視角。

  什麼是使用者視角?在測試設計過程中我們經常提倡的一個理念是:從使用者角度使用我們的產品。

使用者視角

  使用者視角要求了我們需要學習和了解真實使用者的使用習慣、方式,和在真實場景中我們產品的互動方式和內部執行情況。

  因此,使用者視角又可以分為:產品使用過程關聯的上下文情景,上下文中的資訊內容和表示形式,以及使用者真實使用案例。

 1、產品使用過程關聯的上下文情景

  測試人員通常是系統本身的常用使用者,具有豐富的使用經驗。

  當測試人員意識到他們使用程式方式與實際使用者使用方式相沖突的時候他們會很快地改變測試策略或測試方法,而所有的測試失敗都與測試情景和測試上下文關聯。

  因此,基於此我們在進行ET測試的時候可以使用“產品使用過程關聯的上下文情景“經驗知識提高我們的測試技能。

  詳細來說,主要就是兩點:模擬使用者真實使用場景,準備儘量真實的測試資料進行測試。

 2、上下文中的資訊內容和表現形式

  當測試人員模擬真實場景進行測試的時候,需要理解和觀察情景中展現的上下文資訊內容和表現形式。

  當軟體系統以一種“不盡人意”的方式呈現資料、展現結果,或者展現錯誤的、有缺陷的資料時,那麼可能會提醒測試人員,選擇更多測試資料樣本進行測試,觀察軟體系統的表現方式。

  例如:某個web系統頁面按鈕點選無反應,或者某個輸入框輸入特殊字元導致頁面佈局錯亂。這些案例都可以成為激發測試人員發散性思考的閃光點。

3、客戶真實案例中披露的問題

  當測試人員進行探索性測試時,瞭解具體的真實案例、客戶所在,按照客戶的使用習慣測試軟體系統,能夠提高識別軟體系統風險的能力。

  例如:當測試人員測試一個新特性的向前相容性時,匯入了一個歷史的複雜資料導致軟體系統異常。這樣的案例在客戶真實情境中不乏多見,利用客戶真實案例評估或測試改變的特性有助於披露隱藏在軟體設計或開發中的風險問題。

應用領域視角

  應用程式域視角代表的是應用領域的相關知識,包括測試人員掌握的自然知識和應用程式的理論、規則和技術細節域,而不是使用上下文。

  我們把這透視分為兩種:概念性知識學科內容,以及學科的實用知識物質和工具。

 1、概念性知識和學科內容

  概念性知識和學科內容在此可以通俗理解為測試人員掌握的一些邏輯推理知識、測試經驗等。

  例如:測試人員根據某個web系統的頁面提示,推理、篩選得知是應用前端問題還是應用後臺程式問題。

 2、對工具的實用性知識

  工具可以幫助測試人員提高測試效率,對工具的熟悉和操作的熟稔度直接影響測試效率和測試結果分析。使用工具進行測試,測試結果可以作為測試人員的參考。

  總的來說,訓練測試人員的探索性測試思維需要測試人員瞭解相關的領域知識。圖表總結,該部分知識如下:

系統知識

  應用系統知識的兩個主要視角:互動特性和系統視角,以及單個特性和功能視角。

  測試人員的對系統及其相關知識和理解特徵可以進一步分為知識的系統的工作機制、邏輯和互動相關知識。

互動功能和系統內視角

  測試人員對系統及其相關知識和理解特徵可以進一步分為知識系統的工作機制、邏輯和互動,以及歷史版本故障。測試人員知道特性是如何一起工作的以及系統的基本工作邏輯。

  測試人員瞭解系統應該如何對某些事物做出反應,輸入資料或配置的各種變化和可以基於這種理解來認識失敗。

  重點是不一定是細節的準確性,而是系統應該如何反應、系統是否有反應、反應是否正確。

  例如:一個測試人員正在測試一個模擬現實生活的系統基於工程模型的情況。在這種情況下,透過觀察系統的響應測試人員意識到系統未能正確反應以變化的模擬引數和效能該模型。系統要麼完全沒有反應,要麼只反應了一部分。

  值得注意的是:瞭解工作機制、邏輯和互動是透過觀察整體反應來應用的,使系統的配置、狀態或資料發生變化或者透過模擬現實的使用場景。這方面的知識也被應用於識別發生在不是直接在測試焦點中的區域,例如無意的變化。

  最後,當系統知識作為測試人員一個新特性時,將一致性啟發式以相似的特徵和故障識別為基礎,同一系統的新特性與類似特性不一致。

單個特性和功能視角

  單個特性和功能視角幾乎是每個測試人員經常測試的類別,針對單個特性設計測試用例進行測試。

  在此,我們說明探索性測試技能的時候給大家建議的是:鍛鍊測試人員分析日誌的能力,要有敏感的“嗅覺”,能夠及時發現日誌中的異常列印和錯誤資訊,並逆向追蹤導致系統異常的場景、程式碼等。

  總結一下,本部分系統知識的分類和知識型別及使用方式如下表所示:

  通用軟體工程知識

  通用軟體工程知識指的是能夠明顯發掘的錯誤,不需要經過深層分析。

  例如:GUI層面的功能錯誤、佈局錯誤,很容易讓測試人員一目瞭然判斷它是否是故障。

  又例如:功能層面的可用性,可以讓測試人員參考使用者手冊很容易判定它是否滿足使用者需求,是否簡單可用。

  它又可以分為通用正確性視角、可用性視角和直接錯誤視角。具體如下表所示:

 總結

  探索性測試是一種自由、靈活的測試風格,近年來被許多測試人員推崇,相應地也誕生了一些測試技巧,如區域性探索性測試方法和全域性探索性測試方法。

  雖然我們不斷強調探索性測試不是單純的經驗性測試,但卻也不能否認豐富的經驗為探索性測試帶來的好處。

  本文從3個角度簡單闡述瞭如何豐富探索性測試經驗,加強探索性測試技能,希望能對大家有所幫助。

       最後:

       可以到我的個人號:atstudy-js,可以免費領取一份10G軟體測試工程師面試寶典文件資料。以及相對應的影片學習教程免費分享!其中包括了有基礎知識、Linux必備、Mysql資料庫、抓包工具、介面測試工具、測試進階-Python程式設計、Web自動化測試、APP自動化測試、介面自動化測試、測試高階持續整合、測試架構開發測試框架、效能測試等。

       這些測試資料,對於做【軟體測試】的朋友來說應該是最全面最完整的備戰倉庫,這個倉庫也陪伴我走過了最艱難的路程,希望也能幫助到你!

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31407649/viewspace-2905219/,如需轉載,請註明出處,否則將追究法律責任。

相關文章