1. 程式人生 > 其它 >該如何測客戶端專項測試?

該如何測客戶端專項測試?

整個行業現在越來越重視客戶端的專項測試了。像介面的效能測試、webview

測試、H5效能分析等,每一項都需要測試。而對於卡頓的分析、系統資源分析、耗電量測試及弱網測試這塊,也變得越來越重要了!後面也會有相關的文章更新。大家可以戳此關注哦~

** App啟動效能**

Activity是一個應用程式元件,提供一個螢幕,使用者可以用來互動為了完成某項任務。在一個android應用中,一個Activity通常就是一個單獨的螢幕,Activity上可顯示控制元件,也可以監聽並處理使用者的事件並做出響應,下圖是Android啟動app時發生的事情:

  • 建立一個Linux程序,Linux程序建立Android虛擬機器

  • 進行application onCreate的載入

  • 啟動主執行緒:進行activity的初始化,activity onCreate用於載入自身邏輯及傳送遠端資料請求和渲染介面

  • 載入動態頁面

** 使用**

從上面可以看出,app啟動會發生多個事件,測試人員需要知道整個環節是否出現問題,還需要了解到具體是哪個環節存在問題,把各個環節拆分成冷啟動,暖啟動,熱啟動,首屏啟動,含義如下:

• 冷啟動:從程序建立開始到介面的展示

• 暖啟動:相對於熱啟動要消耗更多資源。當用戶退出應用程式時,程序還會存在。暖啟動相較於冷啟動只是少了程序的建立

• 熱啟動:應用之間的切換

• 首屏啟動:第一次安裝啟動

標準:

• 冷啟動需要5秒甚至更長

• 暖啟動需要2秒甚至更長

• 熱啟動需要1.5秒甚至更長

整個啟動過程可以用adb工具進行分析,利用adb logcat獲取啟動資料,或者錄屏,使用ffmpeg拆幀分析。

adb logcat

首先定義一個變數,這個變數填寫用到的包名

package=com.xueqiu.android

清除快取資料

adb shell pm clear $package

停止程序

adb shell am force-stop $package

通過以上命令就做好了冷啟動的環境,下面啟動app並獲取資料。啟動App

adb shell am start -S -W $package/.view.WelcomeActivityAlias

• -S表示啟動之前先停止應用程序

• -W是表示等待對應的activity啟動完成

獲取資料

bash adb logcat |grep -i displayed

獲取的時間如下:

** 錄屏 + 拆幀**

使用adb logcat獲取到的時間不精準,無法得到具體的啟動時間,比如首屏啟動時間或者去廣告後的啟動時間,此時可以用錄屏,拆幀的方式分析啟動時間。

停止應用程序

adb shell am force-stop $package

錄製30秒的視訊,錄製的視訊會儲存到手機上

adb shell screenrecord --bugreport \--time-limit 30 /data/local/tmp/xueqiu.mp4 &

啟動應用

adb shell am start  -S -W $package/.view.WelcomeActivityAlias

等待視訊錄製完成(30s),將視訊從手機拉取到本地,下面命令中的“.”是指計算機的當前目錄:

adb pull /data/local/tmp/xueqiu.mp4 .

當前目錄會生成一個“xueqiu.mp4”的視訊檔案,ffmpeg是一款視訊處理工具,可用完成視訊的轉換,裁剪,拆幀等,利用ffmpeg對視訊檔案進行拆幀分析

ffmpeg -i xueqiu.mp4  -r 10 frames_%03d.jpg

“-r”引數指定每秒要拆多少幀,這裡將一秒拆成10幀。

最後人工統計時間。比如起始幀是200,結束幀是300,那麼中間載入時間是(300-200)*0.1,這個時間就是從啟動到廣告結束的時間:

** _
來霍格沃茲測試開發學社,學習更多軟體測試與測試開發的進階技術,知識點涵蓋web自動化測試 app自動化測試、介面自動化測試、測試框架、效能測試、安全測試、持續整合/持續交付/DevOps,測試左移、測試右移、精準測試、測試平臺開發、測試管理等內容,課程技術涵蓋bash、pytest、junit、selenium、appium、postman、requests、httprunner、jmeter、jenkins、docker、k8s、elk、sonarqube、jacoco、jvm-sandbox等相關技術,全面提升測試開發工程師的技術實力

點選獲取更多資訊