來自學院内部學員 xinxi 同學的又一篇佳作,本文主要介紹了作者如何借助開源工具進行 Android 的穩定性測試,并在持續內建中使用,希望對大家有所幫助。
心有多大,世界就有多大!

前言
談到Android穩定測試,大多數會聯想到使用monkey工具來做測試.google官方提供了monkey工具,可以很快速點選被應用,之前我有一篇文章提到了monkey工具的使用,詳見:
https://testerhome.com/topics/15966.但是原生的monkey都是基于坐标随機點選的,能真正點選到控件的機率并不大,而且會跳出app.是以monkey工具并不合适在持續內建使用.
替代方案
主要有兩個思路做替代方案:
1.基于monkey工具寫一套腳本來執行monkey指令.之前也寫過這樣的腳本,把monkey指令封裝一下,但是問題在于的周遊頁面太少,做過統計周遊範圍15%到20%,是以這個方案并不完美.
2.尋找開源工具, AppCrawler、Maxim、UICrawler
AppCrawler
對app進行快速周遊,底層引擎基于appium,支援Android和iOS.
https://github.com/seveniruby/AppCrawlerMaxim
高速uiautomator控件解析算法的Android Monkey,支援多種模式運作.
https://github.com/zhangzhao4444/MaximUICrawler
基于Appium的AppUI周遊工具.
https://github.com/lgxqf/UICrawler三款工具都使用過,優缺點就不說了.目前使用是Maxim工具,Maxim代碼還沒有開源,作者會定期釋出新版本.主要是用其工具的兩個功能,基于解析控件的點選和崩潰時圖檔導出.
Maxim使用
需要把兩個jar包push到手機sdcard目錄下
adb push framework.jar /sdcard
adb push monkey.jar /sdcard
運作指令:adb shell CLASSPATH=/sdcard/monkey.jar:/sdcard/framework.jar exec app_process /system/bin tv.panda.test.monkey.Monkey -p com.panda.videoliveplatform --uiautomatormix --running-minutes 60 -v -v
政策:
模式 DFS --uiautomatordfs 增加深度周遊算法
模式 Mix --uiautomatormix直接使用底層accessibiltyserver擷取界面接口
模式Troy --uiautomatortroy控件選擇政策按max.xpath.selector配置的高低優先級來進行深度周遊
保留原始monkey
自動化腳本開發
選好了工具,接下來可以開發自動化腳本,預期腳本可以達到的效果.
修改源碼
在Android源碼中注入記憶體洩漏檢測代碼、卡頓檢測代碼、啟動時間測試代碼
建構app
根據環境參數執行打包指令建構app
安裝測試
使用adb指令進行安裝測試
登入測試
使用appium進行登入測試
穩定性測試
使用腳本啟動Maxim工具、擷取崩潰日志、擷取崩潰時圖檔
性能測試
測試記憶體、cpu、fps、頁面加載時間等性能名額
生成報告
把安裝測試、登入測試、穩定性、性能等資料,繪制成報告展示.
平台收集結果
在腳本的最後一步把測試報告上傳到服務端,由前端做報告展示.
把腳本也分為子產品來開發,讓每個子產品沒有關聯性,後期比較友善維護.
持續內建
持續內建中最常用的工具是jenkins平台,jenkins可以建立job拉最新代碼進行打包,觸發後續的自動化測試.
由于自動化腳本已經子產品化了,是以使用了pipeline子產品把功能串聯起來.pipeline使用是的groovy文法,需要寫一個pipeline腳本檔案
使用的pipeline來建構自動化任務,好處在于很清晰的知道自動化腳本執行耗時和建構步驟.
執行政策
1.每天晚上定期執行,可以在jenkins設定定時器.
2.送出代碼自動觸發自動化測試job.
2.手動觸發.
報告展示
報告展示把自動化測試結果繪制成html報告,使用的是flask服務的Jinja2作為報告模版.
完成自動化測試報告會自動上報到測試平台儲存,為後續的資料統計做準備.
應用基本資訊
Monkey覆寫率
記憶體、cpu監控
崩潰日志、崩潰圖檔
!
平台彙總
可以在平台中檢視自動化測試産生的崩潰日志和版本崩潰對比趨勢.平台也可以檢視每次自動化報告,出現崩潰問題直接把報告位址發給開發即可,省去了複制粘貼崩潰log的過程.
結語
使用這種方式已經在幾個版本中發現了不少崩潰問題,也累計了不少資料.希望自動化測試的同時,還能擷取更大的價值.
更多優秀内容及資料可點選擷取
連結文字