zoukankan      html  css  js  c++  java
  • APP测试之Monkey压力测试(二)

    ——————·今天距2020年85·——————

    这是ITester软件测试小栈第51次推文


    大家好,我是coco小锦鲤

    欢乐的假期即将走远

    学习的号角继续吹响

    延续昨天Monkey(一)

    今天进军Monkey(二)

    学到就是一件很happy的事


    通过APP测试之Monkey测试(一),我们了解了Monkey是什么,Monkey是如何实现对APP进行压力测试,也熟悉了Monkey基本的命令,今天将在之前的基础上进行补充和拓展,一起深入接触并掌握Monkey,这之后,我们还将总结APP测试常见问题,不要错过哦!

    Monkey命令组合及规范

    Monkey参数的约束限制规范:

    1.一个 -p 选项只能用于一个包,指定多个包,需要使用多个 -p 选项;

    2.-s <seed> 伪随机数生成器的seed值,如果用相同的seed值再次运行monkey,它将生成相同的事件序列,对9个事件分配相同的百分比;

    3.-c 用此参数指定一个或多个类别,同样,需要指定多个类别就需要多个-c参数;常见的类别有Intent.category.LAUNCHER、Intent.category.MONKEY;

    4.-v 命令行的每一个-v将增加反馈信息的级别:

    Level 0为一个-v的命令,除了启动的提示、测试完成和最终结果之外,提供较少的信息 ;
    Level 1为两个-v的命令,提供较为详细的测试信息,如逐个发送到Activity的事件 ;
    Level 2为三个-v的命令,提供更加详细的测试信息,如测试中被选中或未被选中的Activity;

    常见命令组合:

    1.monkey -p com.package -v 500 :简单的输出测试的信息;

    2.monkey -p com.package -v -v -v 500  :以深度为三级输出测试信息;

    3.monkey -p com.package --port 端口号 -v :为测试分配一个专用的端口号,不过这个命令只能输出跳转的信息及有错误时输出信息;

    4.monkey -p com.package -s 数字 -v 500 :为随机数的事件序列定一个值,若出现问题下次可以重复同样的系列进行排错;

    5.monkey -p com.package -v --throttle 3000 500 

    :为每一次执行一次有效的事件后休眠3000毫秒;

    Monkey测试参数建议

    间隔时间:500毫秒;

    种子数:随机;

    遇到错误:不停止;

    执行时长:每机型不小于12小时或点击次数:100万次;

    机型覆盖建议:覆盖高中低端机型

    不同芯片平台(高通、海思、MTK等)

    不同分辨率(480*800以上主流分辨率)

    不同安卓版本(安卓4.0以上主流安卓版本);

    Monkey参考命令

    adb shell monkey -p com.tencent.XXX(替换包名) --throttle 500 --ignore-crashes --ignore-timeouts --ignore-security-exceptions --ignore-native-crashes --monitor-native-crashes -v -v -v 1000000>d:monkeyScreenLog.log

    测试可以发现的问题

    Android平台应用程序可能产生以下四种Crash:

    App层(JAVA应用程序):

    1、Force Close Crash

    2、ANR Crash 

    Native层(本地框架):

    3、Tombstone Crash(Native Crash)

    Kernel层(LINUX内核空间):

    4、Kernel Panic

    Monkey工具九个事件

    //Monkey工具随机事件类型(seed值)

    [--pct-touch PERCENT]  -0. 触摸事件(down-up事件);

    [--pct-motion PERCENT] -1.动作事件(down-up事件和伪随机事件组成);

    [--pct-trackball PERCENT] -2.轨迹事件(随机移动、有时伴随点击);

    [--pct-nav PERCENT] -3.基本导航事件(导航事件来自方向输入设备的up、down、left、right组成);

    [--pct-majornav PERCENT] -4.主要导航事件(引发图形界面动作,如回退、菜单按键);

    [--pct-syskeys PERCENT] -5.系统按键事件(这些按键通常被保留,由系统使用,如Home、Back、Start Call、End Call及音量控制键);

    [--pct-appswitch PERCENT] -6.调整启动Acticity百分比(在随机间隔里,Monkey将执行一个startActivity()调用,作为最大程度覆盖包中全部Activity的一种方法,从一个Activity跳转到另一个Activity);

    [--pct-flip PERCENT]    -7.调整键盘翻转事件的百分比

    [--pct-anyevent PERCENT]-8.其它类型事件(它包罗了所有其它类型的事件,如:按键、不常用的设备按钮等)

    记录monkey log的值

    adb shell monkey -p com.xxx.xxx 1000 > C:monkey.txt

    说明:

    1.ctrl + c 退出shell 模式 然后 C:XXXXXXX>adb shell monkey -p 包名 -v 300 >e: ext.txt 注:进入adb shell后就相当于进入linux的root下面,没有权限在里面创建文件~

    adb remount 获取root权限。

     2.数字对应下面百分比对应的数字,比如下图中0:15.0%,表示分配--pct-touch事件15%,测试100次分配15次测试down-up

    3.如果在monkey参数中不指定上述参数,这些动作都是随机分配的,9个动作其每个动作分配的百分比之和为100%,我们可以通过添加命令选项来控制每个事件的百分比,进而可以将操作限制在一定的范围内。

    示例:我们先来看一下不加动作百分比控制,系统默认分配事件百分比的情况

    命令:adb shell monkey -v -p com.tencent.WeChat 500

    再看一下指定事件,控制事件百分比之后的情况

    命令:adb shell monkey -v -p com.tencent.WeChat  --pct-anyevent 100 500

    说明:--pct-anyevent 100 表明pct-anyevent所代表的事件的百分比为100%

    运行结果如下:

    Monkey日志定位问题

    1 .典型Monkey测试日志文件输出,如下:

    //主要Log文件说明

    anr目录:从手机/data/anr导出的日志,保存发生anr crash 时的相关信息;

    dontpanic目录:从手机/data/dontpanic/导出的日志,保存发生Kernel Panic时的相关信息;

    Tombstone目录:从手机/data/tombstones/导出的日志,保存发生Tombstone Crash时的错误信息;

    dropbox目录:从手机/data/tombstones/导出的日志,经过dropbox服务截取的部分tombstones错误信息;

    BugReportLog.log:通过adb shell bugreport命令提取的系统各种信息;

    MonkeyScreenLog.Log:保存Monkey测试过程、应用层错误信息,发生Native Crash时,在此文件也会有记录;

    2 .通过日志定位问题步骤

    (1) 在MonkeyScreen.Log日志文件搜索关键词“Fatal”、“Crash”、“ANR”定位到发生Crash的详细堆栈信息,或分析发生Crash前后的日志事件;

    如图:

    (2)检查dropbox目录下是否有相关crash日志信息,主要关注是否有以下4类crash错误信息:data_app_wtf,data_app_anr,data_app_crash,system_server_watchdog,如图:

    (3) 检查tombstone目录是否有生成日志,有的话说明发生过native crash,如图:

    (4)通过anr目录中的日志文件或BugReport.log日志文件,进一步分析问题原因;

    (5)通过上述日志信息,结合代码分析或通过搜索引擎寻找对应问题的可能错误,定位解决问题。

    Monkey后台运行

    作用:使得android系统的设备脱离PC,独立运行monkey和记录logcat和monkey日志。

    方法如下:

    1. 连接设备和PC;

    2 .adb shell 命令进入命令行模式;

    3. 输入 logcat 命令(日志文件的地址使用> /sdcard/logcat_x.log),之后回车,

    如:logcat -v time >/sdcard/logcat_x.log

    4 .输入 monkey 命令(日志文件的地址使用> /sdcard/monkey_x.txt),回车;

    如:monkey -p packageName --throttle 500 -v -v -v 1000000 >/sdcard/monkey.log 对于其余的monkey命令的参数可以自己添加

    5 .此时monkey开始运行,拔掉设备和PC的数据线;

    6 .同时需确认logcat和monkey的日志记录ok(重新连接设备和PC,通过adb shell,进入sdcard,使用 ls –l查看,logcat和monkey日志文件的大小不断变化即ok)。

     

     

    以上


    That‘s all

    ITester小栈

    往期内容宠幸

    叮—这有一打让你666的测试终极资料包,请查收!

    QQ空间面试题放送,速度教科书式扑街补救offer!

    金九银十加薪季,测试题预热一波。

    APP测试流程及测试点总结;

    无法拒绝APP测试的理由,如果你不知道,是我的错!

    给我两小时,我能写很长长长长长长的APP测试用例!

    速看,APP测试之ADB最全指南!

    说好不哭,现在就带你了解直播类音视频测试!

    视频码率/帧率/采样率,了解一下?

    windows性能分析指标解释

    手机信号G、E、O、3E代表什么意思?

    IOS手机耗电量测试的一个文艺玩法


    快来星标 置顶 关注

     T ester

    想要获取相关资料软件 ?

    Q群:701841415

  • 相关阅读:
    LeetCode OJ 112. Path Sum
    LeetCode OJ 226. Invert Binary Tree
    LeetCode OJ 100. Same Tree
    LeetCode OJ 104. Maximum Depth of Binary Tree
    LeetCode OJ 111. Minimum Depth of Binary Tree
    LeetCode OJ 110. Balanced Binary Tree
    apache-jmeter-3.1的简单压力测试使用方法(下载和安装)
    JMeter入门教程
    CentOS6(CentOS7)设置静态IP 并且 能够上网
    分享好文:分享我在阿里8年,是如何一步一步走向架构师的
  • 原文地址:https://www.cnblogs.com/ITester520/p/13203386.html
Copyright © 2011-2022 走看看