如何實現高度自動化測試?

安卓綠色聯盟發表於2018-11-28

隨著計算機技術的發展和軟體技術的提高,軟體已廣泛應用於各行業。軟體產品應用範圍擴大導致軟體質量管理變得愈加困難。軟體測試是提高軟體質量的重要手段之一。現階段可採用的軟體測試方法包括人工測試和自動化測試,自動化測試相比人工測試可大幅提高測試效率。

自動化測試是把以人為驅動的測試行為轉化為機器執行的過程,需要工程師人工編寫用例和指令碼,配合測試工具及框架搭建來實現,框架和工具本身只能做到測試的執行。

自動化測試究竟可以實現多大程度的自動化?

image

重新定義自動化測試

首先,將測試抽象成四大步驟,分別為構思測試意圖、執行測試用例、校驗預設驗證、發現未知問題。

image

根據以上四步,參照SAE《自動駕駛分級標準》,將自動化測試分為六個級別。

image

大部分自動化框架都在L0到L2的級別,L3的明顯差異在於測試意圖的構思是由自動化系統而非工程師完成,並且有一定的未知問題發現能力;當發現未知問題從工程師操作到完全由系統取代則基本可以稱為高度自動化測試,即L4;當自動化測試系統在任何情況下都可以替代人類工程師完成測試,即只需給測試系統提供一個應用即可自動完成測試時,即達到L5,這便是對自動化測試的重新分級。

L3:特定條件自動測試

行為資訊收集

線上下測試或公司內測階段,可以通過嵌入SDK,以HOOK的方式獲得六種在手機日常使用過程中常見的事件,包括Button的點選、物理按鍵等,聚合成行為資訊。通過頁面聚類進行操作聚類,傳送給服務端並進一步挖掘使用者意圖。

image

行為意圖挖掘

在挖掘使用者行為意圖前,首先需根據裝置、操作序列及事件進行分組和排序,還原使用者行為鏈,然後通過對原始使用者行為鏈進行白名單過濾(過濾掉無用的行為資訊)、誤點過濾(過濾掉短時間內的重複操作)、迴環過濾(過濾掉短時間內的重複進入同一頁面),來挖掘使用者的真實意圖。

image

路徑選擇策略

通過資訊收集和意圖挖掘收集形成行為鏈後,就可以通過這些行為鏈來訓練出一個路徑選擇模型。它的作用是當測試者達到應用某介面時生成跳轉矩陣,後可根據跳轉矩陣進行對應操作,由於意圖挖掘過程進行了去噪操作,所以在訓練路徑選擇模型時會損失多樣性,我們在頁面跳轉後加入了N階隨機遊走來重新新增多樣性。

image

用例生成、執行與校驗

明確的資訊收集便於自動化指令碼轉化,在轉化為自動化指令碼後,系統會使用兩種方式,即基於座標的同步或基於影象識別匹配的同步,來在不同的終端上同步執行測試,甚至可以跨系統同步執行。執行完成後,系統會使用預先通過一個基於Q-Learning的遍歷工具產出的“頁面-控制元件”校驗集來對頁面進行基本校驗,並根據控制元件切圖來進行影象識別對比的視覺校驗。

image

發現未知問題

發現未知問題的思路大致是通過歷史BUG來訓練出介面異常問題的識別模型(包括留白、錯字、字元控制元件遮擋、圖片顯示異常等等),並通過該模型判斷頁面的正常或是異常未知問題,同時不斷迭代優化模型。

image

到此為止,我們就可以通過上述的這種方式來實現由系統自動構思測試意圖,自動編寫測試指令碼並執行、自動校驗預設問題,並具備了一定未知問題的發現能力,達到了L3級別的自動化測試能力。

那麼,如何更進一步,實現L4的自動化測試能力呢?

L4:高度自動測試

到目前為止,還沒有任何組織宣稱實現L4級別的自動化測試能力,我們也不例外,所以這裡只是給大家描述一下實現L4級別自動化測試的思路和思考。

L4級別自動測試的關鍵詞是理解,它通過頁面元素特徵去認知頁面裡有什麼,對應用的結構和作用建立認知;可以根據自己的歷史經驗判斷應用的表現是否正確;能夠遍歷應用並知道應用裡所有的頁面和功能如何表達;並且具備多種方式的操作能力,適應現代化應用的互動方式。

以此,它像一個人類3-5歲孩子一樣,能夠自行探索和理解一個應用,並能夠適應應用的變化而自我進化。

image

關注安卓綠色聯盟公號,回覆關鍵字“17”,獲取更多資訊

相關文章