摆一摆Android自动化测试一 [Monkey]
Android 平台自动化测试通常使用三种方式来做:1.Monkey;2.MonkeyRunner;3:Robotium
先来看看Monkey测试是怎么做的:
1.什么是Monkey ?
官方定义:
大意是:Monkey是一个程序,它可以运行在模拟器或者手机之上,发送一系列伪随机事件流给设备,以模拟用户的点击,滑动,等手势操作。可以用来对应用做压力测试
[Turbo]:听过这么一个解释来说明为什么叫Monkey 测试,手机最终是到消费者手机使用的,你无法判断猴子(用户)是怎么操作手机中的软件的,从软件测试的各种覆盖率角度来看,测试工程师是不可能做到的,这就需要一种方法来尽可能的避免一些由用户非常规操作引起的问题,这就是Monkey的使命.
Monkey在运行过程中的一系列操作,都是随机的(随然底层并不是真正的随机),通过自定义事件流来对App测试,可以最大限度地保障App的健壮性.
2.Monkey环境怎么配?
[Turbo]:
1.只要确保SDK 环境配置OK,通过adb devices 能检测到设备就OK.(详细配置过程非常easy,请baidu)
2.Monkey,它存在于每一部Android设备当中,使用java写的,直接用就行了,不信? 有图有真相:
先来找找这个jar 文件。手机root(or ENG版本)后,在system/framework目录下可以看到monkey.jar。
那么这个jar文件是怎么执行的呢?手机root(or ENG版本)后,在system/bin 目录下可以看到monkey 这个shell 脚本,我们可以直接在命令行中使用adb shell monkey。
3.Monkey的使用方法
通过以下简单实例来讲解部分命令的用法:
Precondition:
- AndroidSDK环境已正确配置,通过ADB能连接到手机.
- 手机通过USB与电脑连接.
-
通过 cmd 进入命令行.
Steps:
- 输入’adb shell monkey -help’ //可以看到monkey参数介绍.输入’adb shell monkey 200’ // Monkey随机启动手机App,发送200个伪随机事件.
- 输入''adb shell monkey –p com.android.browser 100'//-p 用于指定要运行的Package.com.android.browser就是要运行的包(App)
- 输入'adb shell monkey –c android.intent.category.LAUNCHER 1000'//使用-c来指定类.(以下命令将会运行系统Activity里面的一些activities),如果指定了一个或多个类,Monkey将只被允许访问指定的这些类里面的Activities,如果没有指定,Monkey将会从” Intent.CATEGORY_LAUNCHER” 或者” Intent.CATEGORY_MONKEY.”里面随机访问其中的Activities.
- 输入'adb shell monkey –p com.android.browser --throttle 300 100'//throttle 300 前面必须是’--’而不是’-’,’300’就是事件流之间的时延,也就是说当一个事件流执行完后,要隔0.3秒再执行下一个事件流操作,此数值不宜过小,尽量大于250.
- 输入'adb shell monkey -p com.android.browser -s 10 -v-v-v 200'//’ -s 10’,指的是随机产生的seed 值是’10’,可自定义,当执行完成后如果想让monkey再一次执行与上次相同的操作,可以复用上面的命令(指定随机产生的seed值,如果两次seed值相同,则产生的事件流将是一样的,这也就是为什么上面解释monkey的时候说的是伪随机).’-v-v-v’指的是事件执行过程中显示信息的详细程度,总共分为三个级别,Level 0(-v),Level 1(-v-v),Level 2(-v-v-v),’-v-v-v’为最详细的log显示.
- 输入'adb shell monkey --pct-touch 50'//pct- 指定事件的类型和发生频率,此命令表明发生的点击事件为50%。Sample:adb shell monkey -p com.android.browser -p com.android.settings --ignore-crashes --ignore-timeouts --ignore-security-exceptions --pct-touch 80 5000
- 输入'adb shell monkey -p com.android.browser –-ignore -crashes 50000'//Monkey在使用过程中,由于被测试的包可能有问题会导致系统出现force close,一旦出现Monkey将会停止运行.如果指定了’--ignore-crasher’,运行过程中出现force close将会被忽略,继续执行余下的事件,直至完成.类似参数还有:--ignore –timeouts/--ignore-security-exception
- hprof如果设置了,在Monkey 事件流之前及之后会立即生成报告存放于data/misc中,如下图:
- 输入’adb shell monkey –help’ //可以看到monkey 参数介绍.
4.如何查看被测程序的包名?
这里介绍两种简单的方式来查看:
5.Monkey主要用在什么地方?
- 开发者或者测试工程师需要对自己负责的模块进行压力测试时
- 应用平台为了保证它们的用户体验对上传的应用Monkey进行测试
- 手机厂商为了保证整个系统的稳定性,进行系统级的Monkey测试
总结:Monkey虽然简单易用,但也是最贴近手机测试的一种自动化测试方式。
后面blog将会写写关于MonkeyRunner,Robotium等自动化知识,欢迎各位同行与我多多交流(转载请注明出处).