简易monkey教程

Monkey教程(针对安卓TV进行test)
Monkey本身可以针对安卓上所有的app发出指令,但是通常情况下我们更多的是需要针对某一或者某几个app进行测试,所以需要获取app的包名。在SecureCRTPortable如下方式输入命令,可以查看到设备中可以执行Monkey测试的所有app。

在这里插入图片描述
此外为了方便我们分析log信息,通常希望将log信息导出至U盘,这时候如下图方式输入命令,7C38-13E0就是已插入的U盘名称,不同的设备不同的U盘可能名称不同。使用代码前请先修改U盘名称。
在这里插入图片描述

一个常见的Monkey命令:
monkey -p com.mstar.tvsetting --ignore-crashes --ignore-timeouts --pct-nav 10 -s 1 -v -v --throttle 300 1800000 2>/mnt/usb/8159-1E0D/error.txt 1>/mnt/usb/8159-1E0D/info.txt
Monkey代码都是以monkey开头,第二个参数-p的含义则是针对-p之后的包中的Activity执行monkey测试,上面的例子中就是针对com.infocus.nova.settings做monkey测试。如果需要同时针对多个Activity进行测试,则可以使用多个-p例如-p com.xxx.xxx.xxx -p com.xxx.xxx.xxx …等。
–ignore开头的都是用于忽略异常,使得monkey测试继续进行下去。–ignore-crashes为忽略崩溃情况,即停止运行的情况。–ignore-timeouts为忽略超时情况,即无响应情况。
–pct开头的是用于调整特定事件的百分比,–pct-nav就是用于调整基本的导航事件百分比,即上下左右按键的百分比,后面跟着的10就是百分之十。
-s是用于指定一个特定的随机序列,即如果在另外一台设备上进行monkey测试时,如果设定的-s数值是一样的,那么输入的随机操作事件的顺序也是一样的。如果不指定-s参数,monkey会随机设定一个-s参数,如下图中Monkey: seed=213373581所示,如果monkey测试出现bug,则可以提供这一参数用以在其余设备上复现问题。

-v是指反馈信息的详细程度,-v -v -v为最多信息反馈,一般使用三个-v。
–throttle用于指定两个相邻操作间的延时,一般设定300毫秒,用户的正常操作不会快于300毫秒。
1800000则是随机操作次数,可以任意指定。
2>/mnt/usb/7C38-13E0/error.txt 1>/mnt/usb/7C38-13E0/info.txt是用于指定导出信息存放的位置,这里指向了插入设备上的U盘。
在这里插入图片描述

除此之外,Monkey的基本的测试命令还有很多,列表如下:

基础参数:-v 、-s 、–throttle、-p

常规	
--help	打印简单用法
-v:指定反馈信息级别
	Level 0:启动提示+测试完成+最终结果
	Level 1:逐个发送到Activity的事件
	Level 2:测试中被选中或未选中的Activity
Events
	-s <seed>	使用相同的seed值,可生成相同的事件序列
	--throttle MILLISEC	延时,一般设定为300-500
	--pct-touch <percent>	调整触摸事件百分比
	--pct-motion <percent>	调整动作事件百分比
	--pct-trackball <percent>	调整轨迹球事件百分比
	--pct-nav <percent>	调整上下左右导航事件百分比
	--pct-majornav <percent>	调整主要导航事件百分比
	--pct-syskeys <percent>	调整系统事件百分比
	--pct-appswitch <percent>	调整Activity启动事件百分比
	--pct-anyevent <percent>	调整其他事件百分比
Constraints
	-p <allowed-package-name>	指定测试包名
	-c <main-category>	指定启动Activity的类别
Debugging	
	--dbg-no-events	执行打开初始程序,不再进行下一步操作
	--hprof	将在Monkey生成事件序列前后生成profilling报告。在data/misc路径下生成大文件(~5Mb)
	--ignore-crashes	忽略崩溃事件
	--ignore-timeouts	忽略超时事件
	--ignore-security-exceptions	忽略证书或认证异常
	--kill-process-after-error	停止发生错误的进程
	--monitor-native-crashes	监控并报告本地代码崩溃事件
	--ignore-native-crashes	忽略本地代码崩溃事件
	--wait-dbg	停止monkey直到调试器连接

例如我们想要针对TV部分进行停止运行事件的模拟,忽略无响应事件,并将报告导出至U盘中,就可以这样写代码:
monkey -p com.mstar.tv.tvplayer.ui --ignore-timeouts -v -v -v --throttle 300 1000000 2>/mnt/usb/8159-1E0D/error.txt 1>/mnt/usb/8159-1E0D/info.txt
将以上代码复制到root@ktc_8g:/ # 后按回车就可以运行。

以下是Monkey日志的分析:
:Monkey: seed=216559394 count=1000
:AllowPackage: com.mstar.tv.tvplayer.ui
:IncludeCategory: android.intent.category.LAUNCHER
:IncludeCategory: android.intent.category.MONKEY
上面一段日志是monkey开始时打印出来的,seed指的是事件序列编号,count指的是设定输入的事件总数。
// Event percentages:
// 0: 15.0%
// 1: 10.0%
// 2: 2.0%
// 3: 15.0%
// 4: -0.0%
// 5: -0.0%
// 6: 25.0%
// 7: 15.0%
// 8: 2.0%
// 9: 2.0%
// 10: 1.0%
// 11: 13.0%
:Switch: #Intent;action=android.intent.action.MAIN;category=android.intent.category.LAUNCHER;launchFlags=0x10200000;component=com.mstar.tv.tvplayer.ui/.RootActivity;end
// Allowing start of Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=com.mstar.tv.tvplayer.ui/.RootActivity } in package com.mstar.tv.tvplayer.ui
这一段主要提供了各个事件的百分比信息。
Events injected: 1000
:Sending rotation degree=0, persist=false
:Dropped: keys=0 pointers=0 trackballs=0 flips=2 rotations=0

Network stats: elapsed time=68401ms (0ms mobile, 0ms wifi, 68401ms not connected)

// Monkey finished
这一段是monkey结束时输出的信息,events injected给出了注入的事件总数,丢弃的键,指针,轨迹球,键盘轻弹和屏幕翻转都是0,一共延时了68401ms。

猜你喜欢

转载自blog.csdn.net/weixin_44454733/article/details/86639792