手機APP測試常用技巧(adb、性能、功能測試要點)

1. 弱網測試

1.1. 出現狀況
1.1.1. 高延遲,高丟包
1.2. Network Emulator Toolkit
1.2.1. 模擬網絡丟包場景
新增過濾器

新增一條鏈路

設置上傳

設置下載

設置配置生效

1.3. fiddler
1.3.1. 模擬網絡延時場景
電腦fiddler設置

手機設置
打開WiFi,與電腦處於同一局域網下+修好網絡+高級+手動、主機ip、端口+保存設置
模擬延遲

m_SimulateModem

設置配置生效

2. 內存測試

2.1. 內存泄露
2.1.1. 程序向系統申請分配內存空間後,使用完畢後未釋放,一直佔用內存單元,系統無法在使用該內存單元,直到程序結束
2.2. 內存溢出
2.2.1. 程序向系統申請的內存空間超過系統能夠給的
2.2.2. 大量的內存泄露會導致內存溢出

3. adb組成

3.1. client
3.1.1. 運行在電腦上,通過adb命令調用客戶端
3.2. server
3.2.1. 運行在電腦後臺,負責管理client和daemon的通信
3.3. 守護進程daemon
3.3.1. 運行在模擬器或Android設備的後臺

4. adb

4.1. 真機遠程調試(root權限)
4.1.1. 1.手機與PC連接,處於同一WiFi下
4.1.2. 2.adb devices檢測到設備
4.1.3. 3.adb tcpip 5555 確定手機和pc端的通訊端口號
4.1.4. 4.拔掉手機,adb connect 手機ip地址
4.1.5. adb shell netcfg
查看安卓設備ip(wlan0)
4.1.6. adb disconnect取消遠程調試
4.2. 什麼是adb
4.2.1. Android SDK的一個工具
4.3. 作用
4.3.1. 連接安卓手機和PC的一個橋樑
4.4. 功能
4.4.1. 安裝/卸載apk
4.4.2. 拷貝推送文件
4.4.3. 查看設備硬件信息
4.4.4. 查看應用出現佔用資源
4.4.5. 在設備執行shell命令
4.5. 命令
4.5.1. adb version
檢測版本
4.5.2. adb -help
查看幫助手冊
4.5.3. adb connect ip:port
連接設備
4.5.4. adb devices
檢測電腦連接安卓設備
4.5.5. adb pull <手機路徑> <本機路徑>
從手機中拉去信息放到本地電腦
4.5.6. adb push <本機路徑> <手機路徑>
從本地推送信息到手機上去
4.5.7. adb logcat
打印日誌
adb ;logcat > <日誌輸出位置>
4.5.8. adb shell
進入手機命令行模式
cd /sdcard
進入手機內部存儲路徑
exit
退出命令行模式
4.5.9. adb install <本地apk路徑>
安裝軟件
4.5.10. adb uninstall <應用程序包名>
卸載軟件
4.5.11. adb shell dumpsys window | findstr mCurrentFocus
adb shell dumpsys activity | find “mFocusedActivity”
查看當前運行應用程序信息
4.5.12. adb shell pm list package
查詢手機內所有應用程序的包名
4.5.13. adb start-server
啓動adb服務
4.5.14. adb kill-server
終止adb服務
4.6. logcat緩衝區
4.6.1. Radio
輸出通信系統的log
4.6.2. System
輸出系統組件的log
4.6.3. Events
輸出event模塊的log
4.6.4. Main
所有有Java層的log
4.6.5. adb logcat -b radio
輸出通信系統的log
4.6.6. 日誌分析
1.時間
2.優先級別
V Verbose
囉嗦 到最低級別 上線前關閉
D Debug
調試 用於調試信息 上線前關閉
I Info
信息 一般提示信息
W Warning
警告
E Error
錯誤 已經出現可能影響運行的錯誤
3.標籤tag
標明日誌發起者和方便日誌過濾
4.PID
進程id。進程號
5.日誌主體內容
4.6.7. bug定位
crash崩潰
FATAL EXCEPTION
ANR 應用無響應
ANR in
dropbox
多次ANR信息
/data/system/dropbox
Track
最近一次ANR信息
/data/anr/track.txt

5. 性能測試

5.1. 響應
5.1.1. 冷啓動:首次啓動app的時間間隔(只是啓動時間,不包括頁面加載)
adb shell am start -W packageName/ActivityName(絕對路徑,首個Activity)
ThisTime: 該Activity的啓動耗時;
TotalTime: 應用自身啓動耗時, ThisTime+應用application等資源啓動時間
WaitTime: 系統啓動應用耗時, TotalTime+系統資源啓動時間
5.1.2. 熱啓動:非首次啓動app的時間間隔(只是啓動時間,不包括頁面加載)
熱啓動:按back按鍵後再啓動adb命令
5.1.3. 測試標準
測試標準:冷啓動時間不超過1.5s, 熱啓動不超過1s.
5.1.4. 完全啓動:從啓動到首頁完全加載出來的時間間隔
5.1.5. 有網啓動:從發起跳轉,到頁面完全加載出來的時間間隔
5.1.6. 無網啓動:從發起跳轉,到頁面完全加載出來的時間間隔
5.1.7. charles抓包工具
除了截取請求還能進行單接口壓測,修改請求參數併發出請求,以及模擬無網,弱網,2G,3G,4G等。能解決app的很多專項測試。
限制網絡情況需要用到charles的一個功能:Throttle Setting
5.2. 內存
5.2.1. 測試點
空閒狀態:切換至後臺或者啓動後不做任何操作,消耗內存最少。
中強度狀態:時間偏長的操作應用。
高強度狀態:高強度使用應用,可以跑monkey來測試(通常用來測試內存泄漏)
內存泄漏:指應用裏的內存一直沒有釋放,內存一直增加 ,系統內存一直減少。
5.2.2. adb命令
adb shell dumpsys meminfo packageName

