本文主要介紹下App性能測試工具iTest_V4.7的使用。
功能簡介
1、監控Andorid系統(支持手機,平板,電視,車機等智能終端設備)以及應用app的cpu、內存、流量、電池、幀率、頁面耗時等數據;
2、懸浮框實時顯示被測應用或者整機的狀態指標;
3、數據走勢圖展示統計結果;
4、數據自動保存至文本,可快速導入Excel;
5、支持多進程應用的性能監控,例如靈犀語音助手;支持單進程性能監控;支持自定義進程性能監控
6、支持性能監控告警;
7、支持手工測試和自動化測試,自動化測試時,可發送adb shell命令遙控iTest。
8、獲取android底層的linux進程占用的cpu和內存。
9、支持查看設備基本信息、設備的動態信息
10、支持cpu模擬、內存模擬、弱網模擬等極限環境模擬
11、支持logcat日志本地獲取
12、支持應用安裝包離線分析
13、支持monkey
基本功能使用說明
1、手工測試方式
1) 授權
自android6.0以后,谷歌對權限做了一些管控,應用在需要用戶授權的情況下,功能才能正常的運行;因此為了確保iTest能夠正常的運行,請按照iTest提示對iTest進行授權:
圖1 存儲、電話權限
圖2 懸浮窗權限
圖3 Assist服務啟動
圖4 輔助功能權限
圖5 開啟GPU
2)用戶注冊登錄功能
打開iTest應用后,頁面跳轉至登陸頁面,請填寫用戶名密碼進行登錄。賬號可以直接登錄iTest服務端。
圖6 登錄頁面
如果沒有登錄賬號,請點擊注冊按鈕來進行用戶注冊,其中用戶名、密碼、郵箱是必選的,qq和微信可二者選一進行填寫,注冊完成后請登錄郵箱激活賬號。
圖7 注冊頁面
3)選擇被監控的應用
進入首頁,先點擊“添加”按鈕,從跳入的監控應用界面中找到並點擊被測應用,或在搜索框中輸入應用的名稱,或者只輸入應用名稱中的個別文字,即可篩選。
圖8 首頁
圖9 監控應用頁面
4)選擇監控指標
在首頁中,指標默認已選擇cpu、內存、網絡三項,點擊分享解鎖后,可解鎖更多指標以及小工具,請根據自己的場景測試需要,選擇需要監控的指標
圖10 分享前指標
圖11 分享后指標
Cpu: 如果被測對象為整機,則數據表示為整機的cpu占用百分比;如果被測對象為應用,包含應用的CPU占用百分比與全局CPU占用百分比,對於單進程應用,該數據表示該應用的CPU占用情況;對於多進程應用,根據您設置的進程篩選規則,如果為根據包名篩選進程,該數據表示應用主進程的CPU占用情況,如果為根據uid篩選進程,該數據表示應用所有的進程cpu占用情況,如果為根據配置文件篩選進程,該數據表示配置的進程cpu占用情況,當發生進程切換時,iTest能夠自動切換到新的進程數據。
內存:如果被測對象為整機,則數據表示為整機的內存占用情況和內存剩余情況;如果被測對象為應用,包含應用的內存占用與全局內存剩余情況,對於單進程應用,該數據表示該應用的內存占用情況;對於多進程應用,根據您設置的進程篩選規則,如果為根據包名篩選進程,該數據表示應用主進程的內存占用情況,如果為根據uid篩選進程,該數據表示應用所有的進程內存占用情況,如果為根據配置文件篩選進程,該數據表示配置的進程內存占用情況,當發生進程切換時,同cpu一樣,iTest能夠自動切換到新的進程數據。應用內存指標包括兩部分,進程的PSS(Proportional Set Size,即實際使用內存)內存、Private Dirty(私有內存)內存。
網絡:包含應用上下行速率與累計流量以及全局上下行速率與累計流量。屬於應用維度數據,根據監控對象決定。點擊右側清零按鈕可以清空累計數據。
電池:包含設備瞬時電流、電流均值以及電池的溫度。屬於全局維度數據。點擊右側清零按鈕可以清空電流累計數據。
Cpu溫度:該數據表示cpu的溫度,屬於全局維度數據,部分設備是以電池溫度為准。
幀率:包含應用實際幀率,延遲幀數、1秒內單幀最長延遲時間與延遲幀數占所有幀數的百分比。屬於應用維度數據,即根據當前窗口所在activity獲取。目前iTest是根據設備gfxinfo信息計算1秒內超時幀時間,從而反推出實際幀率,所以在接近靜止的情況下, 部分幀率可能顯示有誤。推薦在滑動或頁面切換等動態場景下進行幀率測試。
響應耗時:包含應用點擊的響應耗時與刷新耗時數據。屬於應用維度數據,基於當前頁面所在activity。用戶點擊控件(記錄時間a)界面發生變化(記錄時間b)頁面停止變化(記錄時間c),其中b-a為響應耗時,c-a為刷新耗時。
5) 進程篩選設置
進程篩選,在性能監控中,你或許只關注應用的主進程性能,或許你關注應用的所有進程性能,也或許你只關注應用所有進程中的幾個進程的性能,那么如何才能做到這些場景下的性能監控呢?因此我們提供了以下幾種進程篩選方式。
根據包名篩選
通過包名獲取到被監控應用的主進程,此時監控到的性能數據為應用主進程的性能數據
根據uid篩選
通過包名獲取到主進程后得到了主進程的uid,通過uid篩選出應用的子進程信息,通過此種方式,可以監控到應用的所有進程性能數據
根據配置文件篩選
配置文件ThreadFilter.txt內容格式如圖所示,FilterHead代表某App監控的開始部分,其中的內容每行代表一個進程,FilterTail代表該App監控的設置結束部分,當然對於多App和單app多進程監控需求同樣適用。配置好ThreadFilter.txt文件后,需要將該文件放置到手機/sdcard/AndroidPropertyTool4/目錄下即可,詳細見ThreadFilter詳解
6)場景設置
在啟動性能監控前,在圖7中標記處輸入場景標記。
圖12 場景標記
7)其他設置
點擊首頁左上角的菜單圖標,可進入菜單,見圖8。點擊“設置”即可選擇您要設置的參數。見圖9。
圖13 菜單圖
14 設置界面
在圖14中參數簡介:
監控間隔:默認每隔1000毫秒記錄一組數據;
顯示懸浮框:懸浮框位於屏幕左上方,實時顯示記錄的數據,6.0以后系統需要將懸浮窗權限打開,進入iTest后,根據應用提示即可;
橫屏顯示:默認關閉,豎屏顯示,
設置告警規則:觸發告警條件,執行告警策略。
設置監控進程規則:默認根據uid進行篩選
8)啟動監控/停止監控
點擊“啟動監控”按鈕,測試開始,按鈕自動變成“停止監控”;
點擊“停止監控”按鈕,測試停止,按鈕自動變成“開始監控”。
9)查看數據走勢圖
在主頁上,點擊左上角的菜單按鈕,或向右滑動屏幕進入菜單或者直接點擊主頁“趨勢圖”按鈕,進入數據管理頁面;
點擊列表中的,查看數據趨勢圖;
點擊數據走勢圖頁面上方的下拉框選項,可以查看相應的數據走勢圖;
圖15 CPU圖
圖16 內存圖
10)數據管理
數據存在android的外置存儲空間中(一般是指/sdcard目錄)
例如:
/sdcard/AndroidPropertyTool4/handTest/cup_com_baidu_BaiduMap.txt //被測應用的cpu
/sdcard/AndroidPropertyTool/handTest/cpuSystem.txt //系統cpu
/sdcard/AndroidPropertyTool/ handTest/pss_com_baidu_BaiduMap.txt //被測應用的private dirty內存
/sdcard/AndroidPropertyTool/ handTest/privateDirty_com_baidu_BaiduMap.txt /被測應用的pss
/sdcard/AndroidPropertyTool/handTest/pssSystemLeft.txt //系統剩余pss
/sdcard/AndroidPropertyTool/handTest/upflow_com_baidu_BaiduMap.txt //上行速率
/sdcard/AndroidPropertyTool/handTest/downflow_com_baidu_BaiduMap.txt //下行速率
/sdcard/AndroidPropertyTool/handTest/upflowSum_com_baidu_BaiduMap.txt //上線累計
/sdcard/AndroidPropertyTool/handTest/downflowSum_com_baidu_BaiduMap.txt //下行累計
/sdcard/AndroidPropertyTool/handTest/batteryAvg.txt //平均電流
/sdcard/AndroidPropertyTool/handTest/batteryTemperature.txt //電池溫度
/sdcard/AndroidPropertyTool/handTest/batteryInstant.txt //瞬時電流
/sdcard/AndroidPropertyTool/handTest/fps.txt
/sdcard/AndroidPropertyTool/handTest/fpsJunkCount.txt
/sdcard/AndroidPropertyTool/handTest/fpsMaxJunk.txt
/sdcard/AndroidPropertyTool/handTest/fpsJunkPercent.txt
/sdcard/AndroidPropertyTool/handTest/cpuTemperature.txt
/sdcard/AndroidPropertyTool/handTest/response.txt
/sdcard/AndroidPropertyTool/handTest/refresh.txt
/sdcard/AndroidPropertyTool/ handTest /uplaodSetting.json//上傳功能的標記文件,可忽略
/sdcard/AndroidPropertyTool/handTest/upload.tmp //上傳標記文件,可忽略
其中com_baidu_BaiduMap(百度地圖)為被測試應用的包名。
備注:
系統會將舊數據文件保存在帶時間戳的目錄中,例如:
/sdcard/AndroidPropertyTool4 /handTest_2020-01-01-12-12-12-357
在“數據管理”界面,可上傳、查看、刪除所有數據:
圖17 數據管理界面
2、自動測試方式
本工具支持以adb shell命令的形式啟動和運行。需要注意的是,office系列軟件可能會更改命令中的字符,導致命令不可用!請手工輸入命令,或從附帶的command文本中復制;另外iTest啟動后默認在未登陸的情況下進入登陸頁面,因此確保已經登陸,並且將相關權限打開,具體見2.1.1授權介紹
1)啟動首頁
adb shell am start -a android.intent.action.MAIN -c android.intent.category.LAUNCHER –n iflytek.testTech.propertytool/.activity.BootActivity
2)開啟監控
依次執行如下兩條命令,注意替換紅字部分:
adb shell am broadcast -a changedir --es savedir handTest(默認即是handTest目錄,如不做修改,可忽略執行)
adb shell am broadcast -a monitorStart --es monitor cpu,pss,net,battery,cpuTemp,fps,response --es pkg com.example.test --ei interval 1000
monitor:監控的指標,多指標情況下使用英文逗號分隔(cpu, pss,net,battery,cpuTemp,fps,response)
pkg:包名, 可用英文的逗號分隔多個包名。
interval:間隔(毫秒)
3)結束監控
adb shell am broadcast -a monitorFinish
4)打開或者關閉懸浮窗,在開啟監控前執行
adb shell am broadcast -a enableFloatWindow // 開啟
adb shell am broadcast -a disableFloatWindow // 關閉
5)其他命令見command
其它功能
1、設備基本信息
從菜單中,點擊“設備基本信息”,即可進入設備基本信息頁面。點擊導出按鈕,設備基本信息可導出為txt文本。
圖18 展開的菜單圖
19 設備基本信息頁面
2、設備動態信息
從菜單中,點擊“設備動態信息”,即可進入設備動態信息頁面。點擊導出按鈕,設備動態信息可導出為txt文本。
注意,由於數據是動態獲取並顯示的,在部分數據的獲取上比較耗時,請等待若干秒。
圖20 設備動態信息頁面
3、意見反饋
如果發現工具的bug,或有任何改進意見,請從菜單中點擊“意見反饋”,進入意見反饋頁面來告知我們。也可以根據“關於”頁面中提供的聯系方式聯系我們。謝謝!
圖21 意見反饋頁面
圖22 關於頁面
4、工具箱
工具箱中包含了一些小工具,通過在首頁完成分享后即可解鎖更多的小工具
圖23 工具箱
5、發現
6、版本新增了發現功能,在這里你可以學習別人的玩法,也可以將自己的玩法發布供別人學習。
圖24 發現圖
圖25 添加發現
iTest數據上傳功能
iTest服務端地址http://itest.iflytek.com/,iTest客戶端默認是在連接有效的wifi且已經登錄的情況下在性能監控結束的時候自動上傳至服務端,如果沒有登錄,將會跳轉至登錄頁面,完成登錄后,在數據管理頁面手動上傳測試數據
iTest使用注意事項
1、常見問題
電池電流,因MTK平台不區分充放電,都為負數;高通平台小於0處於放電狀態,大於0為充電狀態
如果遇到監控cpu與top命令獲取的不一樣或者監控內存與dumpsys meminfo命令獲取的不一樣,在小范圍內的誤差是正常的不影響性能結果,若誤差較大的情況下,請使用其他監控工具做對比
由於流量監控功能不完善,導致耗電量統計時,無法統計UDP流量對應的耗電量。
長時間運行后, iTest可能會被系統殺死。解決方案:將iTest.apk放置在/system/app目錄下,並賦root權限。
iTest受系統休眠影響,可能會暫停記錄數據,請測試之前正確設置手機參數
2、FAQ