開發與維運

APP兼容性(2)- 揭祕巖鼠智能遍歷

概述

APP兼容性測試大部分採用的是通用的方法,就是在app內隨機操作。Android自帶的Monkey工具由於簡單方便,一直沿用到現在並在開發者中廣泛使用。但隨著在大規模的應用,原生Monkey一些弊端也隨之顯現出來。

原生Monkey的缺點導致測試效果和效率都不可控,如何改善這些問題呢?巖鼠在這方面重點投入進行了較多探索,開發了“智能遍歷工具”——利用UI自動化的方式獲取APP的控件,進行一個隨機的可控的遍歷,來達到儘可能覆蓋被測APP內所有的界面和控件的目的。

框架技術方案

基於UI自動化實現的Monkey遍歷工具主要分為以下2類
image.png

從以上對比,可以看到基於Uiautomator方式直接在手機端運行,更方便部署執行,效率和穩定性也更好。因此巖鼠選擇了這個方案進行改造。

當然在這裡面還有一個問題就是Uiautomator官方已經不在進行維護,已經被Uiautomator2替代,像主流的Appium等框架也都是基於Uiautomator2進行開發了。但當前Android即使最新版本的android Q也仍然還能夠使用Uiautomator,相關的api也基本能夠滿足Monkey遍歷測試的需求。

相比於Uiautomator2,Uiautomator的優勢是不需要安裝apk可以推送jar到手機端直接執行,避免了像Uiautomator2的框架都需要安裝2個額外APK的問題,特別是oppo,vivo等手機需要安裝密碼等導致的安裝成功率問題。

而Uiautomator2的優勢是後續官方的持續支持,更多更好用的API,可以獲得應用context從而獲得android的服務實現更多的功能。

巖鼠當前也正在逐步的演進,即將使用Uiautomator2來驅動測試。

遍歷技術方案

控件的遍歷方案是最核心的部分了。當然目標只有一個就是怎麼樣可以儘可能的覆蓋APP所有的控件和功能,執行到最多的代碼。

但遍歷過程可能會遇到很多問題,例如:

  • 如何探索到所有的可操作的控件,訪問到所有需要被測的activity?
  • 如何提高遍歷效率,避免控件過多的重複操作?
  • 如何屏蔽掉我們不想要的操作?
  • 如何限定在我們想要的測試範圍?
  • 如何解決登錄問題?
  • 如何評估測試效果?
  • 如何幫助後續復現問題?
  • 包括但不限於以上的種種問題都是在實現可控Monkey過程中可能會遇到的問題,目前還沒有一個統一的完美的解決方案,更多還是在實踐中不斷的改進和完善。

智能遍歷算法

智能遍歷流程

image.png

智能遍歷測試流程整體上是遵循業界比較流行的方式通過Uiautomator獲取當前頁面的控件進行智能分析,提取分析出可遍歷操作的控件。這樣的好處是不言而喻的,對比原生monkey,避免了大量的無效點擊,大大提高了單位時間內對App控件操作的覆蓋率,提升測試效率。

深度優先搜索(DFS)

保證有效的測試,核心是有效可靠的遍歷算法。根據github上的一些開源工具的研究發現,大部分的工具是使用深度優先搜索(DFS),原理就是限定能夠訪問的層級,然後遞歸的點擊記錄操作的控件,遇到走不到下一個界面時就回退到上一個界面循環下去。

聽上去很不錯,其實其中存在很多問題。例如 webview界面網頁產生大量的控件而且深度也是不可控的。測試中遇到崩潰跳出等導致的重新遞歸。各種界面如何判定控件是被訪問過的,都會對遍歷過程產生很大的影響。

對於簡單的APP這種遍歷方式還是很有用的,但對於複雜的存在大量動態內容的APP執行的效果就不好評估了。

巖鼠智能遍歷算法

巖鼠之前嘗試使用DFS算法,但是效果並不太滿意。因此自主開發了效果更優的智能遍歷算法。

巖鼠智能遍歷算法,主要是記錄頁面的控件信息,通過控件特徵信息的提取對界面的唯一性進行定義,並記錄了頁面之間訪問的關係。由於存在這些必要的訪問關係,我們可以更智能的瞭解到訪問過的頁面和測試路徑信息,避免了大量的重複點擊和實現新路徑的探索。

同時我們也可以對頁面進行定向干預,對指定頁面例如網頁的訪問,滿足加強特定頁面測試覆蓋的需求。

另外由於我們的測試是運行在手機上的,並不依賴於例如appium的框架進行測試,因此相對比而言不依賴於這些框架的點擊效率,整體測試效率的提升也是非常明顯的。

評估智能遍歷的效果

對於遍歷效果的分析,巖鼠智能遍歷工具提供了對於Activity級別的點擊覆蓋情況分析,可以知道具體訪問過哪些Activity以及對應的點擊次數。這個是可以通過巖鼠的報告頁面進行查看。
image.png

另一個評估效果的方式,是對每次操作和點擊位置的截圖以及對界面控件信息的記錄。但這對於在手機端執行的“智能遍歷”來說數據量比較大,特別是很多時候都是運行幾個小時,產生過幾千次的點擊在手機端保存這些信息不會太合適。不過巖鼠提供了實時的崩潰分析並進行崩潰點的錄像。可以滿足一定的崩潰定位需求,這個可以通過巖鼠測試報告進行查看。
image.png

另外平臺也提供了遍歷點擊操作日誌的下載,你可以看到測試過程中操作的activity以及控件的基本描述和操作類型,讓你對測試情況有一個大概的瞭解。
image.png

未來方向

  • 優化算法,提升APP控件遍歷覆蓋度和效率
  • 建立遍歷效果評估體系
  • 引入AI算法實現更智能的遍歷

免費試用

巖鼠平臺兼容性測試,當前開放免費試用,歡迎體驗
巖鼠雲設備平臺

系列文章:
APP 兼容性(1)- 概述

Leave a Reply

Your email address will not be published. Required fields are marked *