5.2.3. Emmagee性能測試工具
1、安裝Emmagee.apk,打開。
2、選擇需要測試性能的應用啓動
3、被測應用界面會展示內存、CPU、電流、流量等數據
4、stop Test之後,在本地SD卡中保存一份性能測試數據,可以從裏面獲取內存信息。
5、可以通過execl將數據轉化成圖表,更直觀的查看各性能指標的數據。
保存地址:/sdcard/Emmagee/******* .csv文件
可查看:cpu 內存 流量 電量 FPS(流暢度)是一個相對比較好的選擇,但是隻支持安卓6.0及以下的版本。
5.2.4. GT性能測試工具
使用與Emmagee大體一致,但是GT除了支持Android,同樣支持ios
支持Android,同樣支持ios。GT相對於Emmagee功能也更強大
:性能測試(CPU、內存、流量、電量、幀率/流暢度等等)、開發日誌的查看、Crash日誌查看、網絡數據包的抓取、APP內部參數的調試、真機代碼耗時統計
5.2.5. AndroidStudio
Android Monitor 可以檢測CPU 和內存,能夠繪製出變化圖,可以直觀明瞭的看出內存和cpu的變化曲線
Android Monitor ,有5個模塊 :logcat、Memory、CPU、Network、GPU。
關注點
1、退出某個頁面後,內存是否有回落。如果沒有及時回落,且程序自動GC或者手動GC,那便可確認有問題。
2、進行某個操作後,內存是否增長過快。如果增長過快,也有可能存在風險,需重複操作確認。
5.3. CPU
5.3.1. 測試點
1).在空閒時間(切換至後臺)的消耗,基本沒大應用使用cpu
2).在運行一些應用的情況下,cpu已佔50%的情況下,觀察應用程序佔用cpu的情況
3).在高負荷的情況下看CPU的表現(cpu佔用應是在80%以上)
5.3.2. 具體場景
1、應用空閒狀態運行監測CPU佔用率
空閒狀態:應用按Home鍵退到後臺,不再佔用系統的狀態(通常是滅屏半分鐘後),CPU佔用率=0%
2、應用中等規格運行監測CPU佔用率
中等規格:模擬用戶最常見的使用場景。CPU佔用率≤30%
3、應用滿規格長時間正常運行監測CPU佔用率
Monkey測試,CPU佔用率≤30%
4、應用正常運行期間監測CPU佔用率峯值
應用正常運行:打開應用進行基本操作,CPU佔用率≤50%
5.3.3. 測試方法
adb命令
top -m -s cpu |grep packageName

如果反覆進行某個操作,cpu佔用過高且一直無法釋放,那便可能存在風險
top cpu 參數
-m 顯示最大數
-s 按指定行排序
-t 顯示進程名稱
-n 在退出前刷新幾次
-d 刷新間隔
dumpsys cpuinfo |grep packageName
5.4. FPS
5.4.1. 應用的使用流暢度
Android設備的屏幕刷新率爲60幀/s,要保持畫面流暢不卡頓,要求每一幀的時間不超過1000/60=16.6ms
5.4.2. adb命令
1)打開手機:開發者選項—>profile GPU rendering —> in adb shell dumpsys gfxinfo
2) 操作要測試的apk
3) cmd窗口輸入命令:adb shell dumpsys gfxinfo packageName

含義
Draw: 表示在Java中創建顯示列表部分中,OnDraw()方法佔用的時間。
Process:表示渲染引擎執行顯示列表所花的時間,view越多,時間就越長。
Execute:表示把一幀數據發送到屏幕上排版顯示實際花費的時間。
Draw + Process + Execute = 完整顯示一幀 ,這個時間要小於16ms才能保存每秒60幀。
4) 得到一個矩陣數據,計算矩陣中幀率大於16的點所佔比例,即爲卡頓比
5)通過execl進行表格處理可以直觀的查看軟件的流暢度

5.5. GPU渲染
5.5.1. 測試方法
手機自動的Debug GPU overdraw
1)打開手機—>設置—>開發者選項—>Debug GPU overdraw—>show overdraw areas
2)打開被測的應用

5.5.2. 測試指標:
1、控制過渡繪製爲2x
2、不允許存在4x過渡繪製
3、不允許存在面積超過屏幕1/4的3x過渡繪製
5.6. 耗電量
5.6.1. 試前先看規定時間內手機正常待機下(重啓後待機)電量消耗爲多少。然後再啓動待測試APP看看消耗的電量增加了多少取差值。
5.6.2. 測試點
測試手機安裝目標APK前後待機功耗無明顯差異;
常見使用場景中能夠正常進入待機,待機電流在正常範圍內;
長時間連續使用應用無異常耗電現象。
5.6.3. 測試方法 :(先關閉所有的應用,再打開被測app)
1、使用第三方測試工具:Emmagee、GT等,只需要測試的電流靜置一晚,待機電流在正常範圍內即可。一般是被測應用對比待機電流<=2mA。
2、使用adb命令
adb shell dumpsys batterystats com.package

思維導圖

手機軟件測試

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章