adb

一、monkey简介

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

二、monkey的基本使用

        ***前提具备Monkey环境

        1、Monkey环境:

          SDK目录下的platform-tools和tools目录要配置环境变量            

            1、搭建adb环境

                (1)安装jdk,配置jdk环境变量:

        A、系统变量→新建 JAVA_HOME变量 。变量值填写jdk的安装目录(默认是C:\Program Files\Java\jdk1.8.0_60)

    B、系统变量→寻找 Path 变量→编辑 在变量值最后输入 %JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;

                        (注意原来Path的变量值末尾有没有;号,如果没有,先输入;号再输入上面的代码)

   C、系统变量→新建 CLASSPATH 变量。变量值填写 .;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar (注意最前面有一点)

                        验证:cmd中输入java -version如果出来版本号即成功。

            (2)下载Android SDK,解压。

              配置SDK环境变量:

             在path中添加Android SDK 安装路径中adb.exe的路径(即platform-tools文件夹所在目录)

             验证:cmd中输入adb version如果出来版本号即成功。

          注意: >在运行中输入cmd进入doc页面 ; >手机打开usb模拟点击功能

        2、查看连接设备

               输入以下命令可以查询已连接的设备与模拟器:

                > adb devices

                    105329_4wxq_3652185.png

        3、查找app包

                列出手机装的所有app的包名:

                 > adb shell pm list packages

                列出除了系统应用的第三方应用包名:

                > adb shell pm list packages -3

                使用 grep 来过滤:

                > adb shell pm list packages | grep czb      //如果提示:'grep' 不是内部或外部命令,也不是可运行的程序,则需要一下执行步骤

                >adb shell     //进入shell,退出使用 exit

                shell@markw:/ $pm list packages -3 | grep "czb"    或者    pm list packages -3 | grep "czb" 

            注意:输入adb shell有肯不报错(如下图),也是因为没有打开usb调试模式

                        164208_s9dC_3652185.png

         4、monkey压力测试

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

                 > adb shell monkey -p com.** -v 100

                命令参数

               1) -p     (参数-p用于约束限制,用此参数指定一个或多个包)

               2) -v        (用于指定反馈信息级别,总共分3个级别)

               3)-s        (用于指定伪随机数生成器的seed值)

                        Monkey测试1:adb shell monkey -p com.htc.Weather –s 10 100

                        Monkey 测试2:adb shell monkey -p com.htc.Weather–s 10 100

                  两次测试的效果是相同的,但是操作序列是随机生成的, 但是只要我们指定了相同的Seed值,   就可以保证两次测试产生的随机操作序列是完全相同的,所以这个操作序列伪随机的

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

            5) --ignore-crashes  (用于指定当应用程序崩溃时(Force& Close错误),Monkey是否停止运行。如果使用此参数,即使应用程序崩溃,Monkey依然会发送事件,直到事件计数完成。)

           6)--ignore-timeouts (用于指定当应用程序发生ANR(Application No Responding)错误时,Monkey是否停止运行。如果使用此参数,即使应用程序发生ANR错误,Monkey依然会发送事件,直到事件计数完成。)

             7)--ignore-security-exceptions(用于指定当应用程序发生许可错误时(如证书许可,网络许可等),Monkey是否停止运行。如果使用此参数,即使应用程序发生许可错误,Monkey依然会发送事件,直到事件计数完成。)

            8)--kill-process-after-error    (用于指定当应用程序发生错误时,是否停止其运行。如果指定此参数,当应用程序发生错误时,应用程序停止运行并保持在当前状态(注意:应用程序仅是静止在发生错误时的状态,系统并不会结束该应用程序的进程)。

            9)--monitor-native-crashes(用于指定是否监视并报告应用程序发生崩溃的本地代码。)

            测试实例

            monkey -p com.czb.youfenqi --throttle 500 --ignore-crashes --ignore-timeouts --ignore-security-exceptions --ignore-native-crashes --monitor-native-crashes -s 800 -v -v -v 200000 >C:/Users/*****/Desktop/monkey.txt 

            Monkey日志保存到PC中:

                > adb shell monkey [option] <count> >d:\monkey.txt   

        5、执行结果

                 解释说明

                $adb shell monkey -p com.**  -v 100   (一个“-v”表示设定级别1,级别1会打印测试执行时的一些信息,例如发送给待测活动的事件。两个“-v”表示设定级别2,级别2会打印最详细的信息。)
                : Monkey: send=1436429343575  count=100
                # monkey在使用伪随机数产生器生成时间序列时,使用的种子是1436429343575,产生100个事件
                : AllowPackage: com.****
                # 指明指启动在“com.****”包中的活动(界面)
                : IncludeCategory: android.intent.category.LAUNCHER
                : IncludeCategory: android.intent.category.MONKEY
                #指明只启动意图种类为“LAUNCHER”和“MONKEY”的活动
                // Event percentages :
                // 0: 15.0%
                // 1: 10.0%
                // 2: 2.0%
                // 3: 15.0%
                // ...
                // 8: 2.0%
                // 9: 1.0%
                // 10: 13.0%
                 #显示将要产生的各种随机事件的比例,这个比例可以自定义。
  :Switch:#Intent;action=android.intent.action.MAIN; category=android.intent.category.LAUNCHER; launchFlags=0×10200000; component=com.****/.activity.SplashActivity; end
  //Allowing start of Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER]
             cmp=com.****/.activity.SplashActivity } in package com.****
            : Sending Touch (ACTION_DOWN) : 0 :(239.0,773.0)
            : Sending Touch (ACTION_UP) : 0 :(243.33736,792.59576)
            : ...
            : Sending Trackball (ACTION_MOVE) : 0 :(1.0,-2.0)
            : Sending Touch #各种随机事件的日志输出,启动活动也是其中的一种事件。这里首先启动主界面并发送一些随机消息。
            Events injected : 100
            : Sending rotation degree=0, persist=false
            : Dropped: keys=0 pointers=0 trackballs=0 flips=0 rotations=0
            ## Network stats : elapsed time = 1131ms (0ms mobile, 1128ms wifi, 3ms not connected)
            // Monkey finished
            #一些统计信息和最终测试报告
            : Sending Touch (ACTION_DOWN) : 0 :(239.0,773.0)

       6、查看结果

                一般的测试结果分析:
                1、 ANR问题:在日志中搜索“ANR”
                2、 崩溃问题:在日志中搜索“Exception”
        7、杀进程

                命令:adb shell ps|grep monkey

                           kill + id

            181614_UFSr_3652185.png

 

            

                

 

转载于:https://my.oschina.net/u/3652185/blog/1613532

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值