monkey测试android稳定性
monkey测试简介:
Monkey测试是一种为了测试软件的稳定性、健壮性的快速有效的方法
monkeyrunner工具的主要设计目的是用于测试功能/框架水平上的应用程序和设备,或用于运行单元测试套件, 提供了一个API,使用此API写出的程序可以在Android代码之外控制Android设备和模拟器。
monkey和monkeyrunner的不同点:
Monkey:Monkey工具直接运行在设备或模拟器的adb shell中,生成用户或系统的伪随机事件流。
monkeyrunner:monkeyrunner工具则是在工作站上通过API定义的特定命令和事件控制设备或模拟器。
详细介绍及环境搭建步骤:http://bbs.pediy.com/showthread.php?t=189584
查找需要测试的包名:
>adbshell pm list packages 命令查看手机上的所有包名,找到自己需要测试的包名
Monkey的特征
测试的对象仅为应用程序包,有一定的局限性。
Monky测试使用的事件流数据流是随机的,不能进行自定义。
可对MonkeyTest的对象,事件数量,类型,频率等进行设置。
Monkey基本命令参数的介绍
基本命令格式 $ adb shell monkey [options]
如果不指定options,Monkey将以无反馈模式启动,并把事件任意发送到安装在目标环境中的全部包。 $ adb shell monkey -p com.luxji.watchesapp -v 500
-p 指定测试包名,可以指定多个
-v 指定输出信息级别,分为三种
-v 仅提供启动提示、测试完成和最终结果等少量信息, 适合于一般的调试
-v -v 提供较为详细的日志,包括每个发送到Activity的事件信息
-v -v -v,最详细的日志,包括了测试中选中/未选中的Activity信息
-s 指定seed值,如果seed相同,则两次Monkey测试所产生的事件序列也相同的
-c 指定一个或多个类别的activity被启动
-ignore-crashes和-ignore-timeouts,在应用崩溃和无响应的情况下,monkey不会停止。
-throttle MILLISEC 表示每一个随机事件中间的时间间隔
-ignore-security-exceptions:通常,当应用程序发生许可错误(如启动一个需要某些许可的Activity)时,Monkey将停止运行。如果设置了此选项,Monkey将继续向系统发送事件,直到计数完成。
-monitor-native-crashes:监视并报告Android系统中本地代码的崩溃事件。如果设置了–kill-process-after-error,系统将停止运行。
-kill-process-after-error:如果程序出现错误,monkey将结束此程序进程。
-hprof:设置此项,将在monkey事件序列之前和之后立即生成profilling报告。这将会在data/misc中生成大文件(约5mb)所以要小心使用它。
-pct-touch:调整触摸事件的百分比(触摸事件是一个down-up事件,它发生在屏幕的某单一位置)。
-pct-motion:动作事件的百分比(动作事件由屏幕上某处的一个down事件、一系列的随机事件和一个up事件组成)。
-pct-trackball:调整轨迹事件的百分比(轨迹事件由一个或几个随机移动组成,有时还伴随着点击)。
-pct-syskeys:调整系统按键事件的百分比(这些按键通常被保留,由系统使用,如home,back,start call,end call及音量控制)。
-pct-nav 调整基本导航事件的百分比(导航事件来自方向输入设备的up/down/left/right组成)。
-pct-majornav:调整“主要”导航事件的百分比(这些导航事件通常引发图形界面中的动作,如:5-way键盘的中间按键、回退按键、菜单按键)
-pct-appswitch:调整启动Activity的百分比。在随机间隔里,Monkey将执行一个startActivity()调用,作为最大程度覆盖包中全部Activity的一种方法。
-pct-anyevent:调整启动Activity的百分比。它包罗了所有其它的事件类型,如:按键,其它不常用的设备按钮。
-pct-flip:
–wait-dbg:停止执行中的Monkey,直到有调试器和它相连接。
–dbg-no-events:设置此选项,Monkey将执行初始启动,进入到一个测试Activity,然后不会再进一步生成事件。为了得到最佳结果,把它与-v、一个或几个包约束、以及一个保持Monkey运行30秒或更长时间的非零值联合起来,从而提供一个环境,可以监视应用程序所调用的包之间的转换。
-port:为monkey开启专用端口。此时只monkey不会帮你乱点击,而此时你自己就是一只monkey了,在你乱点的时候,monkey会输出你点击后回馈的信息。如果你打完命令之后模拟器上没有启动你所要启动的包,你需要自己启动,但是你只能启动你-p中指定的那几个包。ctrl+c中断。
Monkey使用方法
在windows环境下,使用dos命令行。在桌面按下Ctrl+R,然后输入cmd,弹出命令行界面。
Monkey停止的三种情况,1.应用报错 2.应用出现anr异常,无响应 3 指定包名后,应用中有跳往其他原因的意图时,也会报错停止
Monkey的测试策略及示例:
一、先上一个简单的测试用例
设计用例的思路就是设置不同的事件比,不同的时间间隔,执行的事件数一般起码要上万吧,不然怎么能称作稳定性测试,中间在加入不同的测试包名,模拟多个应用切换的场景。
异常: 1、插入其他应用:搜狗输入法、电话、短信 、QQ等
2、 忽略崩溃、超时、安全异常、跟踪本地方法的崩溃问题
示例:
-p 后面可以添加多个测试包名,以便模拟应用间的切换
C:\Users\Administrator>adbshell monkey -p com.chemi -p com.sougou --pct-touch 25 --pct-motion 15 --pct-pinchzoom 5--pct-rotation 10 --pct-majornav 25 --pct-flip 10 --pct-syskeys 10 --throttle300 --ignore-crashes --monitor-native-crashes -v -v -v 10000 >log040502.txt
结束monkey进程:
直接拨数据线是没有用的,必须把这个进程杀掉monkey才会停止
C:\Documents and Settings\hui.qian>adb shell
1|[email protected]_sp7715ea:/ $ ps|grep monkey
ps|grep monkey
shell 7772 185 277516 22244 ffffffff4010a58c S com.android.commands.monkey
[email protected]_sp7715ea:/ $ kill 7772
日志分析:
正常情况, 如果Monkey测试顺利执行完成, 在log的最后, 会打印出当前执行事件的次数和所花费的时间; // Monkey finished 代表执行完成\
异常情况
Monkey 测试出现错误后,一般的分析步骤
看Monkey的日志 (注意第一个swith以及异常信息等)
1. 程序无响应的问题: 在日志中搜索 “ANR”
2. 崩溃问题:在日志中搜索 “Exception” (如果出现空指针, NullPointerException) 肯定是有bug
Monkey 执行中断, 在log最后也能看到当前执行次数
更多相关文章
- VisionMobile:2014年Q1移动开发者经济报告(四)2.1、平台开发
- 文件修改如何简单修改Android的so文件
- Android(安卓)RxJava系列一: 基础常用详解
- Android弱网测试中关于网络检测的一些借鉴方法
- android调试模式的操作技巧,调试BUG极快呀
- Android触摸屏开发知识汇总
- Android(安卓)APK自动化测试
- 落后就要挨打!2020最需关注5大 Android(安卓)开发技术!
- android 事件机制,捕捉与事件监听总结整理(二)Event Handlers,Handli