adb命令
连接被测设备adb connect 127.0.0.1:62001
备注:夜神模拟器的端口是规律的,第一个模拟器端口是62001,第二个模拟器端口是62025,第三个是62025+1,依此类推。
查看当前连接了哪些设备adb devices
进入已连接设备内部命令adb shell
android 设备底层是 linux 系统。 shell 是 linux 系统的字符交互界面。
#同时开了很多台设备,进入指定设备shell
adb -s 127.0.0.1:62001 shell
#退出adb shell
exit
root用户是系统中唯一的超级管理员,一般情况下都不要乱使用root。
在设备安装apk
adb install | -r <apkName> -r 覆盖原安装文件 -s 可以指定设备
eg:
#默认安装
adb install "C:Usersm1877Desktopwandoujia.apk"
#覆盖安装
adb install -r "C:Usersm1877Desktopwandoujia.apk"
#指定设备安装(先把之前App删除)
adb -s 127.0.0.1:62001 install "C:Usersm1877Desktopwandoujia.apk"
卸载apk
1.执行命令删除
adb uninstall | -k <apkName> 卸载软件
adb uninstall com.wandoujia.phoenix2
2.如何获取包名Package,那这是什么呢?
进入手机
adb shell
在/data/app/路径下找包名
cd /data/app/
ls
如果我想查看设备上面已安装的应用包名
adb shell pm list package
文件读取写入
将文件从PC写入到设备
adb push <local> <remote>
adb push C:kyb.txt /sdcard
将文件从设备读取到PC
adb pull <remote> <local>
adb pull /sdcard/server.log C:Usersm1877Desktop
注意:由于权限问题,不能直接pull到电脑磁盘根目录,否则会报错:
屏幕截图
$ adb shell screencap /sdcard/11.png
adb pull /sdcard/11.png C:Usersm1877Desktop
monkey压力测试具体怎么做
保证手机连接通常
adb connect 127.0.0.1:62001
然后查看一下已连接的设备
adb devices
启动monkey
Adb shell
Monkey
对安卓手机进行一个最基本的压力测试
adb shell monkey 100
解释:
monkey命令格式如下:
$ adb shell monkey [options] <event-count>
- [options] 是指monkey可传入的参数,是可选项(如果不指定options,Monkey将以无反馈模式启动)
- <event-count> 是指随机发送事件数。如:输入100就是执行100个伪随机事件,为必选项。
压测时要输出日志,进行分析,所以这里可以接参数v
adb shell monkey -v 100
-v:打印出日志信息,每个-v将增加反馈信息的级别。-v越多日志信息越详细,不过目前最多支持3个-v,
如果某一次执行的操作除了问题,需要复现可以使用 -s参数,后面在接一个seed值
公式:$ adb shell monkey -s <seed> <event-count>
$ adb shell monkey -s 666 100
-----------------------------------------------------------------
让每个操作慢一点,可以在每一个指令之间加上固定的间隔时间,可以用--throttle(注意,前面是--)命令
公式:$ adb shell monkey --throttle <milliseconds>
$ adb shell monkey -v --throttle 3000 5
--throttle:后面接时间,单位为ms
app点点点操作比较多,-pct-touch:后面接触摸事-件百分比
$ adb shell monkey --pct-touch
$ adb shell monkey -v -v --pct-touch 10 200
-----------------------------------------------------------------
滑动比较多,(手势事件)在这里接的是--pct-motion
$ adb shell monkey --pct-motion
$ adb shell monkey -v -v --pct-motion 30 200
两个同时调整
adb shell monkey -v -v --pct-motion 20 --pct-touch 30 50
视频类的软件调整屏幕旋转的事件
$ adb shell monkey --pct-rotation <percent>
adb shell monkey --pct-rotation 22 50
--pct-rotation 后面接屏幕旋转事件的比例值。
当然这样的事件参数有很多
包含11大事件,触摸事件、手势事件、二指缩放事件、轨迹事件、屏幕旋转事件、基本导航事件、主要导航事件、系统按键事件、启动Activity事件、键盘事件、其他类型事件。
1.触摸事件
触摸事件是指在屏幕某处按下并抬起的操作,
--pct-touch
Touch(ACTION_DOWN)
Touch(ACTION_UP)
2.手势事件
手势事件是指在屏幕某处的按下、随机移动、抬起的操作,即直线滑动操作。在手机上看到的实际操作是一个没有拐弯的直线滑动操作。
--pct-motion
一个ACTION_DOWN事件、
一系列ACTION_MOVE事件
一个ACTION_UP事件
3.二指缩放事件
二指缩放事件是指在屏幕上的两处同时按下,并同时移动,最后同时抬起的操作,--pct-pinchzoom
一个ACTION_DOWN事件和一个ACTION_POINTER_DOWN事件
一系列的ACTION_MOVE事件,即两个手指同时在屏幕上直线滑动;ACTION_POINTER_UP事件和一个ACTION_UP事件,即两个手指同时放开。
4.轨迹事件
轨迹事件是由一个或多个随机的移动组成的,有时会伴随着点击。
--pct-trackball参数来配置其事件百分比。
一系列的Trackball(ACTION_MOVE)事件
5.屏幕旋转事件
模拟的Android手机的横屏和竖屏切换。
--pct-rotation
一个rotation事件组成
6.基本导航事件
--pct-nav
该事件是由一个Key(ACTION_DOWN)和一个Key(ACTION_UP)组成的,
7.主要导航事件
主要导航事件是指点击“主要导航”按键的操作,这些按键通常会导致UI界面中的动作,如键盘的中间键、回退按键、菜单按键。
--pct-majornav
一个Key(ACTION_DOWN)和一个Key(ACTION_UP)组成的,
8.系统按键事件
系统按键事件是指点击系统保留使用的按键的操作,如点击Home键、返回键、音量调节键等。
--pct-syskeys
一个Key(ACTION_DOWN)和一个Key(ACTION_UP)组成的,
9.启动Activity事件
该事件是由一个Switch操作组成的
10.键盘事件
--pct-flip
11.其他类型事件
--pct-anyevent
一个Key(ACTION_DOWN)和一个Key(ACTION_UP)
Monkey日志管理是Monkey测试中非常重要的一个环节,通过日志管理分析,可以获取当前测试对象在测试过程中是否会发生异常,以及发生的概率,同时还可以获取对应的错误信息,帮助开发定位和解决问题。
monkey日志保存方法
保存在PC中
保存在手机上
标准流和错误流分开保存
保存在PC中
>adb shell monkey [option] <count> >d:monkey.txt
C:Usersm1877>adb shell monkey -v -v 100 >d:monkeylog.txt
保存在手机上
C:Usersm1877>adb shell
monkey -v 100 >/sdcard/monkeylog.log
标准流和错误流分开保存
·标准流与错误流分开保存,代码如下:
Monkey [option] <count> 1>/sdcard/monkey.txt 2>/sdcard/error.txt
C:Usersm1877>adb shell monkey -v 100 1>d:monkey.log 2>d:error.log
1.应用程序崩溃后继续发送事件参数
如果你希望monkey在应用程序崩溃后继续发送事件,则需要用到--ignore-crashes命令
$ adb shell monkey --ignore-crashes <event-count>
$ adb shell monkey -v --ignore-crashes 5
它可以在应用程序崩溃或发生失控异常时,继续运行。
2.超时错误继续发送事件
如果你希望monkey在超时错误发生后继续运行,则需要用到--ignore-timeouts命令。
$ adb shell monkey --ignore-timeouts
adb shell monkey -v --ignore-timeouts 5
在设置此选项后,当应用程序发生超时错误时,会继续运行
3.应用程序权限错误发生后继续发送事件
如果你希望monkey在应用程序权限错误发生后继续发送事件,则需要用到--ignore-security-exceptions命令。
$ adb shell monkey --ignore-security-exceptions
adb shell monkey -v --ignore-security-exceptions 5
针对某一个app要怎么进行monkey的压力测试。
参数要接-p:后面接一个或多个包名(<allowed-package-name>),
$ adb shell monkey -p <allowed-package-name> <event-count>
$ adb shell monkey -p com.tal.kaoyan 500
如果在当前app里需要同时访问其他app,那可以把相关的包名也接上。
$ adb shell monkey -p com.tal.kaoyan -p com.wandoujia.phoenix2 500
自定义脚本的稳定性测试
Monkey脚本API简介
LaunchActivity(pkg_name, cl_name):启动应用的Activity。参数:包名和启动的Activity。
Tap(x, y, tapDuration): 模拟一次手指单击事件。参数:x,y为控件坐标,tapDuration为点击的持续时间,此参数可省略。
UserWait(sleepTime): 休眠一段时间
DispatchPress(keyName): 按键。参数: keycode。 RotateScreen(rotationDegree, persist): 旋转屏幕。 参数:rotationDegree为旋转角度, e.g. 1代表90度;persist表示旋转之后是否固定,0表示旋转后恢复,非0则表示固定不变。
DispatchString(input): 输入字符串。
获取启动的页面参数 aapt dump badging
aapt dump badging "C:Usersm1877Desktopkaoyan3.1.0.apk" |findstr launchable-activity
获取包名
aapt dump badging "C:Usersm1877Desktopkaoyan3.1.0.apk"
Monkey脚本有两部分,一部分是头文件信息,一部分是具体的monkey命令。
//脚本的类型,使用默认的
type = raw events
//脚本执行的次数
count = 1
//脚本执行的速率
speed = 1.0
//下面为monkey命令
start data >>
具体的monkey脚本内容
编写脚本
kyb.txt
#头文件信息
#脚本类型,使用默认的,原始事件
type = raw events
#脚本执行的次数
count = 1
#执行的速率
speed = 1.0
#启动测试
start data >>
LaunchActivity(com.tal.kaoyan,com.tal.kaoyan.ui.activity.SplashActivity)
UserWait(2000)
Tap(628,979,1000) #点击取消升级,1000表示按压持续的时间
UserWait(2000)
Tap(802,68,1000) #点击跳过
UserWait(2000)
Tap(179,377,1000) #点击用户名输入框
DispatchString(trr123456)
UserWait(2000)
Tap(171,466,1000) #点击密码输入框
DispatchString(123456)
UserWait(2000)
Tap(452,625,1000) #点击登录按钮
执行脚本
脚本编写完成后,传到手机设备上,然后执行。
adb push C:Usersm1877>Desktopkyb.txt /sdcard
adb shell monkey -f /sdcard/kyb1.txt -v 1
Activity获取
研发提供 或者adb shell
然后dumpsys window windows |grep -i current
百度地图monkey测试需求分析
需求分析
1.测试指定的应用,因此需要使用-p指定被测app包名:com.baidu.BaiduMap
2.该测试的目的是希望模拟用户操作,因此需要让Monkey执行的时间尽可能的接近用户的常规操作,这样才能最大限度的发现用户使用过程中可能出现的问题,因此需要对Monkey执行的事件百分比做一些调整
2、这个测试的目的是希望模拟用户操作,因此需要让Monkey执行的事件尽可能地接近用户的常规操作,这样才可以最大限度地发现用户使用过程中可能出现的问题。因此需要对Monkey执行的事件百分比做一些调整:
触摸事件和手势事件是用户最常见的操作,所以通过--pct-touch和- pct-motion将这两个事件的占比调整到40%与25%;目标应用包含了多个Activity,为了能覆盖大部分的Activity,所以通过pct appswitch将Activiy切换的事件占比调整到10%;被测应用在测试中出现过不少横竖屏之间切换的问题,这个场景也必须关注,因此通过- pct rotation把横竖屏切换事件调整到10%。
3、使用-s参数 来指定命令执行的seed值Monkey会根据seed值来生成对应事件流,同一个seed生 成的事件流是完全相同的。这里指定了seed值,是为了测试发现问题时,便于进行问题复现。
4、使用-throttle参数来控制Monkey每个操作之间的时间间隔指定操作之间的时间间隔,一方面是希望能更接近用户的操作场景,正常用户操作都会有一定的时间间隔;另一方面也是不希望因为过于频繁的操作而导致系统崩溃,尤其是在比较低端的手机_上执行测试时。因此通过-throtote设置Monkey每个操作固定延迟0.4秒。
5、使用-ignore -crashs--ignore timeouts参数使Monkey遇到意外时能继续执行在执行Monkey测试时,会因为应用的崩溃或没有响应而意外终止,所以需要在命令中增加限制参数-ignore -crash和-ignore timeouts,让Monkey在 遇到崩溃或没有响应的时候,能在日志中记录相关信息,并继续执行后续的测试。
6、使用-v指定log的详细级别Monkey的日志输出有3个级别:日志的级别越高,其详细程度也越高。为了方便问题的定位,这里将日志设为_v-v。
adb shell monkey -p com.baidu.BaiduMap 500 --pct-touch 40 --pct-motion 25 --pct-appswitch 10 --pct-rotation 5 10 -s 166 -throttle 400 --ignore-timeouts 5 -v -v 200
QQ_Android版自定义脚本脚本:
//脚本的类型,使用默认的
type = raw events
//脚本执行的次数
count = 1
//脚本执行的速率
speed = 1.0
//下面为monkey命令
start data >>
具体的monkey脚本内容
编写脚本
kyb.txt
#头文件信息
#脚本类型,使用默认的,原始事件
type = raw events
#脚本执行的次数
count = 1
#执行的速率
speed = 1.0
#启动测试
start data >>
LaunchActivity(com.tencent.mobileqq,com.tencent.mobileqq.activity.LoginActivity)
UserWait(2000)
Tap(77.9,922.2,1000) #点击取消升级,1000表示按压持续的时间
UserWait(2000)
#Tap(539.2,1193.0,1000) #点击登录
#UserWait(2000)
Tap(353.5,326.7,1000) #点击用户名输入框
DispatchString(406777673)
UserWait(2000)
Tap(355.5,433.7,1000) #点击密码输入框
DispatchString(123456)
UserWait(2000)
Tap(361.5,611.5,1000) #点击登录按钮
adb shell dumpsys window windows |grep -i current