最近一直在研究monkey測試。網上資料很多,但都是一個抄一個的。原創的很少 我把檢查app記憶體泄漏的情況梳理一下: 參考資料: Monkey測試策略:https://testerhome.com/topics/597 Android Monkey測試詳細介紹:http://www.jikexuey ...
最近一直在研究monkey測試。網上資料很多,但都是一個抄一個的。原創的很少
我把檢查app記憶體泄漏的情況梳理一下:
參考資料:
- Monkey測試策略:https://testerhome.com/topics/597
- Android Monkey測試詳細介紹:http://www.jikexueyuan.com/course/1619.html
- Monkey總結:https://testerhome.com/topics/3517
- http://www.linuxidc.com/Linux/2014-03/97563.htm
- https://www.cnblogs.com/jinjiangongzuoshi/p/5203738.html
首先基礎的monkey測試,之前講過。參照以前文檔
在monkey測試的同時我們需要關註的一個點。
記憶體檢測
記憶體檢測用批處理腳本記錄,約5秒記錄一次:
腳本如下,保存為bat文件
@echo off &color 0a&setlocal enabledelayedexpansion&title %~n0
::@mode con lines=18 cols=50
set package1=com.xxxx.xxxxx
adb shell dumpsys meminfo %package1% | findstr "Pss" > ./info_1.txt
:start
adb shell dumpsys meminfo %package1% | findstr "TOTAL" >> ./info_1.txt
echo.
echo.
ping -n 5 127.1>nul
goto start
我們先可以看一下基礎的命令,查看應用記憶體的命令:adb shell dumpsys meminfo (進程名)
這裡得到的信息非常多,重點關註如下幾個欄位:
(1) Native/Dalvik 的 Heap 信息
具體在上面的第一行和第二行,它分別給出的是JNI層和Java層的記憶體分配情況,如果發現這個值一直增長,則代表程式可能出現了記憶體泄漏。
(2) Total 的 PSS 信息
這個值就是你的應用真正占據的記憶體大小,通過這個信息,你可以輕鬆判別手機中哪些程式占記憶體比較大了。
所以我們運行上面的bat文件。得到的數據是這樣的:
右邊三列,如果執行了用戶事件流10萬次後,發現數值一直在增長,那麼很有可能是記憶體泄漏了。
左邊第一列,表示app占據記憶體的大小,比如開四個app程式同時,我們可以比較哪個程式最占用記憶體,就是通過這個數據!
cpu檢查:
bat腳本為
@echo off &color 0a&setlocal enabledelayedexpansion&title %~n0 ::@mode con lines=18 cols=50 set package1=com.xxxx.xxxxx adb shell top -n 1 | findstr "PID" > ./cupInfo_1.txt :start adb shell top -n 1 | findstr %package1% >> ./cupInfo_1.txt echo. echo. ping -n 5 127.1>nul goto start
用到的是adb shell top 命令參考文檔:http://blog.csdn.net/kittyboy0001/article/details/38562515
PID 進程id PR 優先順序 CPU% 當前瞬時CPU占用率 S 進程狀態:D=不可中斷的睡眠狀態, R=運行, S=睡眠, T=跟蹤/停止, Z=僵屍進程 #THR 程式當前所用的線程數 VSS Virtual Set Size 虛擬耗用記憶體(包含共用庫占用的記憶體) RSS Resident Set Size 實際使用物理記憶體(包含共用庫占用的記憶體) PCY 調度策略優先順序,SP_BACKGROUND/SP_FOREGROUND UID 進程所有者的用戶id Name 進程的名稱
*最好的辦法是做一個Excel圖表,把對比數據列出來