最近發現自己學的很多東西沒有做好積淀的工作,也萌生了寫一些東西的念頭。本人也沒有寫博客的習慣,下邊就寫一下手機端的性能測試。
最近公司,要我們從事對競品的性能測試,我負責CPU和內存的性能測試,下面就和大家來分享一下android應用程序的CPU和內存的性能測試。
首先稍做分析一下測試環境:我們知道CPU和內存占用是一個實時變化的狀態,而市面上還沒有具體的哪款android應用能做到實時監控CPU和內存占用並使用log日志保存。考慮到android的底層框架是基於Linux的平台,所有我們可以通過Linux的資源監控命令來實現對android平台的資源實時監控。
要做到上邊的測試環境的實現,需要具備以下幾點:
1、被測試的手機具備root權限:因為涉及到底層的linux命令,需要讀取或執行相應的文件。至於如何root你的手機,不同型號的手機root的方法不一樣,這里就不做介紹了。具體的可以在網上搜索一下自己手機型號的root教程,這里就不做介紹了。
2、需要搭建android的開發環境:因為我們需要監控的是具體的某個應用資源占用的情況,所以需要知道這個應用對應的“安裝的包名”是什么,這就需要使用android開發環境中DDMS模塊中的Devices中查看,當啟動被測軟件時,其主應用程序的安裝包名一般就會在列表的最下端出現(如google地圖等除外,開機就啟動了)。
通過上邊的截圖我們可以看到百度地圖的主程序包名為:com.baidu.BaiduMap
由於篇幅有限,具體的android開發環境的搭建流程,可以參見網絡上的教程,這里就不贅述了。
3、通過Linux命令監控。前邊都是一些初始的准備條件,下邊其實就是實際的操作流程:
(1)adb shell (進入linux的底層)
(2)echo 3>/proc/sys/vm/drop_caches (清除一下系統cache)
(3)top -d 1 | grep com.baidu.BaiduMap (以百度地圖為例,每一秒打印一次資源利用情況)
至於上邊每一列代表什么含義呢?由於使用到了復合查詢“管道符”的方式,所以必須擁有root權限,否則grep的命令無法識別。
在這里我們看到cmd並沒有顯示出所對應的列的標題,所以我們可以單獨通過top命令來了解到:
至於以上各列的含義我不說我想大家也應該猜得到了,在這里僅說一下我們要用到的兩個參數,其他的可以再網上查詢了解:
|--CPU%:CPU占用率
|--RSS:實際占用的物理內存數,單位KB
我們可以針對不同的業務,打印出不同的“標簽”,用於區別現在從事的那個業務,並為后期分析各業務模塊中CPU和內存的占用以及對比使用。
上邊就是對具體的某款android應用的評測的數據的獲取,我們將日志復制到excel的表格中,並畫出相應的數據表。
最后,可以根據得到的圖表進行性能分析(多款同類軟件進行比較),得出本公司軟件的評審標准出來。
大家有什么看法意見,請及時拍磚~