• Android Monkey


      Monkey是Google提供的一个用于稳定性与压力测试的命令行工具,通过Monkey程序模拟用户触摸屏幕、滑动Trackball、按键等操作来对设备上的程序进行压力测试, Monkey测试是一种为了测试软键件的稳定性,健壮性的快速有效的方法。典型的应用(对于外包的app,为了快速检查程序的健壮性所做的验收测试)。由Android系统自带,使用Java语言写成,在Android文件系统中的存放路径是:/system/framework/monkey.jar。

    先来张图看看monkey的压力测试参数

    使用的是一个monkey桌面程序,导入包名后,设置伪随机事件流的个数,延迟时间,勾选忽略崩溃,超时,安全异常;设置monkey命令的循环次数,选择测试的包名,开始运行

    实例adb shell monkey -p com.android.deskclock -v-v-v --throttle 500 --ignore-crashes --ignore-timeouts --ignore-security-exceptions 30000  >d:lmonkeylog.txt (/sdcard/monkeylog.txt)

    意思:给时钟应用发送30000个伪随机事件流,每个事件的延迟为500毫秒,且忽略崩溃、超时、安全异常

    -p 后面跟包名(需指定多个应用,则 -p package1 -p package2 )

    -v-v-v 表详细的日志 (精简:-v 普通:-vv或-v-v 详细:-vvv或者-v-v-v)

    --throttle <milliseconds>  用于指定用户操作(即事件)的延迟时间,单位是毫秒

    --ignore-crashes 忽略崩溃:当应用程序发生crash之后,继续运行

    --ignore-timeouts 忽略超时:当应用程序发生任何超时错误时,Monkey将继续向系统发送事件,直到计数完成。

    --ignore-security-exceptions 忽略安全异常:当应用程序发生许可错误时,Monkey将继续发送事件。

    -s 伪随机数生成器的seed值。如果用相同的seed值再次运行Monkey,它将生成相同的事件序列,即为复现bug设置上一轮测试的seed值
    --randomize-throttle 在事件之间插入随机延迟,需要与–throttle配合使用,随机延迟范围为(0–throttle设置的时间)
    --device-sleep-time 设备睡眠时间
    --pct-touch <percent> 调整触摸事件的百分比(触摸事件是一个down-up事件,它发生在屏幕上的某单一位置。
    --pct-motion <percent> 调整动作事件的百分比(动作事件由屏幕上某一处的一个down事件、一系列的伪随机事件和一个up事件组成
    --pct-trackball <percent> 调整轨迹事件的百分比(轨迹事件由一个或几个随机的移动组成,有时还伴随有点击
    --pct-nav <percent> 调整基本导航事件的百分比(导航事件由来自方向输入设备的up/down/left/right组成
    --pct-majornav <percent> 调整主要导航事件的百分比(这些导航事件通常引发图形界面中的动作,如:键盘的中间按键,回退按键,菜单按键等
    --pct-syskeys <percent>  调整系统按键事件的百分比(这些按键通常被保留,由系统使用,如Home/Back/音量控制键等
    --pct-appswitch <percent> 调整启动activity的百分比。在随机间隔里,monkey将执行一个startActivity()调用,作为最大程度覆盖包中全部Activity的一种方法
    --pct-anyevent <percent> 调整其他类型事件的百分比。包括:按键、其他不常用的设备按钮等包含了所有其它类型的事件,如:按键、其它不常用的设备按钮等等
    --pct-filp 调整键盘换出隐藏的百分比
    --pct-pinchzoom 调整两指缩放压缩手势的百分比
    --hprof monkey会在发送时间的前后生成app内存快照文件,一般会在设备的/data/misc目录下生成hprof的文件。(注: /data/misc 需要root权限)

    注:

    1.要测试多个应用(-p package -p package );-p 测试的是桌面存在图标的应用程序;-c 是桌面不存在图标的应用
    2.崩溃:Foce Close    超时:Application Not Responding
    3.percent代表了这个事件占到所有随机事件的百分比数,多个参数指定的时候,加起来的百分比数不能多于100%。
    4.adb shell monkey --pct-rotation 100 --throttle 2000 10//两秒间隔旋转10次
    5.停止Monkey命令(也可以重启设备):adb shell ps |findstr monkey 或者 adb shell 然后 ps |grep monkey 。再进行kill 进程
    6.如果有多个可以使用 adb shell top |findstr monkey
    7.Monkey除了做伪随机事件外,也能写脚本,例子monkey-example.txt。先push到设备中
    运行(adb shell monkey -f /sdcard/monkey-example.txt -v-v-v 3)

    8.查看包名.类名可以去查看之前adb命令的文章

    注:脚本完成后将.txt文件push到手机中,然后使用命令"adb shell monkey -f path/name.txt --throttle 500 -v -v 1"命令调试运行,其中path指的是文件存放路径,name指的文件名

    =============================脚本实例===================================

    #头文件、控制monkey发送消息的参数
    type=raw events
    count=10
    speed=1.0

    #执行脚本的入口
    start data >>

    #1.打开浏览器(QQ浏览器为例:包名,包名.类名)
    LaunchActivity(com.tencent.mtt.x86,com.tencent.mtt.x86.MainActivity)
    ProfileWait()
    #2.输入网址(通过点击坐标获取输入框)
    Tap(479,155)
    ProfileWait()
    DispatchString(www.baidu.com)
    ProfileWait()
    #3.获取焦点
    UserWait(2000)
    DispatchPress(KEYCODE_ENTER)
    #4.点击确定
    ProfileWait()
    DispatchPress(KEYCODE_ENTER)
    #5.完成退出浏览器,返回HOME界面
    UserWait(3000)
    DispatchPress(KEYCODE_HOME)
    ProfileWait()

     android monkey官网

  • 相关阅读:
    一个老程序员的从零开始的从新出发
    Django静态文件配置
    Data truncated for column 'id' at row 1
    MyBatis之java.lang.UnsupportedOperationException异常解决方案
    mybatis批量查询-插入-删除
    Mybatis中进行批量更新(updateBatch)
    mybatis插入insert操作,返回自增id
    redis五大数据类型
    redis中key键操作
    Redis主从复制失败(master_link_status down)
  • 原文地址:https://www.cnblogs.com/zeo-to-one/p/6618645.html
Copyright © 2020-2023  润新知