移動終端性能測試是測試手機終端是否符合特定性能指標的測試,包括有:內存、CPU、電量、流量、流暢度、時延等
測試准備:測試賬號、測試需求、測試用例、待測手機、待測應用包、測試工具、測試電腦
1. 時延篇:
A.Android
工具:ffmpeg
測試方法:
1)待測試的手機安裝應用后打開應用執行測試用例
2)Step1的測試用例執行的過程用另外一台手機進行視頻錄制
3)錄制好的視頻保存到電腦上,用ffmpeg工具執行腳本(ffmpeg.exe -i D:\ab\IMG_0425.MOV -r 30 -s 640x480 D:\ab/%d.png)將視頻轉換成靜態圖
4)通過靜態圖分析測試執行的時延數據(間隔時間(秒)=(結束幀數-開始幀數)*1/30),這里開始幀數圖片建議是點擊到頁面的那一張,結束幀數圖片有兩種情況,一種是出現首個元素的圖片,一種是所有元素渲染完的那張圖片,根據實際情況需求去計算
B.iPhone同上
備注:ffmpeg網上下載即可
2. 內存篇:
A.Android
工具:GT or DDMS
內存檢查方法:
方向:
1.邊界值檢測
2.功能增持檢測
3.極限檢測(適合有點內存潔癖的產品風格)
DDMS
Dalvik Debug Monitor Server,虛擬機調試監控服務,在Android官網(http://developer.android.com/sdk/index.html)下載SDK,下載SDK后,會發現下載的ADT套件中包括eclipse,sdk,DDMS,X86 Android虛擬機等等,打開其中的Eclipse后,就會看到右上方的DDMS tab頁
點擊就會進入DDMS。
DDMS從左至右分為三個部分,設備列表,文件詳情,資源詳情。
一、什么是內存泄露
內存泄露是指程序中間動態分配了內存,但是在程序結束時沒有釋放這部分內存,從而造成那一部分內存不可用。導致系統運行變慢或應用程序崩潰。
二、如何檢測Android中的內存泄露
Android tools中的DDMS帶有一個很不錯的內存監測工具Heap,可以檢測一個進程的內存變化,根據這個工具我們大致可以測試某個應用是否存在泄漏的可能。
三、具體操作
1、打開eclipse,切換到DDMS,並確認Devices視圖、Heap視圖都是打開的;
2、將手機通過USB鏈接至電腦,鏈接時,選擇 “USB調試”模式;
3、鏈接成功后,在DDMS的Devices視圖中將會顯示手機設備的序列號,以及設備中正在運行的部分進程信息
4、在Devices 中,點擊要監控的程序。
5、點擊Devices視圖界面中最上方一排圖標中的“Update Heap”
6、點擊Heap視圖
7、點擊Heap視圖中的“Cause GC”按鈕;
8、到此為止需檢測的進程就可以被監視。如下圖:
四、如何判斷內存泄露
Heap視圖中部有一個Type叫做data object,即數據對象,也就是我們的程序中大量存在的類類型的對象。在data object一行中有一列是“Total Size”,其值就是當前進程中所有Java數據對象的內存總量,一般情況下,這個值的大小決定了是否會有內存泄漏。可以這樣判斷:
1.進入某應用,不斷的操作該應用,同時注意觀察data object的Total Size值
2.正常情況下Total Size值都會穩定在一個有限的范圍內.
3.反之如果代碼中存在沒有釋放對象引用的情況,則data object的Total Size值在每次GC后不會有明顯的回落,隨着操作次數的增多Total Size的值會越來越大,直到到達一個上限后導致進程被kill掉。
在我們的程序中,要是出現某個進程出現了不斷增加的現象,可能該應用就存在泄漏的問題。如果某個進程在操作過程中出現程序崩潰,可能該應用程序已申請不到空間,可能存在內存泄露。
B.iPhone
前提:GT or Mac機裝有iTools和Instruments
1)內存檢查方法
工具:Instruments Activity Monitor
1)打開Instruments然后選擇Activity Monitor工具
2)打開后界面如下,可以幫助我們通過進程Id或程序名稱監控每個程序的物理內存、虛擬內存的消耗:
3)在Choose Target勾選iPhone&選擇被測程序
4)點擊Record后會顯示出當前手機上進程運行情況,這里我們只需要關注被測應用
2)內存泄露檢查方法
工具:Instruments Leaks
1) 啟動QQ程序
2) 啟動Instruments Leaks工具,點擊Choose Target或attach到QQ,點擊Record開始檢測
3) 操作QQ,執行某個功能或某條測試用例
4) 功能執行完畢后再次點擊Record停止檢測,點擊中部的工具條,從Leaks視圖切換為Call Tree視圖,並在左側的面板中勾選“Invert Call Tree”及“Hide System Libraries”
5) Call Tree視圖中列出了檢測到的泄露點的函數調用位置,將這些泄露點提單處理
(如果用來測試的ipa包是本地編譯出來的,雙擊函數名可以跳轉到QQ源碼的泄露位置)
3.流暢度篇
A.Android
工具:GT、Python和Python腳本
測試方法:
1)安裝python2.7.X,http://www.python.org/getit/,並將python的安裝目錄設置到系統環境變量PATH中。注意,當前腳本僅支持2.6.X、2.7.X版本的python。請不要使用3.3.X版本。
2)下載並使用腳本:
http://files.cnblogs.com/files/daxiong2014/android%E4%B8%8BFPS%E6%B5%8B%E8%AF%95%E5%B7%A5%E5%85%B7.rar
*僅監控FPS,執行runFPSmonitor.bat
*自動滑動並監控FPS,執行runScrolltest.bat
3)打開要測試FPS值的界面,准備測試場景,執行Scrolltest腳本,並等待腳本自動執行結束。
4)打開結果文件,計算平均FPS值。
備注:手機需要root權限,連接至腳本運行的電腦
B.iPhone
工具:Instrument Core Animation
測試方法:
1)打開Instrument,選擇流暢度測試工具Core Animation
2)在Choose Target勾選iPhone&選擇被測程序
3)點擊Record開始監測
4)上下滑動待測手機上的應用程序頁面
5)點擊stop停止監測,根據數據得到對應的流暢度曲線,分析數據,進行對比,得出結論。
1. 流量篇:
A.Android
工具:GT & Fiddler
測試方法:
B.iPhone
工具:
測試方法: