APP兼容性測試大部分採用的是通用的方法,就是在app內隨機操做。Android自帶的Monkey工具因爲簡單方便,一直沿用到如今並在開發者中普遍使用。但隨着在大規模的應用,原生Monkey一些弊端也隨之顯現出來。
git
優勢 | 簡單方便一條命令就可以使用,測試穩定;每秒鐘能夠發送大量操做事件,壓力足夠,經常能夠發現正常使用沒法發現的問題 |
---|---|
缺點 | 測試過程不可控,經常點擊到咱們不但願點擊到的控件和界面,例如隨意點擊系統設置,關閉開發者等;單位時間內對app內全部控件的覆蓋狀況可能並不如意;測試過程信息沒法記錄,以致於發現問題後沒法分析問題產生的過程和緣由 |
原生Monkey的缺點致使測試效果和效率都不可控,如何改善這些問題呢?巖鼠在這方面重點投入進行了較多探索,開發了「智能遍歷工具」——利用UI自動化的方式獲取APP的控件,進行一個隨機的可控的遍歷,來達到儘量覆蓋被測APP內全部的界面和控件的目的。
github
基於UI自動化實現的Monkey遍歷工具主要分爲如下2類
web
技術方案 | 基於Macaca或者Appium作驅動,在PC端實現遍歷算法進行測試 | 基於Uiautomator驅動在Android手機上實現遍歷算法進行測試 |
---|---|---|
表明 | Appcrawler, Macaca自帶的NoSmoke | Maxim |
優勢 | 1.不須要太關注驅動,利用現有ui自動化框架 2.測試結果數據便於在PC端保存 |
1.利用Uiautomator能夠方便快捷執行monkey,兼容性好 2.測試效率和穩定性更高 |
缺點 | 比較依賴框架,效率和穩定性更差一些 | 測試結果數據可能巨大,很差保存在手機端 |
從以上對比,能夠看到基於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全部的控件和功能,執行到最多的代碼。
但遍歷過程可能會遇到不少問題,例如:api
包括但不限於以上的種種問題都是在實現可控Monkey過程當中可能會遇到的問題,目前尚未一個統一的完美的解決方案,更多仍是在實踐中不斷的改進和完善。
markdown
智能遍歷流程
app
對於遍歷效果的分析,巖鼠智能遍歷工具提供了對於Activity級別的點擊覆蓋狀況分析,能夠知道具體訪問過哪些Activity以及對應的點擊次數。這個是能夠經過巖鼠的報告頁面進行查看。
框架
巖鼠雲真機和兼容性測試服務,正在限時免費體驗中,歡迎試用和交流!
yanshu.effirst.com/
長按識別二維碼,關注咱們,更多產品資訊,技術乾貨分享
工具