來自學院內部學員 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/AppCrawler
Maxim
高速uiautomator控件解析算法的Android Monkey,支持多種模式運行.
https://github.com/zhangzhao4444/Maxim
UICrawler
基於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的過程.
結語
使用這種方式已經在幾個版本中發現了不少崩潰問題,也累計了不少數據.希望自動化測試的同時,還能獲取更大的價值.
更多優秀內容及資料可點擊獲取鏈接文字