51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

测试开发精英班,通向高级软件测试工程师论坛测试积点免费获取渠道攻略【长期招募】博为峰网校招聘兼职讲师!横扫BAT,Python全栈测试开发技能大全
【111期】:聊聊想出国找测试工作最核心的那些事!2020不玩虚的,先来一波技术PK! 【征稿】疫情当下手头紧?这波投稿补贴很及时! 自学软件测试那点事
查看: 2348|回复: 1

【转】Android Monkey 压力测试 介绍

[复制链接]
  • TA的每日心情
    郁闷
    2020-2-24 14:30
  • 签到天数: 498 天

    连续签到: 1 天

    [LV.9]测试副司令

    发表于 2016-7-27 11:30:56 | 显示全部楼层 |阅读模式
    文章出处:博客园 作者:虫师
    Monkey 是Android SDK提供的一个命令行工具, 可以简单,方便地运行在任何版本的Android模拟器和实体设备上。 Monkey会发送伪随机的用户事件流,适合对app做压力测试
    阅读目录
    环境搭建
    什么是Monkey
    Monkey 用来做什么
    Monkey程序介绍
    Monkey 架构
    Monkey弱点
    Monkey 参数大全
    Monkey 命令 基本参数介绍
    Monkey 实例
    Monkey 查看包名
    Monkey  日志分析
    必须重视Crash
    环境搭建
    安装Android SDK 并配置环境变量

    什么是Monkey
    顾名思义,Monkey就是猴子,  Monkey测试,就像一只猴子, 在电脑面前,乱敲键盘在测试。  猴子什么都不懂, 只知道乱敲
    通过Monkey程序模拟用户触摸屏幕、滑动Trackball、 按键等操作来对设备上的程序进行压力测试,检测程序多久的时间会发生异常

    Monkey 用来做什么
    Monkey 主要用于Android 的压力测试  自动的一个压力测试小工具, 主要目的就是为了测试app 是否会Crash.

    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终端模拟器  


    Monkey 架构
    Monkey 运行在设备或模拟器上面,可以脱离PC运行(普遍做法是将monkey作为一个像待测应用发送 随机按键消息的测试工具。验证待测应用在这些随机性的输入面前是否会闪退或者崩溃)

    Monkey弱点
    Monkey虽然可以根据一个指定的命令脚本发送按键消息,但其丌支持条件判断,也丌支持读取待测界 面的信息来执行验证操作。


    Monkey 参数大全

    Monkey 命令 基本参数介绍
    -p <允许的包名列表>         
    用此参数指定一个或多个包。指定包之后,monkey将只允许系统启动指定的app。如果丌指定包, monkey将允许系统启动设备中的所有app。  
    指定一个包:adb shell monkey -p com.shjt.map 100   
    指定多个包:adb shell monkey -p fishjoy.control.menu  –p com.shjt.map  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.shjt.map –s 10 100               
    monkey测试2:adb shell monkey -p com.shjt.map –s 10 100  

    --throttle <毫秒>            
    用亍指定用户操作(即事件)间的时延,单位是毫秒;如果丌指定这个参数,monkey会尽可能快的 生成和发送消息。 示
    例:adb shell monkey -p com.shjt.map --throttle 3000 100   

    Monkey 实例用monkey 命令 对上海公交 app进行 性能测试
    adb shell monkey –p com.shjt.map –throttle 100 –pct-touch 50 –pct-motion 50 –v –v 1000 >c:\monkey.txt


    Monkey 查看包名
    手机中安装APK包名查看器  
    源码下的AndroidManifest.xml文件查看  
    aapt命令查看  




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

    异常情况
    Monkey 测试出现错误后,一般的分析步骤
    看Monkey的日志 (注意第一个swith以及异常信息等)
    1. 程序无响应的问题: 在日志中搜索 “ANR”
    2. 崩溃问题:在日志中搜索 “Exception”   (如果出现空指针, NullPointerException)  肯定是有bug

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

    必须重视Crash
    虽然Monkey测试有部分缺陷,我们无法准确地得知重现步骤, Monkey测试所出现的NullPointException,  都是可以在用户使用时出现的, 何时出现只是时间问题
    理论上来说,  Monkey所有的Crash 都需要在发布前修复掉


    回复

    使用道具 举报

  • TA的每日心情
    开心
    2017-5-18 13:40
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    发表于 2017-5-18 13:44:04 | 显示全部楼层
    谢谢,没事看看
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2020-4-2 02:01 , Processed in 0.062339 second(s), 25 queries .

    Powered by Discuz! X3.2

    © 2001-2020 Comsenz Inc.

    快速回复 返回顶部 返回列表