推薦使用該命令:html
adb shell dumpsys activity top | findstr ACTIVITYandroid
aapt dump badging F:\app\Tchat.apkshell
adb shell dumpsys activity
加上-h能夠獲取幫助信息app
獲取當前界面的UI信息,能夠用:
adb shell dumpsys activity topide
要獲取當前界面的Activity:
adb shell dumpsys activity top | findstr ACTIVITY測試
常規monkey命令(可直接在項目裏使用):spa
adb shell monkey -p com.jiochat.jiochatapp --throttle 100 --ignore-crashes --ignore-timeouts --ignore-security-exceptions --ignore-native-crashes --monitor-native-crashes -v -v -v 1000000>d:\b.log.net
重現bug:monkey日誌搜索關鍵詞ANR exception,將以前的事件從新操做,尤爲是seed值要如出一轍,如monkey -p 包名 -v seed 0 500命令行
日誌分析:查看是否有crash等關鍵字,找上下文,進行簡單分析將你所能定位的錯誤信息發給開發。線程
=================================
修改端口:
adb -P <port> start-server
默認端口爲 5037
=====================================
monkeyrunner環境搭建:
首先將設備和電腦鏈接,打開cmd輸入 adb devices:
輸入命令:monkeyrunner
進入shell命令交互模式後,首要一件事就是導入monkeyrunner所要使用的模塊。直接在shell命令下輸入命令:
from com.android.monkeyrunner import MonkeyRunner,MonkeyDevice
創建設備和monkeyrunner的鏈接。
device=MonkeyRunner.waitForConnection(6,'ZTEC880U')
其中,參數1:超時時間,單位秒,浮點數,默認是無限期地等待。
參數2:指定的設備名稱device_id,默認爲當前設備(手機優先,其次爲模擬器
安裝包所在位置 F:\app\Tchat.apk
輸入命令:device.installPackage('F:\\app\\Tchat.apk')
啓動app
device.startActivity(component="package名/.activity")
===============================================
腳本命令:
>>monkeyrunner F:\test.py
#test.py
from com.android.monkeyrunner import MonkeyRunner as mr
device=mr.waitForConnection(1.0,'ZTEC880U') #step1
device.startActivity(component="com.sinosun.tchats/.WiWelcomeActivity") #step2
mr.sleep(2) #step3
result=device.takeSnapshot() #step4
result.writeToFile('F:\\monkeyrunner\\recoder\\test.png','png')
============================================
Monkey測試參數建議
間隔時間:500毫秒;
種子數:隨機;
遇到錯誤:不中止
執行時長:每機型不小於12小時 或 點擊次數:100萬次;
機型覆蓋建議:覆蓋高中低端機型,不一樣芯片平臺,不一樣分辨率,不一樣安卓版本;
參考命令: adb shell monkey -p com.package.xxx --throttle 500 --ignore-crashes --ignore-timeouts --ignore-security-exceptions --ignore-native-crashes --monitor-native-crashes -v -v -v 1000000>G:\MonkeyTest.log
#monkey -p com.android.calculator2 -v 500其中-p表示對象包 –v 表示事件數量
====================================================
驗收測試APP穩定性:
1. 針對單個apk
(1) 不忽略異常
在進行單個apk的驗收測試時,則使用單一apk且不忽略異常的命令執行。
例如:
monkey -p com.android.mms --throttle 1000 -s 100-v -v -v 15000 > /mnt/sdcard/monkey_test.txt &
(2) 忽略異常
在進行單個apk的解決問題的測試時,則使用單一apk且忽略異常的命令執行,這樣能夠在一次執行的過程當中發現應用程序中的多個問題。
例如:
monkey -p com.android.mms --throttle 1000 -s 100--ignore-crashes --ignore-timeouts --ignore-security-exceptions--ignore-native-carshes --monitor-native-crashes -v -v -v 15000 >/mnt/sdcard/monkey_test.txt &
2. 針對多個apk
(1) 不忽略異常
例如:
monkey --pkg-whitelist-file /data/whitelist.txt--throttle 1000 -s 100 -v -v -v 15000 > /mnt/sdcard/monkey_test.txt &
(2) 忽略異常
例如:
monkey --pkg-whitelist-file /data/whitelist.txt--throttle 1000 -s 100 --ignore-crashes --ignore-timeouts--ignore-security-exceptions --ignore-native-carshes --monitor-native-crashes-v -v -v 15000 > /mnt/sdcard/monkey_test.txt &
==========================================
easymonkey測試:
http://qa.sogou.com/
monkey -p com.tencent.mobileqq --monitor-native-crashes --pct-touch 80 --pct-motion 15 --pct-nav 5 -s 900 -v --throttle 800 5000
easymonkey缺省命令的內容詳解:
做用:監視並報告Andorid系統中本地代碼的崩潰事件。若是設置--kill-process-after-error,系統將中止運行。
做用:調整觸摸事件的百分比。(觸摸事件是指在屏幕中的一個down-up事件,即在屏幕某處按下並擡起的操做)
注:經常使用參數,此參數設置要適應當前被測應用程序的操做,好比一個應用80%的操做都是觸摸,那就能夠將此參數的百分比設置成相應較高的百分比。
做用:調整motion事件百分比。(motion事件是由屏幕上某處一個down事件、一系列僞隨機的移動事件和一個up事件組成)
注:經常使用參數,需注意的是移動事件是直線滑動
做用:調整基本的導航事件百分比。(導航事件由方向輸入設備的上下左右按鍵所觸發的事件組成)
注:不經常使用操做。
做用:僞隨機數生成器的seed值。若是用相同的seed值再次運行monkey,將生成相同的事件序列。
做用:命令行上的每個-v都將增長反饋信息的詳細級別。
Level0(默認),除了啓動、測試完成和最終結果外只提供較少的信息。
Level1,提供了較爲詳細的測試信息,如逐個發送到Activity的事件信息。
Level2,提供了更多的設置信息,如測試中選中或未選中的Activity信息。
做用:在事件之間插入固定的時間(毫秒)延遲,你可使用這個設置來減緩Monkey的運行速度,若是你不指定這個參數,則事件之間將沒有延遲,事件將以最快的速度生成。
注:經常使用參數,通常設置爲300毫秒,緣由是實際用戶操做的最快300毫秒左右一個動做事件,因此此處通常設置爲300毫秒。
做用:事件發生的次數
若是你須要根據本身的狀況去設計,須要修改。參數指南詳見:http://www.android-doc.com/tools/help/monkey.html
參數填寫完成後,下載agent文件,同時界面上會生成一個任務號:
下載agent文件,解壓。
手機鏈接電腦,adb鏈接成功,且被測軟件已經安裝在手機。
這時候運行launcher.jar文件:
輸入剛纔的任務ID,而後運行
===================
內存檢測用批處理腳本記錄,約5秒記錄一次:
腳本以下,保存爲bat文件
內存泄漏排查:
使用 adb shell dumpsys meminfo [PackageName],能夠打印出指定包名的應用內存信息。
@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程序同時,咱們能夠比較哪一個程序最佔用內存,就是經過這個數據!
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 進程的名稱