Monkey介绍
顾名思义,Monkey就是猴子, Monkey测试,就像一只猴子, 在电脑面前,乱敲键盘在测试。 猴子什么 都不懂, 只知道乱敲
通过Monkey程序模拟用户触摸屏幕、滑懂Trackball、 按键等操作来对设备上的程序进行 压力测试,检测程 序多久的时间会发生异常
Monkey用来做什么
Monkey 主要用于Android的稳定性测试,自动的一个压力测试小工具, 主要目的就是为了测试app 是否会 Crash(崩溃)
Monkey程序介绍
(1) Monkey程序由Android系统自带,使用Java语言写成,在Android文件系统中的存放路径是: /system/framework/monkey.jar;
(2) Monkey.jar程序是由一个名为“monkey”的Shell脚本来启动执行,shell脚本在Android文件系统 中 的存放路径是:/system/bin/monkey;
(3)Monkey 命令启动方式:
a)可以通过PC机CMD窗口中执行: adb shell monkey {+命令参数}来进行Monkey测试
b)在PC上adb shell 进入Android系统,通过执行 monkey {+命令参数} 来进行Monkey 测试
c ) 在Android机或者模拟器上直接执行monkey 命令,可以在Android机上安装Android终端模拟器
Monkey 命令 基本参数介绍
使用monkey测试手机所有程序
adb shell monkey 100 执行monkey测试100次 针对rom测试或者
-p <允许的包名列表>
adb shell monkey -p 包名 100
用此参数指定一个或多个包。指定包之后,monkey将只允许系统启动指定的app。如果不指定包, monkey将允许系统启动设备中的所有app。
指定一个包:
将log信息写到本地
adb shell monkey 100 >路径
-s 随机数种子
- 用于指定伪随机数生成器的seed值,如果seed相同,则两次Monkey测试所产生的事件序列也相同的。
示例:
monkey测试1:adb shell monkey –s 10 100
monkey测试2:adb shell monkey –s 10 100
–throttle <毫秒>
- 用于指定用户操作(即事件)间的时延,单位是毫秒;如果不指定这个参数,monkey会尽可能快的 生成和发 送消息。
- 例:adb shell monkey -p com.example.login --throttle 300 100
- 表示执行100个伪随机用户事件流,事件间隔为300毫秒。
- 注:一般设置为300毫秒,原因是实际用户操作的最快300毫秒左右一个动作事件。
–pct-touch 触摸事件
1.调整触摸事件的百分比。(触摸事件是指在屏幕中的一个down-up事件,即在屏幕某处按下并抬起的操作)
2.–pct-touch:触摸事件。即在某一位置的Down-Up(手指的放下和抬起)事件。Down(ACTION_DOWN)和 Up(ACTION_UP)的坐标临近,但并非相同。
3.如:adb shell monkey --pct-touch 67 -v 10
4.表示执行10个伪随机用户事件流,并调整其中触摸事件的百分比为67%。
5.注:此参数设置要适应当前被测应用程序的操作,比如一个应用80%的操作都是触摸,那就可以将此参数的百 分比设置成相应较高的百分比。
–pct-motion
- 调整手势事件motion事件百分比。(motion事件是由屏幕上某处一个down事件、一系列伪随机的移动事件和 一个up事件组成)
- –pct-motion:动作事件。以Down(ACTION_DOWN)开始,Up(ACTION_UP)结尾,中间至少有一次Move (ACTION_MOVE)。
- 如:adb shell monkey --pct-motion 67 -v 10
- 表示执行10个伪随机用户事件流,并调整其中动作事件的百分比为67%。
- 注:这里的移动是直线滑动
Event percentages:
0:–pct-touch//touch
events percentage触摸事件百分比(触摸事件是一个在屏幕单一位置的按下-抬起事件)
1:–pct-motion//motion
events percentage手势事件百分比(手势事件是由一个在屏幕某处的按下事件、一系列的伪随机移动、一 个抬起事件组成)即一个滑动操作,但是是直线的,不能拐弯
2:–pct-pinchzoom//pinch
zoom events percentage二指缩放百分比,即智能机上的放大缩小手势操作
3:–pct-trackball//trackball 即单纯的Move(ACTION_MOVE)
events percentage轨迹球事件百分比(轨迹球事件包括一个或多个随机移动,有时还伴有点击。轨迹球现 在智能手机上已经没有了,就是类似手柄的方向键一样)
4:–pct-rotation//screen
rotation events percentage屏幕旋转百分比,横屏竖屏
5:–pct-nav//nav 基本导航事件。即来自于方向输入设备的上下左右操作。
events percentage”基本”导航事件百分比(导航事件包括上下左右,如方向输入设备的输入)老手机的上 下左右键,智能机上没有
6:–pct-majornav//major 即Navigation Bar的确认,菜单,返回键等
nav events percentage”主要”导航事件百分比(这些导航事件通常会引发UI的事件,例如5-way pad的 中间键、回退键、菜单键)
7:–pct-syskeys//system(key)
operations percentage”系统”按钮事件百分比(这些按钮一般专供系统使用,如Home, Back, Start Call, End Call,音量控制)
8:–pct-appswitch//app
switch events percentage启动activity事件百分比。在随机的间隔里,Monkey会执行一个 startActivity()调用,作为最大程度覆盖包中全部Activity的一种方法
9:–pct-flip//keyboard
flip percentage键盘轻弹百分比,如点击输入框,键盘弹起,点击输入框以外区域,键盘收回
10:–pct-anyevent//anyevents 该事件可能包含其他上述事件。
percentage其他类型事件百分比。包括了其他所有的类型事件,如按键、其他不常用的设备上的按钮等等。
–ignore-crashes
作用:通常,应用发生崩溃或异常时Monkey会停止运行。如果设置此项,Monkey将继续发送事件给系统,直 到事件计数完成。
正常操作,不忽略异常
手机兼容性测试
Android App 兼容性测试,是一个比较重要的 App 评价内容,
说到测试阶段,兼容性测试主要是对 App 在各类机型上的兼容、适配等情况进行测试。搞清楚这一阶段的测试
重点后,因此, Android App 在进行兼容性测试前,一定要做好其前序测试内容,否则兼容性测试效果将会较
差。
机型配置问题
Android 兼容测试一定要做到宽范围覆盖,如果做不到这个,那么就违背了兼容性测试的目标 —— 测试 App 在各
类机型、系统上的运行是否兼容、适配。
因此,兼容性测试必须要在各个机型、系统上对 App 进行运行、测试,查看相关 UI 是否适配、功能是否正常。
所以,必须要为兼容性测试配备尽可能多的机型。这是不是意味着,你的公司要去购置各类机型设备?当然不
是。对于一般的公司或者开发者,这将会是一大笔开销,为了节约资金而造成进行覆盖率较低的话,则失去了
兼容性测试的意义。另外,这也是没必要的,因为往往你就一个或两三个 App ,为了这少量 App 测试,而去购置
如此大量的设备,无疑是一种资源浪费。除此,还有一个原因,将在兼容性测试如何展开里去说。除此,机型
量的多少也是一个权衡的过程,目前,通用的兼容性测试一般覆盖 Top100-300 的机型,对于实在是小量机型
或者老旧机型,用户量非常小,在一定程度上,是否需要覆盖则需要权衡,总的来说, Top 排名的手机基本足
够
兼容性如何展开?
这是一个经验性的过程,可以去借鉴大型互联网公司的成熟 App 的测试方法。目前,无论是国际知名 App ,还是
国内知名 App ,谷歌、 Facebook , BAT 等,他们都有大量的 App 对外推出,对于 App 兼容性要求非常高,因
此,他们的做法是非常值得借鉴的。这些公司的兼容性测试,都有一个相同的解决方案,那就是自动化测试框
架与平台的实现。通过浏览上述公司在各种大会公布的内容,或者通过论坛知识分享,都能看到,他们不仅有
自己的测试实验室,拥有大量的手机,除此,还有一整套的自动化测试平台,来完成兼容性测试。
第一步:让手机显示开发者选项
多次点击版本号,显示开发者选项
允许USB调试
若使用真机,用 USB 将手机和电脑连接 , 在手机端进行操作:
( 1 )选择 USB 连接方式为设备文件管理;
( 2 )设置 -> 开启开发者选项 -> 勾选 ‘USB 调试 ’ (真机和模拟器上皆需进行)。
检测连接设备
在终端中输入’adb devices‘,此时已连接设备列表下应存在设备序列号
执行相应的测试操作
adb devices
adb install xxx
adb uninstall 程序包名
adb shell 进入手机
adb shell dumpsys meminfo + 包名:应用的内存使用情况
adb logcat -v time > C:/log/aa.txt
adb logcat *:W
用 monkey 命令 对登录 apk 进行 性能测试