針對移動端 Android 的測試, adb 命令是很重要的一個點,必須將常用的 adb 命令熟記於心, 將會為 Android 測試帶來很大的方便,其中很多命令將會用於自動化測試的腳本當中。
Android Debug Bridge
adb 其實就是 Android Debug Bridge, Android 調試橋的縮寫,adb 是一個 C/S 架構的命令行工具,用於通過電腦端與模擬器或者真實設備交互。在某些特殊的情況下進入不了系統,adb就派上用場啦!主要由 3 部分組成:
· 運行在 PC 端的 Client : 可以通過它對 Android 應用進行安裝、卸載及調試
· 運行在 PC 端的 Service : 其管理客戶端到 Android 設備上 adb 后台進程的連接
adb 服務啟動后,Windows 可以在任務管理器中找到 adb.exe 這個進程
· 運行在 Android 設備上的 adb 后台進程
執行 adb shell ps | grep adbd ,可以找到該后台進程,windows 請使用 findstr 替代 grep
通過adb操作android設備
連接上數據線,然后把手機開發者模式打開,打開usb調試。
adb 命令
在開發或者測試的過程中,我們可以通過 adb 來管理多台設備,其一般的格式為:
adb [-e | -d | -s <設備序列號>] <子命令> |
在配好環境變量的前提下,在命令窗口當中輸入 adb help 或者直接輸入 adb ,將會列出所有的選項說明及子命令。
這里介紹一些里面常用的命令:
1.adb devices , 獲取設備列表及設備狀態
2.adb get-state , 獲取設備的狀態
設備的狀態有 3 鍾,device , offline , unknown
device:設備正常連接
offline:連接出現異常,設備無響應
unknown:沒有連接設備
3.安裝卸載應用程序
adb install 用於安裝
安裝成功,返回成功提示 "Success";
安裝失敗,會返回以下:
INSTALL_FAILED_ALREADY_EXISTS
此時需要用 -r 參數來重新安裝。
INSTALL_FAILED_SIGNATURE_ERROR
應用的簽名不一致,可能是發布版和調試版簽名不同所致。也有可能是沒卸載舊應用導致。
INSTALL_FAILED_INSUFFICIENT_STORAGE
存儲空間不足,需要檢查設備存儲情況。
adb uninstall 用於卸載
adb uninstall 后面帶的是應用的包名,而不是應用名。
查看系統所有應用的包名:
adb shell pm list packages –f
4.上傳、下載文件
adb push 命令將PC機上的文件推到 DLT-RK3288 機器上;
adb pull 命令將DLT-RK3288機器上的文件拉到PC機上;
例如:
adb push d:/new.txt /sdcard/
將D盤下new.txt文件 推到內部存儲器
adb pull /sdcard/new.txt d:\
將DLT-RK3288 內部存儲器根目錄下的new.txt 拉到D盤
5. adb shell pm list package
Package Manager , 可以用獲取到一些安裝在 Android 設備上得應用信息
-s:列出系統應用
-f:列出應用包名及對應的apk名及存放位置
過濾應用
5.adb shell
通過adb shell 命令,就可以進入設備或者模擬器的shell環境了,在這個Linux shell中,我們就可以執行各種Linux命令了。
如果只想執行一條shell命令,就可以采用:adb shell [shell_command],在實際使用中,經常與grep或findstr一起使用,起到過濾作用,查看自己需要的關鍵信息。
6.常見命令:
如 ls, cd, rm, mkdir, touch, pwd, cp, mv, ifconfig, netstat, ping, ps, top等,進入adb shell即可執行,與linux相似
7. adb logcat
一.在cmd窗口查看手機的Log日志
有時候我們在手機程序上的日志要在其他地方調試,然后要看里面的Log日志。在cmd窗口中輸入如下命令:
//格式1:打印默認日志數據 adb logcat //格式2:需要打印日志詳細時間的簡單數據 adb logcat -v time //格式3:需要打印級別為Error的信息 adb logcat *:E //格式4:需要打印時間和級別是Error的信息 adb logcat -v time *:E //格式5:將日志保存到電腦固定的位置,比如D:\log.txt adb logcat -v time >D:\log.txt |
這時手機日志更新什么日志,cmd窗口也會同步更新數據。
但是這樣沒有過濾條件,如果Log日志很多,很難找到我們想要的信息,
當然也可以復制cmd中的數據到一個文本中慢慢處理的,就是效率不高。
下面介紹adb logcat中的詳細參數命令以及如何才能高效的打印日志,或者把日志保存到我們指定的位置。
二.adb logcat 詳解
adb logcat如果用過,但是具體命令又不記得,可以輸入adb logcat -help,查看一下一些簡單的數據格式:
日志過濾:adb logcat <tag>[:priority]
tag表示標簽,priority輸出的級別,日志默認級別是V,如果錯誤日志我們選擇E就可以。
Android 的日志分為如下幾個優先級(priority):
V —— Verbose(最低,輸出得最多)
D —— Debug
I —— Info
W —— Warning
E —— Error
F —— Fatal
S —— Silent(最高,啥也不輸出)
按某級別過濾日志則會將該級別及以上的日志輸出。比如,命令:adb logcat *:W
其實*可以是某個tag,如果沒有指明,就表示所有。
tag可以由多個 [:priority] 組成。比如,命令:
adb logcat ActivityManager:I MyApp:D *:S
表示輸出 tag ActivityManager 的 Info 以上級別日志,輸出 tag MyApp 的 Debug 以上級別日志,及其它 tag 的 Silent 級別日志(即屏蔽其它 tag 日志)。
adb logcat選項解析
--"-s"選項 : 設置輸出日志*:s的標簽, 只顯示該標簽的日志;
--"-f"選項 : 將日志輸出到文件, 默認輸出到標准輸出流中, -f 參數執行不成功;
--"-r"選項 : 按照每千字節輸出日志, 需要 -f 參數, 不過這個命令沒有執行成功;
--"-n"選項 : 設置日志輸出的最大數目, 需要 -r 參數, 這個執行 感覺 跟 adb logcat 效果一樣;
--"-v"選項 : 設置日志的輸出格式, 注意只能設置一項;
--"-c"選項 : 清空所有的日志緩存信息;
--"-d"選項 : 將緩存的日志輸出到屏幕上, 並且不會阻塞;
--"-t"選項 : 輸出最近的幾行日志, 輸出完退出, 不阻塞;
--"-g"選項 : 查看日志緩沖區信息;
--"-B"選項 : 以二進制形式輸出日志;
把日志信息保存到電腦中
adb logcat最后添加” > 保存文件的地址,比如需要將的信息保存到電腦中使用下面的命令: adb logcat -v time > D:\log.txt
8.monkey測試
一、Monkey測試簡介
Monkey測試是Android平台自動化測試的一種手段,通過Monkey程序模擬用戶觸摸屏幕、滑動Trackball、按鍵等操作來對設備上的程序進行壓
二、Monkey命令的簡單幫助
要獲取Monkey命令自帶的簡單幫助,在CMD中執行命令:
adb shell monkey –help
四、Monkey命令參數介紹
說明:第一個-s指定設備,如果只連接了一台設備,可不用該參數。
-p <apk包名>只允許系統啟動指定的app,如果不指定,將允許系統啟動設備中的所有app,也可指定多個包。
--throttle <毫秒數> 指定用戶操作(事件)間的時延。
--ignore-crashes 指定當應用程序崩潰時,Monkey依然發送事件,直到事件計數完成。
--ignore-timeouts 當應用程序發生ANR錯誤時,Monkey依然會發送事件,直到事件計數完成。
第2個-s,用於指定偽隨機數生成器的seed值,如果seed相同,則兩次Monkey測試所產生的事件序列也相同的。
-v 用於指定反饋信息級別,總共分為level 0、level 1、level 2三個級別,級別越高,輸出的日志越詳細。
日志級別 Level0 示例 adb shellmonkey -p com.amaker.mp –v 100
說明 缺省值,僅提供啟動提示、測試完成和最終結果等少量信息
日志級別 Level 1 示例 adb shellmonkey -p com.amaker.mp –v -v 100
說明 提供較為詳細的日志,包括每個發送到Activity的事件信息
日志級別 Level 2 示例 adb shellmonkey -p com.amaker.mp –v -v –v 100
說明 最詳細的日志,包括了測試中選中/未選中的Activity信息
最后的數字(這里是500):表示Monkey程序模擬500次隨機用戶操作事件。
>輸出測試結果到D:\monkeylog.txt