zoukankan      html  css  js  c++  java
  • 使用MONKEY 对APP(真机)进行压力测试步骤

    一、Android-SDK 压缩包下载

    Android-SDK 压缩包下载地址:www.android-studio.org

    下载后可解压到E盘,新建SDK目录 下, adb 工具在E:SDKandroid-sdk-windowsplatform-tools 中

     

    二、配置环境变量 

    1、右击 计算机-属性-高级系统设置-环境变量

    2、在系统变量下点击新建按钮,输入环境变量名android(自己的习惯命名),将android开发工具的路径导入

    在加入下个路径的时候要加上英文的分号,注意路径一定要对

    3、 在path中添加刚刚添加的环境。选择系统变量中Path,点击编辑按钮,输入刚刚建好的环境,方法和配置java一样,记住要加两个百分号,如图:

    4、测试环境变量

     在cmd中输入adb

    (如果不配置,则需切换到 adb 所在的路径下运行,即 E:SDKandroid-sdk-windowsplatform-tools)

     

    三、连接手机

     1、用手机连接电脑,打开手机-设置-开发者选项-开启 USB 调试

    2、查看连接的设备:adb devices

    如出现以下情况:

    * daemon not running. starting it now *
    ADB server didn't ACK
    * failed to start daemon *

    原因:

    有另外一个应用占用了ADB SERVER的端口,也许是adb shell本身,结束进程中的adb.exe并重新启动adb试试。。

    猜测是某个程序占用了adb端口。于是按此思路查找。

    5037为adb默认端口 查看该端口情况如下:

    netstat -aon|findstr "5037"

    TCP 127.0.0.1:5037 0.0.0.0:0 LISTENING 6540

    发现6540占用了 5037端口,继续查看6540的task,发现是wandoujia .如下所示

    tasklist|findstr "6540"

    wandoujia_daemon.exe 6540 Console 1 4,276 K

    接下来问题就好解决了,在任务管理器kill掉wandoujia_daemon.exe ,运行android程序,ok .

    a.关闭豌豆荚进程

    b.adb kill-server

    c.adb start-server

     

    3、使用ADB 命令安装应用包:adb install -r APK包(-r 表示卸载再安装,APK包需放在和ADB工具同级目录下)

     

    如果安装失败提示没有权限,先获取root权限:adb root

     4、卸载应用:adb uninstall 主包名

    如何查看应用的主包名:

    (1)没有apk,应用已经安装到手机或虚拟机中

    1.logcat

    .清除logcat内容,使用命令adb logcat -c

    .启动logcat,使用命令adb logcat ActivityManager:I *:s

    .启动要查看的程序

     

    (2)dumpsys

    启动要查看的程序;

    命令行输入:adb shell dumpsys window w |findstr / |findstr name=

     

    补充:使用adb shell dumpsys window | findstr mCurrentFocus  命令查看当前运行的包名和Activity更清晰一些。

    (3)使用aapt    
    aapt是sdk自带的一个工具,在sdkuilds-tools目录下,

    1. 在cmd中,切换至sdkuilds-tools目录下,即aapt.exe目录下
    2.以QQ音乐为例,命令行中切换到aapt.exe目录执行:aapt dump badging C:UsersAdministratorDesktopQQyinle_155.apk(apk所在目录位置)
    3.运行后的结果中以下两行分别是应用包名package和入口activity名称
    package: name='com.tencent.qqmusic'
    launchable-activity: name='com.tencent.qqmusic.activity.AppStarterActivity'
     
    (4)通过查看APK源码下的AndroidManifest.xml 文件
     

     四、通过monkey 给手机发送指令

    Adb  shell monkey 1000   不指定应用名给手机发送1000个随机事件

    Adb shell monkey -p 包名1000   给指定包名发送1000个随机事件

     

    如出现以下提示,则可能是主包名错误,按照上面详解先查看包名

    五、monkey  常见参数含义

    (01)   adb shell monkey -p 包名 --ignore-crashes 1000     忽略程序崩溃, 测试过程中即使程序崩溃,Monkey依然会继续发送事件直到事件数目达到1000为止

    (02)   adb shell monkey -p 包名 --ignore-timeouts 1000     忽略程序无响应, 测试过程中即使程序无响应,Monkey依然会继续发送事件直到事件数目达到1000为止

    (03)   -s <seed>   伪随机数生成器的 seed 值。如果用相同的 seed 值再次运行 Monkey ,它将生成相同的事件序列。

            例:

                 adb shell monkey -p com.htc.Weather –s 10 100

                 adb shell monkey -p com.htc.Weather –s 10 100

            两次测试的效果是相同的,因为模拟的用户操作序列(每次操作按照一定的先后顺序所组成的一系列操作,即一个序列)是一样的。操作序列虽然是随机生成的,但是只要我们指定了相同的Seed值,就可以保证两次测试产生的随机操作序列是完全相同的,所以                这个操作序列伪随机的. 

    (04)  --throttle <milliseconds>     在事件之间插入固定延迟。通过这个选项可以减缓 Monkey 的执行速度。用于指定用户操作(即事件)间的时延,单位是毫秒。如果不指定该选项, Monkey 将不会被延迟,事件将尽可能快地被产成

                 例:   adb  shell monkey -p 包名  --throttle 3000 1000                 总共1000个事件 每个事件之间延时3000毫秒

    (05)  --ignore-security-exceptions     通常,当应用程序发生许可错误(如启动一个需要某些许可的Activity)时,Monkey将停止运行。如果设置了此选项,Monkey将继续向系统发送事件,直到计数完成。

                例:   adb  shell monkey -p 包名 --ignore-security-exceptions 1000

    六、导出log日志到本地

    在操作app中出现异常情况可导出log日志到本地发给开发分析

    Adb logcat ->d:xxx.txt  导出到D盘根目录,名称为xxx.txt

     

    Monkey 测试出现错误后,一般的分析步骤 看Monkey的日志 (注意第一个swith以及异常信息等)

    如果用monkey设置了忽略程序崩溃或无响应,在导出的日志中搜索

    崩溃问题:在日志中搜索Exception(如果出现空指针, NullPointerException) 肯定是有bug

    程序无响应的问题: 在日志中搜索 “ANR

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

  • 相关阅读:
    (转)值得学习百度开源70+项目
    C#中$的用法
    (转载)《C#高级编程》读书笔记
    C#调用大漠插件
    Visual Studio 2017 扩展推荐
    C#操作Dataset数据集与SQLite数据库
    (转载)C#格式规范
    (转载)DataTable与List<T>相互转换
    FastReport.Net
    (转载)C #开源框架
  • 原文地址:https://www.cnblogs.com/Sammy-chen/p/7837447.html
Copyright © 2011-2022 走看看