最近一直在研究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圖表,把對比數據列出來
順便提一下
如果你也喜歡Python 這里有一群Python愛好者匯集在此。
關注微信公眾號:【軟件測試技術】,回復 888,獲取QQ群號。