Monkey简介

相信不少胖友在测试安卓手机时会用到monkey,博主最近刚好研究了下,共同分享下。

1.首先来介绍一下什么是monkey

monkey 是 Android平台提供的一种自动化测试方法,它会随机的模拟发送各种按键,点击,滑动等用户事件来实现压力测试。看系统版本是否稳定,能否持续的为用户提供服务。从log查看异常的次数、异常的频率。

Monkey.jar程序是由一个名为“monkey”的Shell脚本来启动执行,shell脚本在Android文件系统中的存放路径是:/system/bin/monkey;可以通过执行: adb shell monkey {+命令参数}来进行Monkey测试。

2.adb shell monkey   可以查看常用的monkey命令

3.monkey命令参数介绍:

-P :

用于执行指定的APP。否则,Monkey默认执行所有APP。    

-p com.android.settings -p com.android.calendar  

  运行adb shell am monitor,打开apk即可获得当前apk的包名

-V :

指定反馈     信息级别

-v  仅提供测试启动、完成和最终结果等信息

-v -v  日志较为详细,包括选中Activity信息

-v -v–v 日志最详细,包括测选中/未选中的

-s:

seed值(种子数),seed值相同->事件序列也相同。     adb shell monkey -p com.android.settings –s 800 180000

--throttle:

事件间的时延,单位是毫秒; 例:adb shell monkey -p com.android.settings --throttle 1000 -s 800  180000

在Monkey运行过程中会遇到异常、崩溃等情况Moneky会停止执行 为了保证执行事件的完整性,可以调试选项的设置 --ignore-crashes: 程序崩溃,依然下发事件,直到事件计数完成。 例:adb shell monkey -p com.android.settings --ignore-crashes     --throttle 1000 -s 800 180000

--ignore-timeouts:

程序发生ANR时,继续下发事件,直到计数完成 例:adb shell monkey -p com.android.settings --ignore-timeouts     --throttle 1000 -s 800 180000

--ignore-security-exceptions:

指定当应用程序发生许可错误时(如证书许可,网络许可等),Monkey继续执行。

--kill-process-after-error:

当应用程序发生错误时,应用程序停止运行,并保持在当前状态

--monitor-native-crashes:  

监视并报告应用程序发生崩溃的本地代码

--pct-{+事件类别} {+事件类别百分比}  

指定每种类别事件的数目百分比

例: --pct-touch 10    touch事件占比10% 事件类别:动作事件motion、轨迹事件trackball、基本导航事件nav、 主要导航事件majornav、系统按键事件syskeys、启动事件appswitch、 其它类型事件anyevent

4.Monkey自动化简介、与命令详解(黑白名单)

黑名单:不测试的应用 白名单:只测试这部分应用(跟 -p 的作用一样) 注意:  黑名单跟白名单只能设置一个,不能同时使用。

参数: --pkg-blacklist-file PACKAGE_BLACKLIST_FILE apk黑名单,屏蔽掉黑名单中的apk。

--pkg-whitelist-file PACKAGE_WHITELIST_FILE apk白名单,只测试包含在白名单中的apk

示例 --pkg-blacklist-file  /data/local/tmp/blacklist.txt --pkg-whitelist-file  /data/local/tmp/whitelist.txt

blacklist.txt中:

com.mediatek.mtklogger
com.android.development
com.mediatek.oobe

执行方式:
1、建立黑名单,包名顶格,命名为blacklist.txt,

2、把文件push到路径/data/local/tmp/     adb push d:\blacklist.txt /data/local/tmp/

3、执行命令     adb shell 回车, monkey -- pkg-blacklist-file /data/local/tmp/whitelist.txt --throttle 1000 180000

获取包名:

方式一:adb shell pm list package >/sdcard/package.txt

方式 二:执行一次低事件值的monkey测试,所有包名与事件都会记录在日志中 monkey   --monitor-native-crashes --throttle 1000   -v -v -v  -s 800  1000 2>/sdcard/error.aaa  1>/sdcard/info.aaa

不推荐第一种方式,该方法获取到手机中的所有的包名,其中有部分为系统类、服务类,这些包monkey没提供事件来调用,也就无法启动测试

5.扩展-Monkey Server

Monkey可以在设备上启动一个服务端让客户机远程的连接到设备,对设备进行调试和控制

1.首先需要利用adb的forward命令,被本地端口和设备端口进行映射 adb forward tcp:1080 tcp:1080

2.然后利用Monkey的--port将Monkey Server开放在1080端口上 adb shell monkey --port 1080

3.这时我们通过telnet连接本机的1080端口, 即可访问到设备上的Monkey server, 并且执行Server中的相关指令。

telnet 127.0.0.1 1080

6.扩展-MonkeyRunner

monkeyrunner和money没有什么直接的关系,monkey是在设备直接运行adb shell命令生成随机事件来进行测试的。相比较而言,monkeyrunner则是通过API发送特定的命令和事件来控制设备。

monkeyrunner接受一个明确的测试脚本(使用python语言编写的)。有明确的条件判断等语句,可用来做功能测试。

MonkeyRunner工具主要有三个类:MonkeyRunner、MonkeyDevice、MonkeyImage.  

1.MonkeyRunner类:提供连接真机和模拟器方法waitForConnection(float timeout,string deviceid),还有显示提示显示信息的alert()方法

2.MonkeyDevice类:提供了安装和卸载程序包、开启Activity、发送按键和点击事件、运行测试包等方法  

3.MonkeyImage类:在测试过程中用来保存测试截图,保存各种格式

前提需要配置相关环境,可以参考:https://blog.csdn.net/liu_jing_hui/article/details/60874002

步骤一:打开cmd,输入monkeyrunner

步骤二:进入shell命令交互模式后,首要一件事就是导入monkeyrunner所要使用的模块。

步骤三:模拟器/手机的链接

步骤四:app安装并启动,device.installPackage(‘F:\QQyinle_439.apk’)

步骤五:进行启动。device.startActivity(component=“package名/.activity”)

步骤六:在eclipse编写python脚本语言,并运行

 

 

  • 5
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值