使用Monkey進行UI或應用程序測試html
Monkey是運行於模擬器或手機上的一個程序,經過生成僞隨機的大量的系統級的用戶事件流來模擬操做,包括單擊、觸摸、手勢等。從而爲正在開發中的應用程序經過隨機響應進行壓力測試。android
最簡單使用monkey的方式是經過下面的命令行,它能夠運行指定的應用程序並向其發送500個僞隨機事件。shell
$ adb shell monkey -v -p your.package.name 500
關於monkey更多的選項及詳細信息,請參見UI/Application Exerciser Monkey。ide
其餘Shell命令工具
下表列出了不少有效的adb shell命令,完整的列表能夠經過啓動模擬器而且使用adb –help命令獲取。測試
adb shell ls /system/bin
幫助對於大部分命令是有效的。ui
Shell 命令spa |
描述.net |
備註命令行 |
dumpsys |
在屏幕上顯示系統數據 |
The Dalvik Debug Monitor Service (DDMS) 工具提供了更易於使用的智能的調試環境。 |
dumpstate |
將狀態輸出到文件 |
|
logcat [<option>]... [<filter-spec>]... |
輸出日誌信息 |
|
dmesg |
在屏幕上輸出核心調試信息 |
|
start |
啓動或從新啓動模擬器或手機 |
|
stop |
中止模擬器或手機 |
|
使用logcat查看日誌
Android日誌系統提供了從衆多應用程序和系統程序中收集和查看調試信息的機制,這些信息被收集到一系統循環緩衝區中,能夠 logcat 命令查看和過濾。
使用 logcat 命令
查看和跟蹤系統日誌緩衝區的命令logcat的通常用法是:
[adb] logcat [<option>] ... [<filter-spec>] ...
下文介紹過濾器和命令選項,詳細內容可參見Listing of logcat Command Options。
能夠在開發機中經過遠程shell的方式使用logcat命令查看日誌輸出:
$ adb logcat
若是是在遠程shell中可直接使用命令:
# logcat
過濾日誌輸出
每一條日誌消息都有一個標記和優先級與其關聯。
標記是一個簡短的字符串,用於標識原始消息的來源 (例如"View" 來源於顯示系統)。
優先級是下面的字符,順序是從低到高:
V — 明細 (最低優先級)
D — 調試
I — 信息
W — 警告
E — 錯誤
F — 嚴重錯誤
S — 無記載 (最高優先級,沒有什麼會被記載)
經過運行logcat ,能夠得到一個系統中使用的標記和優先級的列表,觀察列表的前兩列,給出的格式是<priority>/<tag>。
這裏是一個日誌輸出的消息,優先級是「I」,標記是「ActivityManager」:
I/ActivityManager( 585): Starting activity: Intent { action=android.intent.action...}
若是想要減小輸出的內容,能夠加上過濾器表達式進行限制,過濾器能夠限制系統只輸出感興趣的標記-優先級組合。
過濾器表達式的格式是tag:priority ... ,其中tag是標記, priority是最小的優先級, 該標記標識的全部大於等於指定優先級的消息被寫入日誌。也能夠在一個過濾器表達式中提供多個這樣的過濾,它們之間用空格隔開。
下面給出的例子是僅輸出標記爲「ActivityManager」而且優先級大於等於「Info」和標記爲「MyApp」而且優先級大於等於「Debug」的日誌:
adb logcat ActivityManager:I MyApp:D *:S
上述表達式最後的 *:S
用於設置全部標記的日誌優先級爲S,這樣能夠確保僅有標記爲「View」(譯者注:應該爲ActivityManager,原文多是筆誤)和「MyApp」的日誌被輸出,使用 *:S
是能夠確保輸出符合指定的過濾器設置的一種推薦的方式,這樣過濾器就成爲了日誌輸出的「白名單」。
下面的表達是顯示全部優先級大於等於「warning」的日誌:
adb logcat *:W
若是在開發用電腦上運行 logcat
(相對於運行運程shell而言),也能夠經過ANDROID_LOG_TAGS
環境變量設置默認的過濾器表達式:
export ANDROID_LOG_TAGS="ActivityManager:I MyApp:D *:S"
須要注意的是,若是是在遠程shell或是使用adb shell logcat
命令運行logcat
, ANDROID_LOG_TAGS
不會導出到模擬器或手機設備上。
控制日誌格式
日誌消息在標記和優先級以外還有不少元數據字段,這些字段能夠經過修改輸出格式來控制輸出結果, -v
選項加上下面列出的內容能夠控制輸出字段:
brief — 顯示優先級/標記和原始進程的PID (默認格式)
process — 僅顯示進程PID
tag — 僅顯示優先級/標記
thread — 僅顯示進程:線程和優先級/標記
raw — 顯示原始的日誌信息,沒有其餘的元數據字段
time — 顯示日期,調用時間,優先級/標記,PID
long —顯示全部的元數據字段而且用空行分隔消息內容
可使用 -v
啓動 logcat
來控制日誌格式:
[adb] logcat [-v <format>]
例如使用 thread
輸出格式:
adb logcat -v thread
注意只能在 -v
選項中指定一種格式。
Viewing Alternative Log Buffers
Android日誌系統爲日誌消息保持了多個循環緩衝區,並且不是全部的消息都被髮送到默認緩衝區,要想查看這些附加的緩衝區,可使用-b
選項,如下是能夠指定的緩衝區:
radio — 查看包含在無線/電話相關的緩衝區消息
events — 查看事件相關的消息
main — 查看主緩衝區 (默認緩衝區)
-
b 選項的用法:
[adb] logcat [-b <buffer>]
例如查看radio緩衝區:
adb logcat -b radio
查看stdout和stderr
默認的,Android系統發送 stdout
和 stderr
(System.out
和 System.err
) 輸出到 /dev/null
。 在 Dalvik VM進程,能夠將輸出複製到日誌文件,在這種狀況下,系統使用 stdout
和 stderr
標記寫入日誌,優先級是I
。
要想使用這種方式得到輸出,須要中止運行中的模擬器或手機,而後使用命令 setprop
來容許輸出重定位,示例以下:
$ adb shell stop
$ adb shell setprop log.redirect-stdio true
$ adb shell start
系統會保留這一設置直到模擬器或手機退出,也能夠在設備中增長/data/local.prop
以使得這一設備成爲默認配置。
Logcat命令選項列表
選項 |
描述 |
|
加載不一樣的緩衝區日誌,例如 |
|
清空(刷新)全部的日誌而且退出 |
|
在屏幕上輸出日誌並退出 |
|
將日誌輸出到文件<filename>,默認輸出是stdout. |
|
輸出日誌的大小 |
|
設置最大的循環數據<count>,默認是4,須要-r選項 |
|
每<kbytes>循環日誌文件,默認是16,須要 |
|
設置默認的過濾器爲無輸出 |
|
設置輸出格式,默認的是 |
中止adb服務
在某些狀況下,可能須要終止而後重啓服務端進程,例如adb不響應命令的時候,能夠經過重啓解決問題。
使用kill-server
能夠終止服務端,而後使用其餘的adb命令重啓。
原文
http://developer.android.com/guide/developing/tools/adb.html
結束
翻譯組已同時組織翻譯API和開發者指南,並計劃出開發者指南的合集,現正邊蒐集邊翻譯,預計4/5月份出首個合集,歡迎你們一塊兒參與,並與咱們分享你的進度,點這裏下載,發郵件告訴咱們你翻譯的章節。