1. 程式人生 > 實用技巧 >移動效能測試 | 持續整合中的 Android 穩定性測試

移動效能測試 | 持續整合中的 Android 穩定性測試

來自學院內部學員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的過程.

結語

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

點選領取:自動化+側開+效能+簡歷+面試核心教程資料

http://qrcode.testing-studio.com/f?from=bokeyuan&url=https://ceshiren.com/t/topic/3595