大數據

移動性能測試 | 持續集成中的 Android 穩定性測試

來自學院內部學員 xinxi 同學的又一篇佳作,本文主要介紹了作者如何藉助開源工具進行 Android 的穩定性測試,並在持續集成中使用,希望對大家有所幫助。

心有多大,世界就有多大!
image.png
前言
談到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、頁面加載時間等性能指標

生成報告

把安裝測試、登錄測試、穩定性、性能等數據,繪製成報告展示.

平臺收集結果

在腳本的最後一步把測試報告上傳到服務端,由前端做報告展示.

把腳本也分為模塊來開發,讓每個模塊沒有關聯性,後期比較方便維護.
image.png
持續集成
持續集成中最常用的工具是jenkins平臺,jenkins可以新建job拉最新代碼進行打包,觸發後續的自動化測試.

由於自動化腳本已經模塊化了,所以使用了pipeline模塊把功能串聯起來.pipeline使用是的groovy語法,需要寫一個pipeline腳本文件
image.png
使用的pipeline來構建自動化任務,好處在於很清晰的知道自動化腳本執行耗時和構建步驟.
image.png
執行策略
1.每天晚上定期執行,可以在jenkins設置定時器.

2.提交代碼自動觸發自動化測試job.

2.手動觸發.

報告展示
報告展示把自動化測試結果繪製成html報告,使用的是flask服務的Jinja2作為報告模版.

完成自動化測試報告會自動上報到測試平臺保存,為後續的數據統計做準備.

應用基本信息
image.png
Monkey覆蓋率
image.png
內存、cpu監控
image.png
崩潰日誌、崩潰圖片

!
image.png
平臺彙總
可以在平臺中查看自動化測試產生的崩潰日誌和版本崩潰對比趨勢.平臺也可以查看每次自動化報告,出現崩潰問題直接把報告地址發給開發即可,省去了複製粘貼崩潰log的過程.image.png
結語
使用這種方式已經在幾個版本中發現了不少崩潰問題,也累計了不少數據.希望自動化測試的同時,還能獲取更大的價值.image.png
更多優秀內容及資料可點擊獲取鏈接文字

Leave a Reply

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