logcat及monkey测试 开启、存储日志

1.Android设备启用monkey测试 及存储日志

  1. adb root
  2. adb shell
  3. monkey -p com.tyw.media --pct-syskeys 0 -v -v -v 100000 >/sdcard/monkey.log
  4. -p com.tyw.media -p命令为指定应用包命 若指定包命则只在该app内进行测试
  5. --pct-syskeys 0 段 为本次模拟事件的百分比 syskeys为事件类型 数字0为百分比数 在0-100之间分配百分比 事件类型见小标题3
  6. -v -v -v 为日志信息等级 Level 0 : adb shell monkey -p com.shjt.map -v 100 // 缺省值,仅提供启动提示、测试完成和最终结果等少量信息 Level 1 : adb shell monkey -p com.shjt.map -v -v 100 // 提供较为详细的日志,包括每个发送到Activity的事件信息 Level 2 : adb shell monkey -p com.shjt.map -v -v -v 100 // 最详细的日志,包括了测试中选中/未选中的Activity信息
  7. 100000 为事件模拟并触发的次数 次数表示模拟事件十万次
  8. >/sdcard/monkey.log 为日志保存路径 此处为保存到Android设备本地中 monkey.log为文件名

2.Android 设备存储logcat日志

  1. adb root
  2. adb shell
  3. 过滤Monkey测试log命令 :** logcat | grep Monkey>/sdcard/logcat.txt**

3.可模拟事件类型

1.触摸事件:–pct-touch ,指定触摸事件百分比。触摸事件指的是在屏幕某处按下并抬起的操作,我们可以模拟点击的操作

2.滑动事件:–pct-motion ,指定滑动事件百分比。滑动事件指的是在屏幕某处按下、随机移动、抬起的操作,类似我们滑动手机屏幕翻页的操作

3.缩放事件:–pct-pinchzoom ,指定缩放事件百分比。缩放事件指的是在屏幕上的两处同时按下,又同时移动,最后同时抬起,模拟我们在手机放大缩小的操作

4.轨迹球事件:–pct-trackball ,指定轨迹球事件百分比。轨迹球事件指的是由一个或者多个随机的移动组成,有时会伴随点击。如果被测APP需要曲线滑动才需要指定该事件的百分比

5.屏幕旋转事件:–pct-rotation ,指定屏幕旋转事件百分比。我们可以模拟手机的横竖屏切换,degree指的是旋转方向,顺时针旋转,0表示旋转90°,1表示旋转180°,2表示旋转270°,3表示旋转360

6.基本导航事件:–pct-nav ,指定基本导航事件百分比。基本导航事件指的是点击方向输入设备的上下左右按键的操作,现在的手机很少有这样的方向键了,所以应用较少

7.主要导航事件:–pct-majornav ,指定主要导航事件百分比。主要导航事件指的是点击“主要导航”按键的操作,例如app的中间键,返回键,菜单按键等

8.系统按键事件:–pct-syskeys ,指定系统按键百分比。系统按键指的是系统保留的按键事件,比如Home键、返回键、音量调节按键等

9.切换Activity事件:–pct-appswitch ,指定切换Activity事件百分比。切换Activity指的是在手机上启动一个Activity的操作,在随机的时间间隔内, Monkey 将执行一个 startActivity() 方法, 作为最大程度上覆盖被测包中全部 Activity 的一种方法。 如果该事件比例偏低,我们会看到大部分时间的测试都停留在同一个页面上,所以我们可以适当设置该事件的比例

10.键盘事件:–pct-flip ,指定键盘事件百分比。键盘事件指的是一些与键盘相关的操作,比如点击输入框、键盘弹起等

11.其他类型事件:–pct-anyevent ,指定其他类型事件百分比。其他类型事件指的是除了上述事件之外的其他事件,比如其它不常用的设备按钮等

一般情况下,我们不用修改上述事件的百分比。如果APP操作触摸事件和滑动事件比较频繁,我们可以提高这两种事件的百分比,但是总量加起来不能大于100

4.Monkey命令 基本参数

-p <允许的包名列表>

用此参数指定一个或多个包。指定包之后,monkey将只允许系统启动指定的app。如果丌指定包, monkey将允许系统启动设备中的所有app。

指定一个包:adb shell monkey -p com.shjt.map 100

指定多个包:adb shell monkey -p fishjoy.control.menu –p com.shjt.map 100

-v

用亍指定反馈信息级别(信息级别就是日志的详细程度),总共分3个级别,分别对应的参数如下 表所示:

Level 0 : adb shell monkey -p com.shjt.map -v 100 // 缺省值,仅提供启动提示、测试完成和最终结果等少量信息

Level 1 : adb shell monkey -p com.shjt.map -v -v 100 // 提供较为详细的日志,包括每个发送到Activity的事件信息

Level 2 : adb shell monkey -p com.shjt.map -v -v -v 100 // 最详细的日志,包括了测试中选中/未选中的Activity信息

-s(随机数种子)

用亍指定伪随机数生成器的seed值,如果seed相同,则两次Monkey测试所产生的事件序列也相同的。 示例:

monkey测试1:adb shell monkey -p com.shjt.map –s 10 100

monkey测试2:adb shell monkey -p com.shjt.map –s 10 100

--throttle <毫秒>

用亍指定用户操作(即事件)间的时延,单位是毫秒;如果丌指定这个参数,monkey会尽可能快的 生成和发送消息。 示例:adb shell monkey -p com.shjt.map --throttle 3000 100

5.Monkey查看包名

手机中安装APK包名查看器

源码下的AndroidManifest.xml文件查看
aapt命令查看

6.Monkey日志分析

正常情况, 如果Monkey测试顺利执行完成, 在log的最后, 会打印出当前执行事件的次数和所花费的时间; // Monkey finished 代表执行完成\

异常情况

Monkey 测试出现错误后,一般的分析步骤

看Monkey的日志 (注意第一个swith以及异常信息等)

  1. 程序无响应的问题: 在日志中搜索 “ANR”
  2. 崩溃问题:在日志中搜索 “Exception” (如果出现空指针, NullPointerException) 肯定是有bug

Monkey 执行中断, 在log最后也能看到当前执行次数

必须重视Crash 虽然Monkey测试有部分缺陷,我们无法准确地得知重现步骤, Monkey测试所出现的NullPointException, 都是可以在用户使用时出现的, 何时出现只是时间问题

理论上来说, Monkey所有的Crash 都需要在发布前修复掉

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值