zoukankan      html  css  js  c++  java
  • 安卓测试之---Monkey

    Tip:在阅读此篇之前,请先了解ADB命令: http://www.cnblogs.com/pearl07/p/8572390.html 

    一、什么是Monkey

    Monkey是Android SDK提供的一个命令行工具(Android平台下一个命令行自动化测试工具),可以运行在模拟器里或实际设备中。 它向系统发送伪随机的用户事件流(如按键输入、触摸屏输入、手势输入等),实现对正在开发的应用程序进行压力测试。

    简单地讲,就是模拟用户在安卓应用上进行随机操作,虚拟用户数量可以设置,以此暴露出crash。

     

    二、Monkey 基本参数介绍

    -p <允许的包名列表>         

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

    指定一个包:adb shell monkey -p com.tencent.qqmusic100   
    
    指定多个包:adb shell monkey -p fishjoy.control.menu  –p com.tencent.qqmusic 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.tencent.qqmusic–s 10 100 
    monkey测试2:adb shell monkey -p com.tencent.qqmusic–s 10 100

    如果在测试时,执行发生crash,在不确定该crash是否必现的时候,可以使用这个seed(-s)去复现执行。


    --throttle <毫秒>            

    用于指定用户操作(即事件)间的时延,单位是毫秒;如果指定这个参数,monkey会尽可能快的生成和发送消息。 示例:

    adb shell monkey -p com.tencent.qqmusic--throttle 3000 100
    

    --ignore-security-exception 

    当程序发生许可错误(例如启动一些需要许可的Activity)导致的异常时,Monkey将停止运行。设置此项,Monkey将继续发送事件给系统,直到事件计数完成。

    --ignore-timeouts

    通常,应用程序发生任何超时错误(如“Application Not responding”对话框)Monkey将停止运行,设置此项,Monkey将继续发送事件给系统,直到事件计数完成。

    --ignore-crashes

    应用发生崩溃或异常时Monkey会停止运行。如果设置此项,Monkey将继续发送事件给系统,直到事件计数完成。

    --pct-touch <percent>

    调整触摸事件的百分比.(触摸事件是指在屏幕中的一个down-up事件,即在屏幕某处按下并抬起的操作)比如一个应用80%的操作都是触摸,那就可以将此参数的百分

    比设置成相应较高的百分比。如触摸返回、触摸签到等

    --pct-motion<percent>

    调整motion事件百分比。(motion事件是由屏幕上某处一个down事件、一系列伪随机的移动事件和一个up事件组成)也就是直线滑动事件如从左到有滑动解锁

    --pct-trackball <percent>

    调整滚动球事件百分比。(滚动球事件由一个或多个随机的移动事件组成,有时会伴随着点击事件)如不规则滑动解锁

    --pct-nav<percent> 导航,现在手机基本没有导航了

    ---pct-syskeys<percent> 按键消息比例,主页、后退、音量增减

    --pct-anyevent 其他不常用的按键比例的设置,不常用

    --hprof  monkey 测试完成后生成内存快照,data/misc路径下生成,不常用,比较占空间

    --ignore-security-exceptions  忽略权限问题的

    --kill-process-after-error 当错误发生时杀进程

    --monitor-native-crashes 监视崩溃时的本地代码

     

    三、Monkey基本语法

    ---- adb shell monkey –p 程序包 –v 测试次数 

    $ adb shell monkey -p com.tencent.qqmusic -v 500 //如果不清楚程序包名,可以使用adb命令查看
    

    ---- 可以在命令monkey命令后面加上 “|logcat -v time”,这样就能边测试边打印Log

    adb shell monkey –p com.tencent.qqmusic  –v 200|logcat -v time
    

     

    ----可以指定log存放的位置及名称

    adb shell monkey -p com.tencent.qqmusic -v 100 >e:	est.txt
    

    ----如果测试monkey碰到crash或者anr(程序强制性退出或不响应)现象时,在抓取log的同时需要提供traces.txt

    adb pull /data/anr/traces.txt
    

     

    1). 测试版本需要具备root权限

    2). 进入data/anr目录下面

    3). 将traces.txt文件拷贝到TF卡中,然后拷贝出来发给软件分析即可

     
    四,保存monkey log以及手机log到sdcard

    ---- 首先在cmd或终端中输入adb shell

    ---- 再执行monkey,比如

    monkey -p com.tencent.qqmusic --throttle 500 --ignore-crashes --ignore-timeouts --ignore-security-exceptions --ignore-native-crashes --monitor-native-crashes -v -v -v 100 >/mnt/sdcard/monkey.txt & logcat -v time >/mnt/sdcard/logcat.txt
    

    ---- 终端内打开存放日志地址,如

    cd /Users/wengyb/Documents
    

    ----拖日志到电脑上,如

    adb pull /mnt/sdcard/monkey.txt 
    

      

     

     

     

     

     

     

     

     

     

  • 相关阅读:
    24.redis持久化之AOF
    23.redis持久化之RBD
    22.redis五大类型常用的方法
    21.ssm框架--详细整合教程(Spring+SpringMVC+Mybatis)
    20.Mybatis之逆向工程
    Maven环境静态资源问题
    db.properties配置文件
    logo4j配置文件
    mybatis-config.xml系统核心配置文件
    注解
  • 原文地址:https://www.cnblogs.com/pearl07/p/8821083.html
Copyright © 2011-2022 走看看