重點:
- adb命令的使用
- 操作日誌的解讀:logcat
IOS與安卓
蘋果:
基於Unix
- 蘋果開發語言:OC、Swift
- 開發工具包:Xcode
安卓
基於Linux
開發語言:java
安卓四大組件:重要
Android四大基本組件分別是Activity,Service服務,Content Provider內容提供者,BroadcastReceiver廣播接收器。
iOS系統格式有ipa,pxl,deb;Android系統格式有:apk;諾基亞的S60系統格式有sis,sisx,jar;微軟的WindowsPhone 7、WindowsPhone 8系統格式爲xap;黑莓平臺爲zip。
- 安卓開發語言:JAVA
安卓用ADB命令管理安卓手機,iphone一般要使用MAC電腦纔可,但也可使用windows,要安裝插件,使用idevice命令進行管理。
ADB命令:
用途:用windows操作、管理安卓手機
使用:
- 在andorid SDK 的 platform-tools文件夾中的adb.exe。
- 使用cmd命令運行adb.exe
- 裏面的大部分命令與Linux命令一樣,部分不同
部分命令:
adb devices
:查看當前連接的安卓設備數adb get-state
:獲取設備的狀態,device正常,offline異常無響應,unknown無連接設備adb kill-server
:結束adb服務adb start-server
:啓動adb服務,通常與上一個一起使用,一般在連接出現異常時使用adb bugreport > c:bugreport.txt
:導出含dumpsys、dumpstate、logcat的日誌,內容很多,有19MB左右,所以要放在文件中。adb connect 127.0.0.1:62001
:如無連接,使用此命令連接設備adb status-window
持續顯示設備狀態(有變化時更新)adb usb
重啓adbd服務,監聽USBadb tcpip <port>
重啓adbd服務,監聽指定的TCP端口adb shell
:進入android shell模式,可使用大部分Linux命令(如有多臺設備,見下一命令)adb -s 模擬器編號 命令
- 如,進入某一設備的shell模式:
adb -s emulator-5554 shell
- 如,進入某一設備的shell模式:
- cd 查看/system/bin目錄下的內容,可看到adb shell可以使用的命令
exit
:退出shell命令模式
重定向(將命令運行結果存入文件中,在linux中通用):
- 新建:
命令 > 文件路徑及文件名
- 在原有文件上追加:
命令 >> 文件路徑
過濾:
- 在cmd命令行中的過濾:
| findstr 過濾關鍵字
- 在adb shell 中的過濾:
| grep 過濾關鍵字
軟件安裝卸載(退出shell命令,在CMD命令行模式下才可):
- 安裝軟件:
adb install apk文件路徑
- -r:替換 -s:安裝到SD卡
- 覆蓋安裝:
adb install -r apk文件路徑
- 查詢軟件主包名(用於卸載軟件,要在cmd下進行):
- 使用apk包查詢:
aapt dump badging apk文件路徑
(開頭的name=“”中就是)。也可使用過濾:aapt dump badging | findstr apk文件路徑
(安卓使用| findstr進行過濾而非grep) - 在shell下的/data/data目錄下查看
- 使用apk包查詢:
- 卸載軟件:
adb uninstall 主包名
手機設備與電腦間的文件互傳(cmd模式下):
- 從手機到電腦(PULL拉):
adb pull 手機文件路徑 電腦路徑
- 拉出文件並改名:
adb pull 手機文件路徑 電腦路徑\新名
- 如果給出的電腦文件夾不存在,不會自動創建文件夾,而是把文件改名爲此文件夾名無擴展名
- 如果指定的手機文件路徑含有目錄,如果目錄爲空,不拿出,如果該目錄有文件,會把整個目錄拿出。
- 從電腦到手機(PUSH推):
adb push 電腦路徑 手機路徑
- 其它用法與PULL相同
截屏:adb shell screencap 手機路徑及文件名
;shell screencap 手機路徑及文件名
如:adb shell screencap /sdcard/aa.png
錄製屏幕(android4.4以上版本) adb shell screenrecord /sdcard/demo.mp4
查看adb幫助信息:adb /
;adb help
查看和跟蹤系統日誌: logcat
adb logcat
:將日誌打印在當前adb 窗口adb logcat > c:\mylog.txt
: 把日誌信息重定向到一個文件中adb logcat -c
:清空以前的日誌adb logcat -v time > c:/aaa.log
: [軟件運行過程中的日誌信息會寫入aaa.log中]- 顯示某一級別以上的日誌:
adb logcat -v time *:E > c:\elog.log
- 優先級是下面的字符,順序是從低到高:
- V — 明細 verbose(最低優先級)
- D — 調試 debug
- I — 信息 info
- W — 警告 warn
- E — 錯誤 error
- F — 嚴重錯誤 fatal
- S — 無記載 silent
監測CPU的使用情況:adb shell top
或在shell下top
User 處於用戶態的運行時間,不包含優先值爲負進程
Nice 優先值爲負的進程所佔用的CPU時間
Sys 處於核心態的運行時間
Idle 除IO等待時間以外的其它等待時間
IOW IO等待時間
IRQ 硬中斷時間
SIRQ 軟中斷時間
-----------
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 進程的名稱
監控CPU導出爲文本格式(注意:無法直接過濾後輸出,要指定監控次數n後纔可進行輸出。):
- 監控包含tencent進程的CPU:
adb shell top -n 3 | findstr tencent > c:\abc.txt
- n- 代表監控的次數
- 錯誤用法,監控內容無法寫入文件:
adb shell top | findstr tencent > c:\abc.txt
pm
- 打印所有軟件包名(主名名):
adb shell pm list packages
- 打印第三方軟件包名:
adb shell pm list packages -3
- 清除對應軟件的緩存:
adb shell pm clear 主包名
關閉和啓動adb服務,模擬器在運行一段時間後,adb服務有可能會出現異常。這時需要重新對adb服務關閉和重啓
殺死服務:adb kill-server
啓動服務:adb start-server
adb reboot
:重啓設備
安卓默認ip及端口爲:192.168.1.110:5555
adb命令在windows下的默認端口爲5037
可執行文件:
- linux中的爲:shell文件
- windows中爲:bat文件
將命令放在bat文件中,執行即可批處理
簡單的UI自動化(input。可在shell下執行也在在cmd下執行,在cmd下要加adb shell):
Input命令:
1、屏幕操作之點擊操作
adb shell input tap 232 465
232及465爲xy座標
2、獲取屏幕分辨率
adb shell wm size
3、獲取指定座標 - 指針位置
4、按鍵與長按鍵
adb shell input keyevent 26
26爲電源鍵的鍵值,更多鍵可查看KEYCODE鍵盤映射表
adb shell input keyevent --longpress KEYCODE_POWER
logpress表示長按,keycode_power表示鍵名,也可用鍵值,是一樣的效果
5、滑動
adb shell input swipe 160 703 600 600
- 從p1 500 500 滑動到 p2 800 800
6、長按屏幕
adb shell input swipe 232 465 232 465 3000
其實就是長時間滑動小段距離或同一點,3000爲滑動的時間,毫秒
7、輸入文本
adb shell input text 123456
批處理文件格式如下(爲batch語言):
@echo off
setlocal enabledelayedexpansion
echo 測試開始
::循環計數從0開始
set /a count=0
::1、按HOME鍵,延遲1秒
adb shell input keyevent KEYCODE_HOME
adb shell input keyevent KEYCODE_HOME
ping -n 1 127.0.0.1>nul
:loop
::2、點擊移動警務通圖標的座標[431,215],延遲1秒
adb shell input tap 350 450
ping -n 1 127.0.0.1>nul
::3、點擊用戶名座標[124,384],輸入用戶名,延遲1秒
adb shell input tap 300 400
adb shell input text admin
ping -n 1 127.0.0.1>nul
::4、點擊密碼座標[124,465],輸入密碼,延遲1秒
adb shell input tap 300 450
adb shell input text admin
ping -n 1 127.0.0.1>nul
::5、點擊登錄按鈕[650,526],延遲1秒
adb shell input tap 300 550
ping -n 1 127.0.0.1>nul
::6、點擊手機返回鍵兩次,退出到主頁面
adb shell input keyevent 4
ping -n 1 127.0.0.1>nul
adb shell input keyevent 4
ping -n 1 127.0.0.1>nul
set /a count+=1
echo 當前執行第 !count! 測試
if %count% EQU 5 goto finish
goto loop
:finish
monkey
1、在命令行界面輸入monkey命令,基本語法如下:
adb shell monkey [options]
下面是一個更爲典型的命令行示例,它啓動指定的應用程序,並向其發送500個僞隨機事件:
adb shell monkey -p com.amaker.mp -v 500
2、在運行monkey時,需要將日誌內容輸出到一個文件中,便於查看並分析
adb shell monkey -p com.amaker.mp -v 500 > c:\monkeya.txt
-p:被測試app的包名
-v:表示反饋信息級別:一個v代表0級,兩個v代表1級,三個v代表2級,一般工作中用兩個v
3、當開始執行後,無法通過ctrl+c進行停止,只能通過ps查看進程號,然後進行kill纔可
Monkey事件(所有事件百分比不能超過100%。重要!!!!)
Monkey所執行的隨機事件流中包含11大事件,分別是:
**觸摸事件、手勢事件、二指縮放事件、**軌跡事件、屏幕旋轉事件、基本導航事件、主要導航事件、系統按鍵事件、啓動Activity事件、鍵盤事件、其他類型事件。
Monkey通過這11大事件來模擬用戶的常規操作,對手機App進行穩定性測試。
3.1、觸摸事件 --pct-touch
觸摸事件是指在屏幕某處按下並擡起的操作, 該事件由一組Touch(ACTION_DOWN)和Touch(ACTION_UP)事件組成,在手機上看到實際操作類似於點擊。後跟百分比,如100爲100%
adb shell monkey -p com.tencent.mobileqq --pct-touch 100 -v -v 2000 > c:\apk\pct1.txt
日誌類型:
# 一個ACTION_DOWN,一個ACTION_UP
// Event percentages:
// 0: 100.0%
// 1: 0.0%
// 2: 0.0%
// 3: 0.0%
// 4: -0.0%
// 5: 0.0%
// 6: 0.0%
// 7: 0.0%
// 8: 0.0%
// 9: 0.0%
// 10: 0.0%
:Switch: #Intent;action=android.intent.action.MAIN;category=android.intent.category.LAUNCHER;launchFlags=0x10200000;component=com.tencent.mobileqq/.activity.SplashActivity;end
// Allowing start of Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=com.tencent.mobileqq/.activity.SplashActivity } in package com.tencent.mobileqq
Sleeping for 0 milliseconds
:Sending Touch (ACTION_DOWN): 0:(524.0,483.0) #一個ACTION_DOWN
:Sending Touch (ACTION_UP): 0:(532.0278,478.41223) #一個ACTION_UP
Sleeping for 0 milliseconds
:Sending Touch (ACTION_DOWN): 0:(628.0,556.0)
:Sending Touch (ACTION_UP): 0:(631.6977,552.48895)
......
3.2、手勢事件 --pct-motion
手勢事件是指在屏幕某處的按下、隨機移動、擡起的操作,即直線滑動操作。該事件是由一個ACTION_DOWN事件、一系列ACTION_MOVE事件和一個ACTION_UP事件組成的,在手機上看到的實際操作是一個沒有拐彎的直線滑動操作。
# 一個ACTION_DOWN,一個ACTION_UP,不定量多個ACTION_MOVE
// Event percentages:
// 0: 0.0%
// 1: 100.0%
// 2: 0.0%
// 3: 0.0%
// 4: -0.0%
// 5: 0.0%
// 6: 0.0%
// 7: 0.0%
// 8: 0.0%
// 9: 0.0%
// 10: 0.0%
:Switch: #Intent;action=android.intent.action.MAIN;category=android.intent.category.LAUNCHER;launchFlags=0x10200000;component=com.tencent.mobileqq/.activity.SplashActivity;end
// Allowing start of Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=com.tencent.mobileqq/.activity.SplashActivity } in package com.tencent.mobileqq
Sleeping for 0 milliseconds
:Sending Touch (ACTION_DOWN): 0:(152.0,1072.0)
:Sending Touch (ACTION_MOVE): 0:(150.14798,1072.2855)
:Sending Touch (ACTION_MOVE): 0:(145.99004,1072.8612)
:Sending Touch (ACTION_MOVE): 0:(144.37231,1073.1382)
:Sending Touch (ACTION_MOVE): 0:(139.05087,1074.3801)
:Sending Touch (ACTION_UP): 0:(134.22346,1074.8947)
Sleeping for 0 milliseconds
:Sending Touch (ACTION_DOWN): 0:(575.0,615.0)
:Sending Touch (ACTION_MOVE): 0:(569.17426,613.3566)
:Sending Touch (ACTION_MOVE): 0:(545.3659,538.5507)
:Sending Touch (ACTION_UP): 0:(544.4542,528.6777)
Sleeping for 0 milliseconds
3.3、二指縮放事件 --pct-pinchzoom
二指縮屏幕上的放事件是指在兩處同時按下,並同時移動,最後同時擡起的操作,即智能機上的放大縮小手勢操作。該事件起始是一個ACTION_DOWN事件和一個ACTION_POINTER_DOWN事件,即模擬兩個手指同時點下;中間是一系列的ACTION_MOVE事件,即兩個手指同時在屏幕上直線滑動;結束是由一個ACTION_POINTER_UP事件和一個ACTION_UP事件組成的,即兩個手指同時放開。
# 單個:ACTION_DOWN、ACTION_POINTER_DOWN 1、ACTION_POINTER_UP 1、ACTION_UP
# 多個:ACTION_MOVE
// Event percentages:
// 0: 0.0%
// 1: 0.0%
// 2: 100.0%
// 3: 0.0%
// 4: -0.0%
// 5: 0.0%
// 6: 0.0%
// 7: 0.0%
// 8: 0.0%
// 9: 0.0%
// 10: 0.0%
:Switch: #Intent;action=android.intent.action.MAIN;category=android.intent.category.LAUNCHER;launchFlags=0x10200000;component=com.google.android.gms/.app.settings.GoogleSettingsActivity;end
// Allowing start of Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=com.google.android.gms/.app.settings.GoogleSettingsActivity } in package com.google.android.gms
Sleeping for 0 milliseconds
:Sending Touch (ACTION_DOWN): 0:(396.0,547.0)
:Sending Touch (ACTION_POINTER_DOWN 1): 0:(402.4965,540.6863) 1:(240.0,490.0)
:Sending Touch (ACTION_MOVE): 0:(405.67783,528.93) 1:(240.78168,487.68005)
:Sending Touch (ACTION_MOVE): 0:(418.9804,496.83627) 1:(265.7292,470.85452)
:Sending Touch (ACTION_POINTER_UP 1): 0:(427.5013,494.71924) 1:(280.7935,463.71155)
:Sending Touch (ACTION_UP): 0:(436.45438,483.2845)
Sleeping for 0 milliseconds
3.4、軌跡事件 --pct-trackball
軌跡事件是由一個或多個隨機的移動組成的,有時會伴隨着點擊。很早之前的Android手機帶有軌跡球,這個事件就是模擬的軌跡球的操作。現在的手機幾乎都沒有軌跡球,但軌跡球事件中包含曲線滑動操作,如果被測程序需要曲線滑動時可以選用此參數。該事件是由一系列的Trackball(ACTION_MOVE)事件組成的,觀察手機上的操作,即爲一系列的曲線滑動操作。
# 全部爲ACTION_MOVE
// Event percentages:
// 0: 0.0%
// 1: 0.0%
// 2: 0.0%
// 3: 100.0%
// 4: -0.0%
// 5: 0.0%
// 6: 0.0%
// 7: 0.0%
// 8: 0.0%
// 9: 0.0%
// 10: 0.0%
:Switch: #Intent;action=android.intent.action.MAIN;category=android.intent.category.LAUNCHER;launchFlags=0x10200000;component=com.android.providers.downloads.ui/.DownloadList;end
// Allowing start of Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=com.android.providers.downloads.ui/.DownloadList } in package com.android.providers.downloads.ui
Sleeping for 0 milliseconds
:Sending Trackball (ACTION_MOVE): 0:(1.0,-4.0)
:Sending Trackball (ACTION_MOVE): 0:(4.0,-3.0)
:Sending Trackball (ACTION_MOVE): 0:(1.0,-4.0)
:Sending Trackball (ACTION_MOVE): 0:(4.0,0.0)
:Sending Trackball (ACTION_MOVE): 0:(-2.0,-2.0)
:Sending Trackball (ACTION_MOVE): 0:(-4.0,-2.0)
:Sending Trackball (ACTION_MOVE): 0:(3.0,4.0)
:Sending Trackball (ACTION_MOVE): 0:(-1.0,1.0)
3.5、屏幕旋轉事件 --pct-rotation
屏幕旋轉事件是一個隱藏事件,在Android官方文檔中並沒有記錄這個事件。它其實是模擬的Android手機的橫屏和豎屏切換。 該事件由一個rotation事件組成,其中degree表示的是旋轉方向,順時針旋轉,0表示旋轉90度的方向,1表示旋轉180度的方向,2表示旋轉270度的方向,3表示旋轉360度的方向。在執行過程中,可以看到手機屏幕在橫豎屏之間不斷地切換。
# 格式爲:Sending rotation degree=3, persist=false
// Event percentages:
// 0: 0.0%
// 1: 0.0%
// 2: 0.0%
// 3: 0.0%
// 4: 100.0%
// 5: 0.0%
// 6: 0.0%
// 7: 0.0%
// 8: 0.0%
// 9: 0.0%
// 10: 0.0%
:Switch: #Intent;action=android.intent.action.MAIN;category=android.intent.category.LAUNCHER;launchFlags=0x10200000;component=com.cyanogenmod.filemanager/.activities.NavigationActivity;end
// Allowing start of Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=com.cyanogenmod.filemanager/.activities.NavigationActivity } in package com.cyanogenmod.filemanager
Sleeping for 0 milliseconds
:Sending rotation degree=2, persist=true
Sleeping for 0 milliseconds
:Sending rotation degree=0, persist=false
Sleeping for 0 milliseconds
:Sending rotation degree=1, persist=true
Sleeping for 0 milliseconds
:Sending rotation degree=3, persist=false
Sleeping for 0 milliseconds
3.6、基本導航事件 --pct-nav
基本導航事件是指點擊方向輸入設備的上、下、左、右按鍵的操作,現在手機上很少有上、下、左、右按鍵,這種事件一般用得比較少。該事件是由一個Key(ACTION_DOWN)和一個Key(ACTION_UP)組成的,點擊的就是上、下、左、右四個方向按鍵。
// Event percentages:
// 0: 0.0%
// 1: 0.0%
// 2: 0.0%
// 3: 0.0%
// 4: -0.0%
// 5: 100.0%
// 6: 0.0%
// 7: 0.0%
// 8: 0.0%
// 9: 0.0%
// 10: 0.0%
:Switch: #Intent;action=android.intent.action.MAIN;category=android.intent.category.LAUNCHER;launchFlags=0x10200000;component=com.android.gallery3d/.app.GalleryActivity;end
// Allowing start of Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=com.android.gallery3d/.app.GalleryActivity } in package com.android.gallery3d
Sleeping for 0 milliseconds
:Sending Key (ACTION_DOWN): 21 // KEYCODE_DPAD_LEFT
:Sending Key (ACTION_UP): 21 // KEYCODE_DPAD_LEFT
Sleeping for 0 milliseconds
:Sending Key (ACTION_DOWN): 19 // KEYCODE_DPAD_UP
:Sending Key (ACTION_UP): 19 // KEYCODE_DPAD_UP
3.7、主要導航事件 --pct-majornav
主要導航事件是指點擊“主要導航”按鍵的操作,這些按鍵通常會導致UI界面中的動作,如鍵盤的中間鍵、回退按鍵、菜單按鍵。 該事件是由一個Key(ACTION_DOWN)和一個Key(ACTION_UP)組成的,點擊的按鍵就是中間鍵和菜單鍵。
// Event percentages:
// 0: 0.0%
// 1: 0.0%
// 2: 0.0%
// 3: 0.0%
// 4: -0.0%
// 5: 0.0%
// 6: 100.0%
// 7: 0.0%
// 8: 0.0%
// 9: 0.0%
// 10: 0.0%
:Switch: #Intent;action=android.intent.action.MAIN;category=android.intent.category.LAUNCHER;launchFlags=0x10200000;component=com.android.contacts/.activities.PeopleActivity;end
// Allowing start of Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=com.android.contacts/.activities.PeopleActivity } in package com.android.contacts
Sleeping for 0 milliseconds
:Sending Key (ACTION_DOWN): 23 // KEYCODE_DPAD_CENTER
:Sending Key (ACTION_UP): 23 // KEYCODE_DPAD_CENTER
Sleeping for 0 milliseconds
:Sending Key (ACTION_DOWN): 82 // KEYCODE_MENU
:Sending Key (ACTION_UP): 82 // KEYCODE_MENU
3.8、系統按鍵事件 --pct-syskeys
系統按鍵事件是指點擊系統保留使用的按鍵的操作,如點擊Home鍵、返回鍵、音量調節鍵等。該事件是由一個Key(ACTION_DOWN)和一個Key(ACTION_UP)組成的,點擊的就是上面說到的幾個系統按鍵。
// Event percentages:
// 0: 0.0%
// 1: 0.0%
// 2: 0.0%
// 3: 0.0%
// 4: -0.0%
// 5: 0.0%
// 6: 0.0%
// 7: 100.0%
// 8: 0.0%
// 9: 0.0%
// 10: 0.0%
:Switch: #Intent;action=android.intent.action.MAIN;category=android.intent.category.LAUNCHER;launchFlags=0x10200000;component=com.google.android.play.games/com.google.android.gms.games.ui.destination.main.MainActivity;end
// Allowing start of Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=com.google.android.play.games/com.google.android.gms.games.ui.destination.main.MainActivity } in package com.google.android.play.games
Sleeping for 0 milliseconds
:Sending Key (ACTION_DOWN): 4 // KEYCODE_BACK
:Sending Key (ACTION_UP): 4 // KEYCODE_BACK
Sleeping for 0 milliseconds
:Sending Key (ACTION_DOWN): 25 // KEYCODE_VOLUME_DOWN
:Sending Key (ACTION_UP): 25 // KEYCODE_VOLUME_DOWN
Sleeping for 0 milliseconds
3.9、啓動Activity事件 --pct-appswitch
啓動Activity事件是指在手機上啓動一個Activity的操作。在隨機的時間間隔中,Monkey將執行一個startActivity()方法,作爲最大限度上覆蓋被測包中全部Activity的一種方法。該事件是由一個Switch操作組成的。
// Event percentages:
// 0: 0.0%
// 1: 0.0%
// 2: 0.0%
// 3: 0.0%
// 4: -0.0%
// 5: 0.0%
// 6: 0.0%
// 7: 0.0%
// 8: 100.0%
// 9: 0.0%
// 10: 0.0%
:Switch: #Intent;action=android.intent.action.MAIN;category=android.intent.category.LAUNCHER;launchFlags=0x10200000;component=com.android.vending/.AssetBrowserActivity;end
// Allowing start of Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=com.android.vending/.AssetBrowserActivity } in package com.android.vending
// Allowing start of Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=com.android.vending/com.google.android.finsky.activities.MainActivity } in package com.android.vending
// activityResuming(com.android.vending)
Sleeping for 0 milliseconds
:Switch: #Intent;action=android.intent.action.MAIN;category=android.intent.category.LAUNCHER;launchFlags=0x10200000;component=com.android.camera/.Camera;end
// Allowing start of Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=com.android.camera/.Camera } in package com.android.camera
Sleeping for 0 milliseconds
3.10、鍵盤事件 --pct-flip
鍵盤事件主要是一些與鍵盤相關的操作。比如點擊輸入框、鍵盤彈起、點擊輸入框以外區域、鍵盤收回等。主要是鍵盤的打開和關閉操作。
// Event percentages:
// 0: 0.0%
// 1: 0.0%
// 2: 0.0%
// 3: 0.0%
// 4: -0.0%
// 5: 0.0%
// 6: 0.0%
// 7: 0.0%
// 8: 0.0%
// 9: 100.0%
// 10: 0.0%
:Switch: #Intent;action=android.intent.action.MAIN;category=android.intent.category.LAUNCHER;launchFlags=0x10200000;component=com.cyanogenmod.filemanager/.activities.NavigationActivity;end
// Allowing start of Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=com.cyanogenmod.filemanager/.activities.NavigationActivity } in package com.cyanogenmod.filemanager
Sleeping for 0 milliseconds
:Sending Flip keyboardOpen=false
Sleeping for 0 milliseconds
:Sending Flip keyboardOpen=true
Sleeping for 0 milliseconds
:Sending Flip keyboardOpen=false
3.11、其他類型事件
4、在事件之間插入固定延遲(毫秒)
4.1 設置固定延遲 --throttle 300
可以使用這個設置來減緩Monkey的運行速度,如果不指定參數,則事件之間將沒有延遲,事件將以最快的速度生成,例如:
adb shell monkey -p com.***.*** --throttle 500 -v -v 100
4.2 設置隨機延遲 --throttle time --randomize-throttle
隨機延遲時間爲0到–throttle設置的值,例如:
adb shell monkey -p com.***.*** --throttle 500 --randomize-throttle -v -v 100
–ignore-crashes:忽略程序崩潰,設置此選項後,Monkey會執行完所有的事件,不會因crash而停止。
5、忽略程序無響應 --ignore-timeouts
設置此選項後,Monkey會執行完所有的事件,不會因ANR(Application No Responding)而停止
6、忽略程序崩潰 --ignore-crashes
設置此選項後,Monkey會執行完所有的事件,不會因崩潰(Crash)而停止
7、忽略Monkey本身的異常 --ignore-native-crashes
忽略monkey本身的異常,直到事件執行完畢
8、證書或認證異常 --ignore-security-exceptions
設置此選項後,Monkey會執行完所有的事件,不會因認證或證書異常而停止
9、監視系統中本地代碼發生的崩潰 --monitor-native-crashes
10、-s: 用於指定僞隨機數生成器的seed值
如果seed相同,則兩次Monkey測試所產生的事件序列也相同的
獲取當前android系統版本
adb shell getprop ro.build.version.release
獲取app版本號
adb shell dumpsys package packageName
示例:adb shell dumpsys package com.linsen.itally | findstr versionName
(注意:aapt dump badging ***.apk 可以查看包名及版本信息等)
啓動 app
adb shell am start –n package_and_activity
adb shell am start –n com.linsen.itally/.ui.WelcomeActivity
[-n表示打開時可能需要等待]
package_and_activity獲取:
輸入adb logcat | grep activity
輸入多個回車,清除log信息
操作目標app,log便會顯示package_and_activity信息
關閉 app
adb shell am force-stop com.linsen.itally
手機專項測試
1、啓動時間監控
熱啓動
冷啓動
熱啓動
adb shell am start -W com.linsen.itally/.ui.WelcomeActivity #打開應用
adb shell input keyevent 3 #Home
冷啓動
adb shell am start -W com.linsen.itally/.ui.WelcomeActivity
adb shell am force-stop com.linsen.itally
2、CPU監控
2.1 adb shell dumpsys cpuinfo
user:應用程序用的CPU(一般來說,測試時看user信息)
kernel:系統內核用的CPU信息(android程序在運行時,有時會用到一些共享庫,如拍照,通訊錄等,拍照時鏡頭由系統提供,程序只需要調用,因此,在運行程序時,內核也會佔用一些CPU)
過濾:adb shell dumpsys cpuinfo | findstr com.linsen.itally
2.2 top
adb shell top -m 10 -s cpu
可查看佔用cpu最高的前10個程序
(-t 顯示進程名稱,-s 按指定行排序,-n 在退出前刷新幾次,-d 刷新間隔,-m 顯示最大數量)
1、內存監控
3.1 adb shell dumpsys meminfo com.linsen.itally
3.2 top
adb shell top -d 1
-d 刷新頻率
3.3 流量監控
a. 拿到pid: adb shell ps | findstr com.linsen.itally
b. 這邊拿到PID:2413然後在去/proc目錄下的PID/net/dev面可以看到
adb shell cat /proc/2413/net/dev
lo :localhost 本地流量
Receive:接收流量
Transmit:發送流量
如果是手機的話
wlan0代表wifi 上傳下載量標識! 上傳下載量單位是字節可以/1024換算成KB
這裏可以看到下載的字節數 、數據包 和 發送的字節數 、數據包
小技巧:wlan0這些值如何初始化0 很簡單 你打開手機飛行模式再關掉就清0了
3.4 電量監控
adb shell dumpsys battery
設置手機非充電狀態 adb shell dumpsys battery set status 1
重置 adb shell dumpsys battery reset
測試總結報告內容:
- 測試過程
- 人員、工作分工
- 計劃時間、實際時間
- 測試結果統計:
- 各模塊用例覆蓋率(數量)
- 測試用例穩定性分析(評審後用例變更率)
- 用例執行情況,執行數量、通過數量等
- BUG統計
- BUG在各模塊分佈圖(餅狀圖)
- BUG嚴重程度分佈圖(條形圖)
- BUG發現者與對應數量(表)
- 日提交BUG數統計(拆線圖)
- 遺留問題清單(留在下版本修改的)
- 測試中使用的工具
- 整個測試過程中做的好與不好的方面的總結
- 評估結果(予以發佈與否)
附keycode鍵盤值:
KEYCODE列表
電話鍵
KEYCODE_CALL | 撥號鍵 | 5 |
KEYCODE_ENDCALL | 掛機鍵 | 6 |
KEYCODE_HOME | 按鍵Home | 3 |
KEYCODE_MENU | 菜單鍵 | 82 |
KEYCODE_BACK | 返回鍵 | 4 |
KEYCODE_SEARCH | 搜索鍵 | 84 |
KEYCODE_CAMERA | 拍照鍵 | 27 |
KEYCODE_FOCUS | 拍照對焦鍵 | 80 |
KEYCODE_POWER | 電源鍵 | 26 |
KEYCODE_NOTIFICATION | 通知鍵 | 83 |
KEYCODE_MUTE | 話筒靜音鍵 | 91 |
KEYCODE_VOLUME_MUTE | 揚聲器靜音鍵 | 164 |
KEYCODE_VOLUME_UP | 音量增加鍵 | 24 |
KEYCODE_VOLUME_DOWN | 音量減小鍵 | 25 |
控制鍵
KEYCODE_ENTER | 回車鍵 | 66 |
KEYCODE_ESCAPE | ESC鍵 | 111 |
KEYCODE_DPAD_CENTER | 導航鍵 確定鍵 | 23 |
KEYCODE_DPAD_UP | 導航鍵 向上 | 19 |
KEYCODE_DPAD_DOWN | 導航鍵 向下 | 20 |
KEYCODE_DPAD_LEFT | 導航鍵 向左 | 21 |
KEYCODE_DPAD_RIGHT | 導航鍵 向右 | 22 |
KEYCODE_MOVE_HOME | 光標移動到開始鍵 | 122 |
KEYCODE_MOVE_END | 光標移動到末尾鍵 | 123 |
KEYCODE_PAGE_UP | 向上翻頁鍵 | 92 |
KEYCODE_PAGE_DOWN | 向下翻頁鍵 | 93 |
KEYCODE_DEL | 退格鍵 | 67 |
KEYCODE_FORWARD_DEL | 刪除鍵 | 112 |
KEYCODE_INSERT | 插入鍵 | 124 |
KEYCODE_TAB | Tab鍵 | 61 |
KEYCODE_NUM_LOCK | 小鍵盤鎖 | 143 |
KEYCODE_CAPS_LOCK | 大寫鎖定鍵 | 115 |
KEYCODE_BREAK | Break/Pause鍵 | 121 |
KEYCODE_SCROLL_LOCK | 滾動鎖定鍵 | 116 |
KEYCODE_ZOOM_IN | 放大鍵 | 168 |
KEYCODE_ZOOM_OUT | 縮小鍵 | 169 |
組合鍵
KEYCODE_ALT_LEFT | Alt+Left |
KEYCODE_ALT_RIGHT | Alt+Right |
KEYCODE_CTRL_LEFT | Control+Left |
KEYCODE_CTRL_RIGHT | Control+Right |
KEYCODE_SHIFT_LEFT | Shift+Left |
KEYCODE_SHIFT_RIGHT | Shift+Right |
基本
KEYCODE_0 | 按鍵’0’ | 7 |
KEYCODE_1 | 按鍵’1’ | 8 |
KEYCODE_2 | 按鍵’2’ | 9 |
KEYCODE_3 | 按鍵’3’ | 10 |
KEYCODE_4 | 按鍵’4’ | 11 |
KEYCODE_5 | 按鍵’5’ | 12 |
KEYCODE_6 | 按鍵’6’ | 13 |
KEYCODE_7 | 按鍵’7’ | 14 |
KEYCODE_8 | 按鍵’8’ | 15 |
KEYCODE_9 | 按鍵’9’ | 16 |
KEYCODE_A | 按鍵’A’ | 29 |
KEYCODE_B | 按鍵’B’ | 30 |
KEYCODE_C | 按鍵’C’ | 31 |
KEYCODE_D | 按鍵’D’ | 32 |
KEYCODE_E | 按鍵’E’ | 33 |
KEYCODE_F | 按鍵’F’ | 34 |
KEYCODE_G | 按鍵’G’ | 35 |
KEYCODE_H | 按鍵’H’ | 36 |
KEYCODE_I | 按鍵’I’ | 37 |
KEYCODE_J | 按鍵’J’ | 38 |
KEYCODE_K | 按鍵’K’ | 39 |
KEYCODE_L | 按鍵’L’ | 40 |
KEYCODE_M | 按鍵’M’ | 41 |
KEYCODE_N | 按鍵’N’ | 42 |
KEYCODE_O | 按鍵’O’ | 43 |
KEYCODE_P | 按鍵’P’ | 44 |
KEYCODE_Q | 按鍵’Q’ | 45 |
KEYCODE_R | 按鍵’R’ | 46 |
KEYCODE_S | 按鍵’S’ | 47 |
KEYCODE_T | 按鍵’T’ | 48 |
KEYCODE_U | 按鍵’U’ | 49 |
KEYCODE_V | 按鍵’V’ | 50 |
KEYCODE_W | 按鍵’W’ | 51 |
KEYCODE_X | 按鍵’X’ | 52 |
KEYCODE_Y | 按鍵’Y’ | 53 |
KEYCODE_Z | 按鍵’Z’ | 54 |
符號
KEYCODE_PLUS | 按鍵’+’ |
KEYCODE_MINUS | 按鍵’-’ |
KEYCODE_STAR | 按鍵’*’ |
KEYCODE_SLASH | 按鍵’/’ |
KEYCODE_EQUALS | 按鍵’=’ |
KEYCODE_AT | 按鍵’@’ |
KEYCODE_POUND | 按鍵’#’ |
KEYCODE_APOSTROPHE | 按鍵’’’ (單引號) |
KEYCODE_BACKSLASH | 按鍵’’ |
KEYCODE_COMMA | 按鍵’,’ |
KEYCODE_PERIOD | 按鍵’.’ |
KEYCODE_LEFT_BRACKET | 按鍵’[’ |
KEYCODE_RIGHT_BRACKET | 按鍵’]’ |
KEYCODE_SEMICOLON | 按鍵’;’ |
KEYCODE_GRAVE | 按鍵’`’ |
KEYCODE_SPACE | 空格鍵 |
小鍵盤
KEYCODE_NUMPAD_0 | 小鍵盤按鍵’0’ |
KEYCODE_NUMPAD_1 | 小鍵盤按鍵’1’ |
KEYCODE_NUMPAD_2 | 小鍵盤按鍵’2’ |
KEYCODE_NUMPAD_3 | 小鍵盤按鍵’3’ |
KEYCODE_NUMPAD_4 | 小鍵盤按鍵’4’ |
KEYCODE_NUMPAD_5 | 小鍵盤按鍵’5’ |
KEYCODE_NUMPAD_6 | 小鍵盤按鍵’6’ |
KEYCODE_NUMPAD_7 | 小鍵盤按鍵’7’ |
KEYCODE_NUMPAD_8 | 小鍵盤按鍵’8’ |
KEYCODE_NUMPAD_9 | 小鍵盤按鍵’9’ |
KEYCODE_NUMPAD_ADD | 小鍵盤按鍵’+’ |
KEYCODE_NUMPAD_SUBTRACT | 小鍵盤按鍵’-’ |
KEYCODE_NUMPAD_MULTIPLY | 小鍵盤按鍵’*’ |
KEYCODE_NUMPAD_DIVIDE | 小鍵盤按鍵’/’ |
KEYCODE_NUMPAD_EQUALS | 小鍵盤按鍵’=’ |
KEYCODE_NUMPAD_COMMA | 小鍵盤按鍵’,’ |
KEYCODE_NUMPAD_DOT | 小鍵盤按鍵’.’ |
KEYCODE_NUMPAD_LEFT_PAREN | 小鍵盤按鍵’(’ |
KEYCODE_NUMPAD_RIGHT_PAREN | 小鍵盤按鍵’)’ |
KEYCODE_NUMPAD_ENTER | 小鍵盤按鍵回車 |
功能鍵
KEYCODE_F1 | 按鍵F1 |
KEYCODE_F2 | 按鍵F2 |
KEYCODE_F3 | 按鍵F3 |
KEYCODE_F4 | 按鍵F4 |
KEYCODE_F5 | 按鍵F5 |
KEYCODE_F6 | 按鍵F6 |
KEYCODE_F7 | 按鍵F7 |
KEYCODE_F8 | 按鍵F8 |
KEYCODE_F9 | 按鍵F9 |
KEYCODE_F10 | 按鍵F10 |
KEYCODE_F11 | 按鍵F11 |
KEYCODE_F12 | 按鍵F12 |
多媒體鍵
KEYCODE_MEDIA_PLAY | 多媒體鍵 播放 |
KEYCODE_MEDIA_STOP | 多媒體鍵 停止 |
KEYCODE_MEDIA_PAUSE | 多媒體鍵 暫停 |
KEYCODE_MEDIA_PLAY_PAUSE | 多媒體鍵 播放/暫停 |
KEYCODE_MEDIA_FAST_FORWARD | 多媒體鍵 快進 |
KEYCODE_MEDIA_REWIND | 多媒體鍵 快退 |
KEYCODE_MEDIA_NEXT | 多媒體鍵 下一首 |
KEYCODE_MEDIA_PREVIOUS | 多媒體鍵 上一首 |
KEYCODE_MEDIA_CLOSE | 多媒體鍵 關閉 |
KEYCODE_MEDIA_EJECT | 多媒體鍵 彈出 |
KEYCODE_MEDIA_RECORD | 多媒體鍵 錄音 |
手柄按鍵
KEYCODE_BUTTON_1 | 通用遊戲手柄按鈕#1 |
KEYCODE_BUTTON_2 | 通用遊戲手柄按鈕 #2 |
KEYCODE_BUTTON_3 | 通用遊戲手柄按鈕 #3 |
KEYCODE_BUTTON_4 | 通用遊戲手柄按鈕 #4 |
KEYCODE_BUTTON_5 | 通用遊戲手柄按鈕 #5 |
KEYCODE_BUTTON_6 | 通用遊戲手柄按鈕 #6 |
KEYCODE_BUTTON_7 | 通用遊戲手柄按鈕 #7 |
KEYCODE_BUTTON_8 | 通用遊戲手柄按鈕 #8 |
KEYCODE_BUTTON_9 | 通用遊戲手柄按鈕 #9 |
KEYCODE_BUTTON_10 | 通用遊戲手柄按鈕 #10 |
KEYCODE_BUTTON_11 | 通用遊戲手柄按鈕 #11 |
KEYCODE_BUTTON_12 | 通用遊戲手柄按鈕 #12 |
KEYCODE_BUTTON_13 | 通用遊戲手柄按鈕 #13 |
KEYCODE_BUTTON_14 | 通用遊戲手柄按鈕 #14 |
KEYCODE_BUTTON_15 | 通用遊戲手柄按鈕 #15 |
KEYCODE_BUTTON_16 | 通用遊戲手柄按鈕 #16 |
KEYCODE_BUTTON_A | 遊戲手柄按鈕 A |
KEYCODE_BUTTON_B | 遊戲手柄按鈕 B |
KEYCODE_BUTTON_C | 遊戲手柄按鈕 C |
KEYCODE_BUTTON_X | 遊戲手柄按鈕 X |
KEYCODE_BUTTON_Y | 遊戲手柄按鈕 Y |
KEYCODE_BUTTON_Z | 遊戲手柄按鈕 Z |
KEYCODE_BUTTON_L1 | 遊戲手柄按鈕 L1 |
KEYCODE_BUTTON_L2 | 遊戲手柄按鈕 L2 |
KEYCODE_BUTTON_R1 | 遊戲手柄按鈕 R1 |
KEYCODE_BUTTON_R2 | 遊戲手柄按鈕 R2 |
KEYCODE_BUTTON_MODE | 遊戲手柄按鈕 Mode |
KEYCODE_BUTTON_SELECT | 遊戲手柄按鈕 Select |
KEYCODE_BUTTON_START | 遊戲手柄按鈕 Start |
KEYCODE_BUTTON_THUMBL | Left Thumb Button |
KEYCODE_BUTTON_THUMBR | Right Thumb Button |
待查
KEYCODE_NUM | 按鍵Number modifier |
KEYCODE_INFO | 按鍵Info |
KEYCODE_APP_SWITCH | 按鍵App switch |
KEYCODE_BOOKMARK | 按鍵Bookmark |
KEYCODE_AVR_INPUT | 按鍵A/V Receiver input |
KEYCODE_AVR_POWER | 按鍵A/V Receiver power |
KEYCODE_CAPTIONS | 按鍵Toggle captions |
KEYCODE_CHANNEL_DOWN | 按鍵Channel down |
KEYCODE_CHANNEL_UP | 按鍵Channel up |
KEYCODE_CLEAR | 按鍵Clear |
KEYCODE_DVR | 按鍵DVR |
KEYCODE_ENVELOPE | 按鍵Envelope special function |
KEYCODE_EXPLORER | 按鍵Explorer special function |
KEYCODE_FORWARD | 按鍵Forward |
KEYCODE_FORWARD_DEL | 按鍵Forward Delete |
KEYCODE_FUNCTION | 按鍵Function modifier |
KEYCODE_GUIDE | 按鍵Guide |
KEYCODE_HEADSETHOOK | 按鍵Headset Hook |
KEYCODE_META_LEFT | 按鍵Left Meta modifier |
KEYCODE_META_RIGHT | 按鍵Right Meta modifier |
KEYCODE_PICTSYMBOLS | 按鍵Picture Symbols modifier |
KEYCODE_PROG_BLUE | 按鍵Blue “programmable” |
KEYCODE_PROG_GREEN | 按鍵Green “programmable” |
KEYCODE_PROG_RED | 按鍵Red “programmable” |
KEYCODE_PROG_YELLOW | 按鍵Yellow “programmable” |
KEYCODE_SETTINGS | 按鍵Settings |
KEYCODE_SOFT_LEFT | 按鍵Soft Left |
KEYCODE_SOFT_RIGHT | 按鍵Soft Right |
KEYCODE_STB_INPUT | 按鍵Set-top-box input |
KEYCODE_STB_POWER | 按鍵Set-top-box power |
KEYCODE_SWITCH_CHARSET | 按鍵Switch Charset modifier |
KEYCODE_SYM | 按鍵Symbol modifier |
KEYCODE_SYSRQ | 按鍵System Request / Print Screen |
KEYCODE_TV | 按鍵TV |
KEYCODE_TV_INPUT | 按鍵TV input |
KEYCODE_TV_POWER | 按鍵TV power |
KEYCODE_WINDOW | 按鍵Window |
KEYCODE_UNKNOWN | 未知按鍵 |