android之Monkey测试简介

来源:互联网 发布:qq聊天室软件 编辑:程序博客网 时间:2024/04/29 08:13
Monkey测试简介

在android手机上做自动化测试,monkey比cts,Android UnitTest 好用多了,他其实是继承与adb shell中的一段的shell指令。

工具名称:Mokey测试工具
工具描述:
Mokey是android系统自带测试工具,monkey测试工具是向用户发送伪用户事件流,对android系统进行压力测试。测试软件的稳定性和健壮性
测试方法:
Monkey是android系统自带的测试工具,需运行在其环境中的shell里启动该工具,可以使用adb.exe shell进入shell环境,直接使用monkey命令后跟参数即可进行android的压力测试。Monkey的常用命令参数有:
-p ALLOWED_PACKAGE 伪事件操作的程序范围,当设定-p参数后,随机伪事件将会在设定的应用程序中产生,当没有设定该参数是,随机伪事件将在Intent.CATEGORY_LAUNCHER或Intent.CATEGORY_MONKEY运行,可以指定多个应用程序
-v 增加反馈信息的级别,参数选择有level0、level、level2
其他可以参照monkey参数含义
测试结果:
当伪事件运行完毕后,且无错误时,shell上会提示monkey finish信息。

monkey测试的原理

利用socket通讯的方式来模拟用户的按键输入,触摸屏输入,手势输入等,看设备多长时间会出异常。当Monkey程序在模拟器或设备运行的时候,如果用户触发了比如点击,触摸,手势或一些系统级别的事件的时候,它就会产生随机脉冲,所以可以用Monkey用随机重复的方法去负荷测试你开发的软件。

二、Monkey程序介绍
1) Monkey程序由Android系统自带,使用Java语言写成,在Android文件系统中的存放路径是:/sdk/sdk/tools/lib/;

要获取Monkey命令自带的简单帮助,在CMD中执行命令:
adb shell monkey –help

1) 参数:  -p
参数-p用于约束限制,用此参数指定一个或多个包(Package,即App)。指定
包之后,Monkey将只允许系统启动指定的APP。如果不指定包,Monkey将允许系统启动设备中的所有APP。

查找包名:

C:\Users\Administrator>adb -d shell pm list package | find "web"
package:com.example.webview

adb -d uninstall -k com.example.webview
指定一个包:

adb shell monkey -p com.example.webview 100

指定多个包:adb shell monkey -p 包1 –p包2  -p 包3 100
说明:
100是事件计数(即让Monkey程序模拟100次随机用户事件)。

不指定包:adb shell monkey 100说明:Monkey随机启动APP并发送100个随机事件。

要查看设备中所有的包,在CMD窗口中执行以下命令:
  >adb shell

  su
  #cd data/data
  #ls

2) 参数:  -v
用于指定反馈信息级别(信息级别就是日志的详细程度),总共分3个级别,分别对应的参数如下表所示:
日志级别 Level 0 
示例 adb shell monkey -p com.example.webview –v 100
说明 缺省值,仅提供启动提示、测试完成和最终结果等少量信息 相应源代码如图所示了,这十分有利于调试了。

日志级别 Level 1
示例 adb shell monkey -p  com.example.webview –v -v 100
说明  提供较为详细的日志,包括每个发送到Activity的事件信息
日志级别 Level 2
示例 adb shell monkey -p c com.example.webview –v -v –v 100
说明  最详细的日志,包括了测试中选中/未选中的Activity信息
-s
用于指定伪随机数生成器的seed值,如果seed相同,则两次Monkey测试所产生的事件序列也相同的。
示例:

Monkey测试1:adb shell monkey -p  com.example.webview –s 10 100
Monkey 测试2:adb shell monkey -p  com.example.webview –s 10 100
两次测试的效果是相同的,因为模拟的用户操作序列(每次操作按照一定的先后顺序所组成的一系列操作,即一个序列)是一样的。操作序列虽   然是随机生成的,但是只要我们指定了相同的Seed值,就可以保证两次测试产生的随机操作序列是完全相同的,所以这个操作序列伪随机








0 0
原创粉丝点击