接上面一篇 继续
(7)--kill-process-after-error
参数说明:用于指定当应用程序发生错误时,是否停止运行。如果指定此参数,当应用程序发生错误时,应用程序停止运行并保存当前状态(应用程序仅停止在发送错误时的状态,系统并不会结束该应用程序的进程)
例子:adb shell monkey-pcom.android.music--kill-process-after-error 1000
表示在测试过程中,如果music发送错误,monkey会停止运行并保存在当前状态。
(8)-hprof
参数说明:如果设置这个选项在Monkey事件序列之前和之后生成概要分析报告。这将在数据/misc中生成大型(5MB)文件,请慎用该选项
【事件选项】主要有--pct-[touch、motion、trackball、syskeys、nav、majornav、apps-witch、flip、rotation、anyevent、pinchzoom]等。
Monkey可以同时指定多个类型事件的百分比,但总和不能超过100%
(1)--pct-touch<percent>
参数说明:调整触摸事件的百分比,触摸事件是一个“按下”“抬起”事件发生在触屏的某处。
例子:adb shell monkey-pcom.music-pct-touch 101000
设置测试的触摸事件的百分比为10%
(2)pct-motion<percent>
参数说明:调整动作事件的百分比,动作事件由屏幕上某处的按下事件、随机事件和抬起事件组织。
例子:adb shell monkey-pcom.android.calendar--pct-motion 201000
表示设置动作事件的白费比为20%
(3)--pct-trackball<percent>
参数说明:调整轨迹事件的百分比,归基金事件由一个或几个随机的移动事件组成,有时还伴随有点击。
例子:adb shell monkey-pcom.android.calendar--pct-trackball 301000
表示设置轨迹事件的百分比为30%
(4)--pct-syskeys<percent>
参数说明:调整系统按键事件的百分比,系统按键指HOME、BACK、POWER、音量+、音量-等按键。
例子:adb shell monkey-pcom.android.calendar--pct-syskeys 601000
(5)-pct-nav<percent>
参数说明:调整基本导航事件的百分比,基本导航事件由up、down、left、right组成
例子:adb shell monkey-pcom.android.calendar--pct-nav 301000
6)--pct-majornav<percent>
参数说明:调整主要导航事件的百分比,这些导航事件主要是键盘中的一些按键事件。
例子:adb shell monkey-pcom.android.calendar--pct-majornav 501000
(7)--pct-appswitch<percent>
参数说明:调整启动APP Activity百分比。也就是调用应用活动控件的百分比。
(8)--pct-flip<percent>
参数说明:键盘翻转事件的百分比
(9)--pct-rotation<percent>
参数说明:设置旋转事件的百分比,就是设置应用的转屏动作。
例子:adb shell monkey-pcom.android.calendar--pct-rotation 1001000
表示设置应用camera的转屏事件百分比为100
(10)--pct-anyevent<percent>
参数说明:调整其他类型事件的百分比,包括所有其他类型的事件。
(11)主要有--pct-pinchzoom
参数说明:调整缩放事件百分比
4、Monkey 测试结果Log分析
1)正常Log,一般由这几种,列出Monkey运行时设置的参数
2)出现异常时,Log主要由2种,一种是 crash信息,应用奔溃后会出现这种Log,另一个是ANRlog。
crash log分析
在log文件中搜索crash,如果找到crash,说明应用出现过奔溃的情况,原因有很多种,主要由NullPointerException(空指针异常)、 lllegalStateException(非法指针参数)OutOfMemoryError(低内存异常)
ANRLog分析
在Log文件中搜索ANR,如果能找到,表示测试过程中国出现过应用无响应的情况。出现ANR的可能原因:某个进程处理时间过长、应用等待超时、应用本身等待网络超时、相关应用处理不同步、导致一直等待。
其他异常情况:Restart System异常(系统重新启动)RuntimeException(Android运行 时异常)、Stale DataException、ReadException(数据处理异常)
3)如果测试过程中由异常Log给开发人员分析。建议在测试过程中结合logcat实时抓取日志来分析问题。
5、Monkey 测试时注意事项
(1)准备好测试的前置条件
做一些准备工作,比如手机需要按照的应用、SD卡需要那些数据等。
(2)慎重使用ADB
一般会在2种情况下执行Monkey测试;工作时间或休息时间。如果在工作时间,想在模拟器或真机上执行Monkey测试的同时做出其他工作,记住慎重使用adb相关的命令,尤其是 adb kill-server这样的命令。由于Monkey是通过adb shell命令启动的,当由于某种原因在使用adb命令时重启adb服务,Monkey测试的日志记录会被终止,测试之后不会有相应的日志记录这种情况,如果测试发现奔溃问题,将不会记录log日志,这样很难分析问题。
3)同时记录Android系统日常
执行Monkey测试的同时,最后同时抓取adb logcat信息。
4)需要记录seed值
seed值是唯一能够重现Monkey测试中出现奔溃问题的方法。当一个Monkey测试中出现奔溃问题的方法。当一个Monkey测试出现的问题被修复后,有时不知道如何进行验证,这时候只能通过相同的参数,相同的seed值进行重现验证。
5)不要使用单一的命令
可以多写几条不同测试偏重点的monkey测试命令,在一个项目中同时使用这些命令进行测试,以便在每次测试时达到不同的测试效果,找到更多的缺陷。
6)重视crash
monkey测试所出现的NullPointException(指针奔溃)等都可以在用户使用时出现,何时出现只不过是时间问题。所以monkey所有的crash都需要在分不前修复好
9.4.4 DDMS
是Dalvik Debug Monitor Service的缩写,实际上它是Android虚拟机的调试监听服务器。它通过了端口转发服务、设备屏幕截取、设备上的线程和堆信息、logcat信息、进程和广播状态信息、来电和短信息模拟、地理位置数据模拟等。
DDMS工作在设备或模拟器上,如果真机设备或模拟器同时运行并且连接到计算机上,那么DDMS之间启动设备检视服务。当设备连接时,adb和DDMS间建立了虚拟机监听服务,它将提高DDMS"设备上的虚拟机何时开始,何时终止“一旦虚拟机运行,DDMS通过(adb deamon 守护进程)建立一个到虚拟机调试器的连接。DDMS可以通过相应的协议和虚拟机通信。
在命令下运行ddms便可以启动DDMS,启动DDMS之前需要先运行模拟器或连上设备。
2、DDMS的功能
DDMS集成在android的虚拟机中,用于管理运行在模拟器或设备上的进程,并协助进行调试。可以用它来选择一个程序来调试、生成跟踪数据、查看堆和线程数据、对模拟器或设备进行屏幕快照等。
(1)启动DDMS
启动之前需要连接上设备或模拟器。然后命令下运行ddms便可以启动DDMS,启动后界面如图9-9所示
(图中分3大模块,第一模块是设备或模拟器中运行的进程。第2模块有多个标签页、包括info、Threads、VM、Heap、Sysinfo Network等。 第3模块显示应用运行的日志信息)
(2)信息日志信息--logcat
Logcat 用来显示系统中的调试信息,在程序中调用的Log类函数的输出信息都在这里输出。如图9-9第三模块所示。logcat中输出很多日志信息,可以选择不同级别的信息进行显示,日志显示的级别,详见表9-3
(3)线程标签页-Threads
显示在目标虚拟机中当前进程中的所有线程信息如图9-10所示,
显示了进程com.freshO2O的线程信息。其中ID表示在虚拟机中的线程ID,Tid表示Linux线程ID,跟
PID一致,Status表示状态值(状态值有Runnable正在执行、wait等待执行、monitor等待获取一个监听锁),带“*”表示守护进程,Utime表示应用执行的累计时间,Stime表示系统执行的累计时间Name表示线程名字。
(4)内存堆状态信息 VM heap
首先在9-11图中
单击图片 (show heap update),然后在单击(Cause an im-mediate GC)便在VM heap标签页中显示虚拟机内存堆信息。显示当前进程占用内存情况,其中,Heap Size表示该进程能用的总共内存大小,Allocated表示该进程当前使用的内存空间,Free表示剩余的内存空间,如图9-11所示。
(5)生成分析.hprof文件
在图9-11中单击Dump HPROF fule可以抓取heap dump文件,它的扩展名为hprof,开发人员通过分析heap dump可以发现应用是否存在内存泄露的问题。
(6)导入导出
在启动页面中,菜单栏Device下,单击File Explorer会列出当前设备或模拟机器上的所有文件,如图9-12所示。
还可以把设备或模拟器上的文件导出到PC端,也可以PC端上的文件复制到设备或模拟器中。
(7)保存截图
还提供了一个截图功能,当测试过程中发现问题,并且想把现场保存下来,可以使用ddms来保存截图,具体操作:在启动界面菜单栏Device下,单击 “Screen capture"按钮,出现图中单击“Save”
按钮就可以保存。然后选择保存路径进行保存,最后保存为.png文件。