APP测试---adb命令使用(monkey、input、11大事件等),附按键表(keycode)
重点:adb命令的使用操作日志的解读:logcatIOS与安卓苹果:基于Unix- 苹果开发语言:OC、Swift- 开发工具包:Xcode安卓基于Linux开发语言:java安卓四大组件:重要Android四大基本组件分别是Activity,Service服务,Content Provider内容提供者,BroadcastReceiver广...
重点:
- 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 | 未知按键 |
更多推荐
所有评论(0)