一、简介:
Monkey测试是Android平台下自动化测试的一种快速有效的手段,可以模拟用户触摸屏幕、滑动轨迹球、按键等操作来对模拟器或者手机设备上的软件进行压力测试,检测该软件的稳定性、健壮性。它的原理是向系统发送伪随机的用户事件流(如按键输入、触摸输入、手势输入等),实现对正在开发的应用程序进行压力测试。
二、Monkey的特性
(1)测试的对象仅为应用程序包(apk包),有一定的局限性;
(2)Monkey测试使用的事件流数据流是随机的,不能进行自定义;
(3)可对MonkeyTest的对象、事件数量、类型、频率等进行设置。
三、Monkey程序介绍
1) Monkey程序由Android系统自带,使用Java语言写成,在Android文件系统中的存放路径是:/system/framework/monkey.jar;
2) Monkey.jar程序是由一个名为“monkey”的Shell脚本来启动执行,shell脚本在Android文件系统中的存放路是:/system/bin/monkey;这样就可以通过在CMD窗口中执行:adb shell monkey {+命令参数}来进行Monkey测试了。
四、环境配置
1. 安装SDK for Windows
2. 设置sdk下面tools的环境变量
点击Path,将“D:\android-sdk-windows\platform-tools”添加到变量值中,与之前的变量值用“;”隔开。
3.手机与91相连,并root权限4.使用adb devices
说明:(1)adb devices 找不到设备怎么办?
http://jingyan.baidu.com/article/ce09321b5b76642bff858f31.html
五、adb命令
1.包名获得, 测试命令:adb shell pm list package
或者
2.使用Monkey发一条测试命令。
adb -s 4d00e281b248b0cb shell monkey -v -p meiyapico.falcon 500 > 1.txt
-s 设备 -v 日志级别 -p 包名 日志输出到1.txt文件中
3.观察android设备,直到Monkey停止。六、结果日志显示
Events injected: 500//注入事件500
1)Sending rotation degree=0, persist=false //发送屏幕翻转 度=0,存留=假
2)Dropped: keys=11 pointers=38 trackballs=0 flips=0 rotations=0 //丢弃:键=11,指针=38,轨迹球=0,键盘轻弹=0,屏幕翻转=0
3)Network stats: elapsed time=19957ms (0ms mobile, 19957ms wifi, 0ms not connected) //网络状态:占用时间=19957ms(手机0ms,wifi19957ms,未连接0ms)
4)Monkey finished //Monkey测试完成
一般的测试结果分析:
1、 ANR问题:在日志中搜索“ANR”
2、 崩溃问题:在日志中搜索“Exception
Monkey测试结果为pass的,LOG信息最后一行会有Monkey finished的字样。
Monkey测试结果为fail的,有以下两种情况:
A. LOG的最后会有以下提示字样,表示此次monkey测试fail,提供所有log给开发。
如:** Monkey aborted due to error. Events injected: 37511
:Sending rotation degree=0, persist=false
:Dropped: keys=0 pointers=24 trackballs=0 flips=0 rotations=0
## Network stats: elapsed time=4508008ms (0ms mobile, 0ms wifi, 4508008ms not connected)
** System appears to have crashed at event 37511 of 300000 using seed 1358091994830
B.LOG中无A情况中的错误信息提示,也无Monkey finished字样,但monkey 测试已中断,该问题仍定位为monkey测试fail,需要给开发提供所有的LOG,开发查找calendar_time关键字去定位问题。
备注:
管理设备
注:android手机、模拟器统一称为“设备”
adb devices // 显示连接到计算机的设备
adb get-serialno // 获取设备的ID和序列号serialNumber
------------------重启----------------------------------------------
adb reboot // 重启设备
adb reboot bootloader // 重启到bootloader,即刷机模式
adb reboot recovery // 重启到recovery,即恢复模式
------------------发送命令到设备--------------------------------------
adb [-d|-e|-s <serialNumber>]<command>
-d 发送命令给usb连接的设备
-e 发送命令到模拟器设备
-s <serialNumber> 发送命令到指定设备
adb kill-server
adb start-server
adb remount