App效能測試之iTest
本文主要介紹下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懸浮窗許可權
圖3Assist服務啟動
圖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)檢視資料走勢圖
在主頁上,點選左上角的選單按鈕,或向右滑動螢幕進入選單或者直接點選主頁“趨勢圖”按鈕,進入資料管理頁面;
點選列表中的,檢視資料趨勢圖;
點選資料走勢圖頁面上方的下拉框選項,可以檢視相應的資料走勢圖;
圖15CPU圖
圖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//被測應用的privatedirty記憶體
/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 –niflytek.testTech.propertytool/.activity.BootActivity
2)開啟監控
依次執行如下兩條命令,注意替換紅字部分:
adb shell am broadcast -a changedir--essavedirhandTest(預設即是handTest目錄,如不做修改,可忽略執行)
adb shell am broadcast -a monitorStart --es monitorcpu,pss,net,battery,cpuTemp,fps,response--espkgcom.example.test--eiinterval1000
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命令獲取的不一樣或者監控記憶體與dumpsysmeminfo命令獲取的不一樣,在小範圍內的誤差是正常的不影響效能結果,若誤差較大的情況下,請使用其他監控工具做對比
由於流量監控功能不完善,導致耗電量統計時,無法統計UDP流量對應的耗電量。
長時間執行後,iTest可能會被系統殺死。解決方案:將iTest.apk放置在/system/app目錄下,並賦root許可權。
iTest受系統休眠影響,可能會暫停記錄資料,請測試之前正確設定手機引數
2、FAQ
本文轉載至:http://itest.iflytek.com/static/help/help.html