monkey

推薦使用該命令: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缺省命令的內容詳解:

  • --monitor-native-crashes

做用:監視並報告Andorid系統中本地代碼的崩潰事件。若是設置--kill-process-after-error,系統將中止運行。

  •  --pct-touch 80

做用:調整觸摸事件的百分比。(觸摸事件是指在屏幕中的一個down-up事件,即在屏幕某處按下並擡起的操做)

注:經常使用參數,此參數設置要適應當前被測應用程序的操做,好比一個應用80%的操做都是觸摸,那就能夠將此參數的百分比設置成相應較高的百分比。

  • --pct-motion 15

做用:調整motion事件百分比。(motion事件是由屏幕上某處一個down事件、一系列僞隨機的移動事件和一個up事件組成)
注:經常使用參數,需注意的是移動事件是直線滑動

  • --pct-nav 5

做用:調整基本的導航事件百分比。(導航事件由方向輸入設備的上下左右按鍵所觸發的事件組成)
注:不經常使用操做。

  • -s

做用:僞隨機數生成器的seed值。若是用相同的seed值再次運行monkey,將生成相同的事件序列。

  • -v

做用:命令行上的每個-v都將增長反饋信息的詳細級別。
Level0(默認),除了啓動、測試完成和最終結果外只提供較少的信息。
Level1,提供了較爲詳細的測試信息,如逐個發送到Activity的事件信息。
Level2,提供了更多的設置信息,如測試中選中或未選中的Activity信息。

  • --throttle 800

做用:在事件之間插入固定的時間(毫秒)延遲,你可使用這個設置來減緩Monkey的運行速度,若是你不指定這個參數,則事件之間將沒有延遲,事件將以最快的速度生成。

注:經常使用參數,通常設置爲300毫秒,緣由是實際用戶操做的最快300毫秒左右一個動做事件,因此此處通常設置爲300毫秒。

  • 5000

做用:事件發生的次數

若是你須要根據本身的狀況去設計,須要修改。參數指南詳見: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程序同時,咱們能夠比較哪一個程序最佔用內存,就是經過這個數據!

 

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  進程的名稱
相關文章
相關標籤/搜索