zoukankan      html  css  js  c++  java
  • ADB中monkey测试

    1、Monkey测试

      1.1、参考材料

        http://blog.csdn.net/jlminghui/article/details/38238443

      1.2、Monkey介绍

    顾名思义,Monkey就是猴子,  Monkey测试,就像一只猴子, 在电脑面前,乱敲键盘在测试。  猴子什么都不懂, 只知道乱敲

     

    通过Monkey程序模拟用户触摸屏幕、滑动Trackball、 按键等操作来对设备上的程序进行压力测试,检测程序多久的时间会发生异常

    1.3、Monkey用来做什么 

    Monkey 主要用于Android 的压力测试  自动的一个压力测试小工具, 主要目的就是为了测试app 是否会Crash(崩溃).

    1.4 Monkey程序介绍

    1) Monkey程序由Android系统自带,使用Java语言写成,在Android文件系统中的存放路径是:     /system/framework/monkey.jar;   
    2) Monkey.jar程序是由一个名为“monkey”的Shell脚本来启动执行,shell脚本在Android文件系统中 的存放路径是:  /system/bin/monkey;  
    3)Monkey 命令启动方式:    
              a)可以通过PC机CMD窗口中执行: adb shell monkey {+命令参数}来进行Monkey测试          

    b)在PC上adb shell 进入Android系统,通过执行 monkey {+命令参数} 来进行Monkey 测试          

    c )  在Android机或者模拟器上直接执行monkey 命令,可以在Android机上安装Android终端模拟器

    2、Money 命令 基本参数介绍

      2.1、使用monkey测试手机所有程序

    adb shell monkey 100 执行monkey测试100次 针对rom测试或者

      

     2.2、-p<允许的包名列表>

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

    adb shell monkey -p com.tencent.mobilleqq  100

      

     2.3 显示日志详细程度

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

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

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

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

     2.4、Monkey日志分析

      将log信息写到文档中

    adb shell monkey 100 >E:/22.txt

      

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

    随机数种子

    用亍指定伪随机数生成器的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

     2.5、--throttle<毫秒>

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

    adb shell monkey -p com.example.login --throttle 300 100 

    表示执行100个伪随机用户事件流,事件间隔为300毫秒。

    注:一般设置为300毫秒,原因是实际用户操作的最快300毫秒左右一个动作事件。

     2.6、--pct-touch<percent>

    调整触摸事件的百分比。(触摸事件是指在屏幕中的一个down-up事件,即在屏幕某处按下并抬起的操作)  

    –pct-touch:触摸事件。即在某一位置的Down-Up(手指的放下和抬起)事件。Down(ACTION_DOWN)和Up(ACTION_UP)的坐标临近,但并非相同。

    adb shell monkey --pct-touch 65 -v 10

      

    此参数设置要适应当前被测应用程序的操作,比如一个应用80%的操作都是触摸,那就可以将此参数的百分比设置成相应较高的百分比。

     2.7、--pct-motion<percent>

    调整motion事件百分比。(motion事件是由屏幕上某处一个down事件、一系列伪随机的移动事件和一个up事件组成)

    –pct-motion:动作事件。以Down(ACTION_DOWN)开始,Up(ACTION_UP)结尾,中间至少有一次Move(ACTION_MOVE)。

    adb shell monkey --pct-motion 67 -v 10

     

      

     

    表示执行10个伪随机用户事件流,并调整其中动作事件的百分比为67%

    注:这里的移动是直线滑动

    2.8、--ignore-crashes

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

       正常操作,不忽略异常

     

    adb shell monkey --ignore-crashes –v 10

     

      

     2.9、Monkey 实例

      用monkey命令 对登录apk进行 性能测试

      

    monkey -p com.tencent.mtaexample -s 23  --throttle2000 --ignore-crashes --ignore-timeouts -v -v -v 100000>/data/local/tmp/log.txt 2>&1 &

     

     

            1.   -p后面接着的对应的包名,如果是整机测试,就不需要 -p  package_name

     

            2.   -s后面是对应的种子数,好像就是操作步骤,根据她们测试的经验,一般种子数在23,同步她们测试的结果,一般种子的个数固定为23,和她们选择的操作步骤就是同步的。

     

            3.   --ignore-crashes --ignore-timeouts 这里是在monkey测试的过程中遇到carash或者timeout的情况时忽略掉,一般不设置时,出现carash或者timeout时,Monkey测试会终止。这里是防止Monkey测试终止。

     

            4.   -v 指的是Monkey测试时打印log级别。

     

            5.   100000 这里是指点击的次数,根据她们测试的经验,对于单个应用程序这个次数设置在100000次就可以了;如果是整机,一般设置在500000次。

     

    /data/local/tmp/log.txt测试的log记录在手机上/data/local/tmp/ 下面的log.txt里面,这个名字可以自己写。

     

            6.   2>&1 固定的写法,这个也很重要,代表的意思是中间忽略的东东的日志一并输入到指定的文件中。

     

     

            7.   最后单独的一个"&" 是一旦Monkey测试开始了,之后可以拔掉数据线,不会影响Monkey测试。

     

     

            8.   测试所有模块  monkey  -s 23 --ignore-crashes --ignore-timeouts -v-v -v 100000> /data/local/tmp/log.txt 2>&1 &

    adb shell monkey -p com.example.login --ignore-crashes --ignore-timeouts --throttle 100 --pct-touch 50 --pct-motion 50 -v -v 1000 >E:/324.txt

     

      

    3.1.1. Monkey异常分析

    一般我们可以一次发送5万次随机事件的请求,每个请求之间的间隔为150毫秒,测试大约会进行40min,完成以后就可以查看日志。 

    日志中可能的错误:

    1.程序异常退出,uncausedexception (ctrl+f搜索)

    2.程序强制关闭,ForceClosed (简称FC) (同上)

    3.程序无响应,ApplicationNo Response(ctrl+f搜索‘ANR ’,加空格是为了屏蔽掉一些无效信息)

    4.手动生成。
    Monkey 执行中断, 在log最后也能看到当前执行次数

     

  • 相关阅读:
    Java实现 LeetCode 242 有效的字母异位词
    Java实现 LeetCode 212 单词搜索 II
    Java实现 LeetCode 212 单词搜索 II
    Java实现 LeetCode 212 单词搜索 II
    Java实现 LeetCode 212 单词搜索 II
    Java实现 LeetCode 344 反转字符串
    Java实现 洛谷 P1208 [USACO1.3]混合牛奶 Mixing Milk
    Java实现 洛谷 P1208 [USACO1.3]混合牛奶 Mixing Milk
    Java实现 洛谷 P1208 [USACO1.3]混合牛奶 Mixing Milk
    Java实现 洛谷 P1208 [USACO1.3]混合牛奶 Mixing Milk
  • 原文地址:https://www.cnblogs.com/wanglisen/p/14058056.html
Copyright © 2011-2022 走看看