APP測試---adb命令使用(monkey、input、11大事件等),附按鍵表(keycode)

重點:

  • 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服務,監聽USB
  • adb tcpip <port>  重啓adbd服務,監聽指定的TCP端口
  • adb shell:進入android shell模式,可使用大部分Linux命令(如有多臺設備,見下一命令)
  • adb -s 模擬器編號 命令
    • 如,進入某一設備的shell模式:adb -s emulator-5554 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目錄下查看
  • 卸載軟件: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 未知按鍵
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章