Android-monkey测试

1.什么是monkey

~ monkey程序由android系统自带,使用Java语言写成,在Android文件系统中的存放路径是:/system/framework/monkey.jar

~Monkey.jar程序是由一个名为“monkey”的Shell脚本来启动执行,shell脚本在Android文件系统中的存放路径是:/system/bin/monkey

~Monkey测试是Android平台自动化测试的一种手段,通过Monkey程序模拟用户触摸屏幕、滑动Trackball、按键等操作来对设备上的程序进行测试,检测程序多久的时间会发生异常 

2. monkey命令

adb shell monkey -p cn.migu.mgpvrlauncher --throttle 500 -s 12 --hprof --ignore-crashes --ignore-timeouts --ignore-security-exceptions --ignore-native-crashes --monitor-native-crashes -v -v -v 10000>log文件存放位置

参数:-p  指定启动包名

--throttle 时间间隔

-v:log 每一个 -v 将增加反馈信息的级别

3.monkey报告

设备;pcio,oppo

 启动包名:cn.migu.mgpvrlauncher,cn.migu.cloudvrapk    事件count:10000   各事件执行占比:

//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%

 --pct-touch {+百分比}

调整触摸事件的百分比(触摸事件是一个down-up事件,它发生在屏幕上的某单一位置)

adb shell monkey -p com.htc.Weather--pct-touch 10 1000

 --pct-motion {+百分比}

调整动作事件的百分比(动作事件由屏幕上某处的一个down事件、一系列的伪随机事件和一个up事件组成)adb shell monkey -p com.htc.Weather --pct-motion 20 1000

 --pct-trackball {+百分比}

调整轨迹事件的百分比(轨迹事件由一个或几个随机的移动组成,有时还伴随有点击)

adb shell monkey -p com.htc.Weather--pct-trackball 30 1000

--pct-nav {+百分比}

 调整“基本”导航事件的百分比(导航事件由来自方向输入设备的up/down/left/right组成)

 --pct-majornav {+百分比}

调整“主要”导航事件的百分比(这些导航事件通常引发图形界面中的动作,如:5-way键盘的中间按键、回退按键、菜单按键)

adb shell monkey -p com.htc.Weather--pct-majornav 50 1000

 --pct-syskeys {+百分比}

调整“系统”按键事件的百分比(这些按键通常被保留,由系统使用,如Home、Back、Start Call、End Call及音量控制键)

adb shell monkey -p com.htc.Weather--pct-syskeys 60 1000

 --pct-appswitch {+百分比}

调整启动Activity的百分比。在随机间隔里,Monkey将执行一个startActivity()调用,作为最大程度覆盖包中全部Activity的一种方法

adb shell monkey -p com.htc.Weather--pct-appswitch 70 1000

 --pct-anyevent {+百分比}

调整其它类型事件的百分比。它包罗了所有其它类型的事件,如:按键、其它不常用的设备按钮、等等

 --pct -anyevent  {+百分比}

指定多个事件的百分比

adb shell monkey -p com.htc.Weather--pct-anyevent 50 --pct-appswitch 50 1000

耗时:pico:1169574ms(约19.4分钟)   oppo:1195275ms(约19.9分钟)

4.测试结果

无ANR(Application Not Responding),Crash,Exception,GC(内存泄漏)问题

(由于本次测试持续时间短,事件数少,未发现任何异常,建议monkey执行时间和事件加长)

日志分析

1.在日志中搜索关键字:

1)搜索报告中的关键字“ANR”,看有无应用无响应的事件(Application Not Responding)

2)搜索报告中的关键字“crash”,看有无崩溃的事件

3)搜索报告中的关键字“exception”,看有无其他异常事件。(如果出现空指针, NullPointerException,需格外重视)

下面的属于monkey自己的问题,忽略

:Sending Flip keyboardOpen=false

Got IOException performing flipjava.io.IOException: write failed: EINVAL (Invalid argument)

// Injection Failed

4)内存泄露问题搜索"GC"(需进一步分析)

2. 初步分析法: monkey出现错误后,一般的分析步骤

1)先找到出现错误的位置

2)查看出现错误之前2个switch之间的activity

3)手动执行事件,复现问题

4)若以上步骤还不能找出,产生错误时,有会seed值,输入相同的seed值,重新按照之前命令跑monkey

原文地址:https://www.cnblogs.com/muxs/p/15209506.html