Monkey入门介绍

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。



C、 StaleDataException、readException等异常, 在plog.log中可以看 到 相 应 的 打 印 信 息 , 也 会 有 相 应 的 信 息 : android.database.StaleDataException,该信息说明android的数据库操 作出现异常, 需要具体问题具体的分析 D、 IllegalArgumentException等异常,多少情况下为说明向函数传递 了一个不正确或不合法的参数需要具体问题具体的分析 E、 其他,带补充和分析说明





D 、可能同一应用中存在多处的空指针异常,所以一旦出现空指异常 后,可以分析和对比log 信息,如果不一致的话,需要把新的log信息 也一同添加到bug中,如果log信息一直的话,则不需要继续补充没有 必要的log信息。

7.2debug异常 debug异常主要是由于应用程序本身的错误导致的异常。在Monkey测 试过程中,该信息同样记录在plog.log (locat中也有该信息)中。一般 情况下,出现的该问题,很可能在手动测试时也可以测试到。 A、 com.android.browser该进程进入debug B、 出现的是IllegalStateException异常,该异常一般多是传递的参数 非法或被多次调用时出现的异常 C、 Bug信息提交时,详细信息中一般应该包含如下的log信息,方便 开发人员分析和定位。
揭开一个神秘稳定性测试工具的面纱...
Monkey入门介绍
Android系列 制作:Mads(吴越欣)
那么问题来了,什么是monkey...
1.什么是monkey
monkey是运行在你的程序 模拟器或设备,并生成 用户事件的伪随机流,例如点击,触摸,或手势, 以及若干系统级事件。您可以使用monkey压力测试 应用程序。Monkey 测试,所有的事件都是随机产生 的,不带任何人的主观性。
带你进入monkey的精神世界...
2.如何操作monkey
1.进入monkey环境
1.1首先检测android真机/模拟器是否已经连接:adb device 1.2然后选取一个设备来进入shell:adb -s XX设备 shell, 当然如果你只有一个设备,完全可以写adb shell

2.2.进入shell之后monkey help查看monkey的帮助,当然你可以去官 网看手册来进行学习

说明 最详细的日志,包括了测试中选中/未选中的Activity 信息

3.3参数: -s 用于指定伪随机数生成器的seed值,如果seed相同,则 两次Monkey测试所产生的事件序列也相同的。 Monkey测试1:adb shell monkey -p com.htc.Weather –s 10 100


两次测试的效果是相同的,因为模拟的用户操作序列(每 次操作按照一定的先后顺序所组成的一系列操作,即一个 序列)是一样的。操作序列虽 然是随机生成的,但是只 要我们指定了相同的Seed值,就可以保证两次测试产生的 随机操作序列是完全相同的,所以这个操作序列伪随机的; 这个-s就是指定了操作的顺序!

Monkey的异常log解析...
6.Monkey的异常log总结

6.1Null指针异常 空指针异常主要是有NullPointerException 异常提示,在Monkey测试 过程中,该信息一般记录在plog.log (locat中也有该信息)中。 如果Monkey命令被中断,说明有异常信息并且有对应的打印信息,可 以看到如下信息,说明几个问题: A、android.process.acore该进程出现异常 B、异常信息主要是由于NullPointerException引起的,也就是出现了 空指针,导致了acore进程进入debug C 、具体的可以继续分析是由哪个函数的那一行导致的,如可以从 rollAnimate3dRotate.java文件中的275行查找等。 / / a t uncherAnimator.ScrollAnimate3dRotate.dra wFrame(ScrollAnimate3dRotate.java:275)



6.4操作无响应异常 操作无响应的问题,主要表现在Monkey运行过程中,出现某功能无响 应,提示是否“强制关闭“或“等待“,同时会打印出相应的log信息, 如下: A、 可以说明com.android.soundrecorder该进程出现的无响应 B、 出现的是TimerOut异常,该异常一般出现时一般都会又 keyDispatchingTimedOut提示 C 、 目前, uPhone 手机中经常出现操作无响应的几个模块包括: clock、camera、soundrecorder、broser等,根据开发人员分析其他 模块也是有可能出现操作无响应的,测试过程中,请多注意。 D、 出现无响应异常,一般情况下很难被修复,和发送事件的频率也 是有关系的,从质量上来要求的话,要求尽可能的减少出现操作无响 应的频率和时间。
日志级别 Level 1: 示例 adb shellmonkey -p com.htc.Weather –v -v 100 说明 提供较为详细的日志,包括每个发送到Activity的事件信息

