天天看點

移動性能測試 | 持續內建中的 Android 穩定性測試

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

心有多大,世界就有多大!

移動性能測試 | 持續內建中的 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、頁面加載時間等性能名額

生成報告

把安裝測試、登入測試、穩定性、性能等資料,繪制成報告展示.

平台收集結果

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

把腳本也分為子產品來開發,讓每個子產品沒有關聯性,後期比較友善維護.

移動性能測試 | 持續內建中的 Android 穩定性測試

持續內建

持續內建中最常用的工具是jenkins平台,jenkins可以建立job拉最新代碼進行打包,觸發後續的自動化測試.

由于自動化腳本已經子產品化了,是以使用了pipeline子產品把功能串聯起來.pipeline使用是的groovy文法,需要寫一個pipeline腳本檔案

移動性能測試 | 持續內建中的 Android 穩定性測試

使用的pipeline來建構自動化任務,好處在于很清晰的知道自動化腳本執行耗時和建構步驟.

移動性能測試 | 持續內建中的 Android 穩定性測試

執行政策

1.每天晚上定期執行,可以在jenkins設定定時器.

2.送出代碼自動觸發自動化測試job.

2.手動觸發.

報告展示

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

完成自動化測試報告會自動上報到測試平台儲存,為後續的資料統計做準備.

應用基本資訊

移動性能測試 | 持續內建中的 Android 穩定性測試

Monkey覆寫率

移動性能測試 | 持續內建中的 Android 穩定性測試

記憶體、cpu監控

移動性能測試 | 持續內建中的 Android 穩定性測試

崩潰日志、崩潰圖檔

!

移動性能測試 | 持續內建中的 Android 穩定性測試

平台彙總

可以在平台中檢視自動化測試産生的崩潰日志和版本崩潰對比趨勢.平台也可以檢視每次自動化報告,出現崩潰問題直接把報告位址發給開發即可,省去了複制粘貼崩潰log的過程.

移動性能測試 | 持續內建中的 Android 穩定性測試

結語

使用這種方式已經在幾個版本中發現了不少崩潰問題,也累計了不少資料.希望自動化測試的同時,還能擷取更大的價值.

移動性能測試 | 持續內建中的 Android 穩定性測試

更多優秀内容及資料可點選擷取

連結文字