日志级别 Level 3: 示例 adb shellmonkey -p com.htc.Weather –v -v –v 100

3.4参数:--throttle <毫秒> 用于指定用户操作(即事件)间的时延,单位是毫秒;

示例:adb shell monkey -p com.htc.Weather –throttle 3000 100
4.高级的Demo介绍

adb shell monkey -p com.tmall.wireless -v -v -pct-touch 50 -pct-trackball 30 -throttle 300 100 用 monkey 测试天猫的这个包触摸操作百分之 50 ,轨迹球 操作百分之30,其它操作百分之20,总共进行100次随机 点击,事件之间间隔300ms

5.monkey的特征

5.1.测试的对象仅为应用程序包,有一定局限性 5.2Monkey测试使用的事件随机流是随机的,不能进行自定义 5.3可对MonkeyTest的对象,事件数量,类型,频率等进行设置 Monkey的停止条件: 1.如果限定了Monkey运行在一个或者几个特定包上,那么他会监控测 试图到其它包的操作,并对其进行组织 2.应用程序崩溃或接收到任何失控异常 3.应用程序不响应 4.正常运行结束 5.强制停止进程




6.5其他异常 A、 Restart System异常(系统重新启动),即log信息的最后几行会看 到Restart System的打印信息,说明手机被自动的重启或断掉,有几 个方面的原因 1、 运行过程中,存在异常手机被自动重启 2、 手机在运行过程中,进入设置中的恢复出场设置,导致手机重启 3、 其他原因,如果手机后盖移动等 B、 RuntimeException等异常,同样的会在plog.log中可以看到相应的 打印信息, ng.RuntimeException该问题多出现在操作无响应之 后,或者是某应用的服务无法启动或连接时,需要具体问题具体的分析




3.2有关参数v的学习: 用于指定反馈信息级别(信息级别就是日志的详细程度),总共分3 个级别,分别对应的参数如下表所示: 日志级别 Level0 : 示例 adb shellmonkey -p com.htc.Weather –v 100



说明 缺省值,仅提供启动提示、测试完成和最终结果等少量信息

3.查看应用package 3.1.aapt dump badging E:\apk\es3.apk 3.2.开发版手机或模拟器UI利器:hierarchyviewer1有关参数p的学习: 参数 -p 用于约束限制,用此参数指定一个或多个包( Package ,即 App)。指定包之后,Monkey将只允许系统启动指定的APP。如果不 指定包,Monkey将允许系统启动设备中的所有APP。 指定一个包: adb shell monkey -p com.htc.Weather 100 说明:com.htc.Weather为包名,100是事件计数(即让Monkey程序 模拟100次随机用户事件)。 指定多个包:adb shell monkey -p com.htc.Weather –p com.htc.pdfreader -p com.htc.photo.widgets 100 不指定包:adb shell monkey 100


一些好的测试建议...

说明几点: 1、 log信息的分析,希望在bug信息的简述中能够明确说明清楚出现 的是什么异常,具体的log信息要单独添加到详细信息描述中,方便相


关人员定位和查看。
2、 buy的提交,对于Monkey测试出现的问题 a、 首先要求分析log信息 b、 再次要确认该bug是否已经提交?已经提交的bug和新运行出来的 问题是否一致? c、 如果不一致的话,是否属于同一问题,如空指针异常,是的话就 把该问题的log信息一起注释到bug信息中,并添加所有的log信息 d、 如果不一致的,也不属于同一问题的话,可以提交新的bug 3、 在java编程中,一般的异常都会抛出xxx Exception的信息,可以 跟进xxx进行相关的判断和分析,具体的异常则需要具体问题具体分析。



6.3低内存异常 低内存异常一般情况下,主要表现在出现OutOfMemoryError异常或者 提示Out of memory,其后果同样表现为抛出OutOfMemoryError异常 或者是通过kill process 来杀掉部分进程以释放内存空间,当然如果被 kill点关键的进程的话,也就可能导致部分应用会自动的退出。出现该 情况时,主要是在进行频繁的进行大量的操作导致的,所以使用手动 的方式也是可能进行重现的。 A、 com.android.elastos.backup该进程出现的异常 B、 出现的是OutOfMemoryError 异常,该异常一般多频繁的操作(即 多次调用某个函数,存在申请变量空间未释放)导致的 C、 Bug信息提交时,详细信息中同样应该包含如下的log信息,方便 开发人员分析和定位。
相关文档
最新文档