热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

九、App稳定性测试Monkey

目录1.Monkey是什么?2.Monkey组成3.Monkey测试的目的4.Moneky运行环境搭建5.Monkey执行前准备命令:6.工作中具体使用7.Moneky结果分析8.

目录

1.Monkey是什么?

2.Monkey组成

3.Monkey测试的目的

4.Moneky运行环境搭建

5.Monkey执行前准备命令:

6.工作中具体使用

7.Moneky结果分析

8.Monkey执行的前提条件:

9.Monkey的bug描述

1.Monkey是什么?

  • Monkey是Android中附带的一个工具,可以运行在模拟器里或实际设备中。
  • 他向系统发送伪随机的用户事件流(如键盘输入、触摸屏输入、手势输入等),实现对正在开发的应用陈旭进行压力测试,存放在手机的/system/framework/

2.Monkey组成

  1. 基本配置选项,如设置测试的事件数量
  2. 运行约束选项,如设置只对单独的一个包进行测试
  3. 事件类型和频率
  4. 调试选项

3.Monkey测试的目的

  1. 进行压力测试
  2. 然后开发人员结合monkey打印的日志和系统打印的日志,发现测试中出现的问题。
  3. 特点:Monkey测试,所有的事件都是随机产生的,不带任何主观性。

4.Moneky运行环境搭建

  1. 下载sdk安装包配置sdk的环境变量,具体请参考https://editor.csdn.net/md/?articleId=100120319
  2. 下载JDK,配置JDK环境变量,具体请参考:https://mp.csdn.net/postedit/104103560

5.Monkey执行前准备命令:

  1. 打开手机的开发者调试工具,用usb数据线链接你的手机;
    1. 通过USB将手机连接电脑。
    2. windows+r 输入cmd进入dos命令行;
    3. 输入adb devices ;
    4. 再输入 adb shell pm list packages    查看你的手机所有的安装包;输入 adb shell pm list packages -3 查看手机上所有的第三方安装包,尽量让测试机少安装第三方软件,这样可以尽快的找到想要的安装包名称;《九、App稳定性测试--Monkey》

       

  2. Monkey命令
    1. adb shell monkey 400:对手机上任意应用进行随机操作
    2. adb shell monkey -p com.songqin.sqoa 400:对松勤OA进行400次事件的monkey测试
    3. adb shell monkey -p com.songqin.sqoa -p com.songiqn.sqjy 400 :对松勤OA和松勤教育共执行400次monkey测试,数量随机分配
    4. 结果如图:《九、App稳定性测试--Monkey》《九、App稳定性测试--Monkey》《九、App稳定性测试--Monkey》
      1. Event percentages(事件百分比):

        0:触摸事件百分比,参数–pct-touch

        1:滑动事件百分比,参数–pct-motion

        2:缩放事件百分比,参数–pct-pinchzoom

        3:轨迹球事件百分比,参数–pct-trackball

        4:屏幕旋转事件百分比,参数–pct-rotation

        5:基本导航事件百分比,参数–pct-nav

        6:主要导航事件百分比,参数–pct-majornav

        7:系统事件百分比,参数–pct-syskeys

        8:Activity启动事件百分比,参数–pct-appswitch

        9:键盘翻转事件百分比,参数–pct-flip

        10:其他事件百分比,参数–pct-anyevent

    5. [–throttle MILLISEC]:事件最大延迟时间  单位是毫秒:用于模拟用户操作间隔时间

    6. count(执行测试次数)

    7. [-v [-v] …]:表示日志的详细程度 ,最多-v -v -v,一般用两个.

    8. [-s SEED]:种子值,序列号,作用

      1. 开发可以通过相同的seed值进行复现和解决bug

      2.  测试:可以通过相同的seed对bug进行验证

      3. 原则:项目开始执行monkey测试的时候到monkey测试结束的时候seed保持一致    

      4.  相同的seed值表示操作的动作和顺序是一致的

    9. [–ignore-crashes] [–ignore-timeouts] [–ignore-security-exceptions]

      1. 如果使用了该参数:在测试过程中如果遇到了crash.anr等情况,monkey是继续执行,直到事件次数结束.必要的情况下,是结束app的进程,重新打开接着开始

      2. 如果不使用该参数:测试过程中发生crash,anr等情况,Monkey测试就会停止,保持在发生问题的界面

    10.  –kill-process-after-error:测试中发生问题后,停止Monkey测试,保持在发生问题的界面 (一般用不到)

    11. [–monitor-native-crashes] :监控本地的crash,抓取由于执行过程中引起的手机上其他任意应用发生问题的记录            [–ignore-native-crashes]:忽略本地crash

    12. [–pct-touch PERCENT] [–pct-motion PERCENT]
      [–pct-trackball PERCENT] [–pct-syskeys PERCENT]
      [–pct-nav PERCENT] [–pct-majornav PERCENT]
      [–pct-appswitch PERCENT] [–pct-flip PERCENT]
      [–pct-anyevent PERCENT] [–pct-pinchzoom PERCENT]
      [–pct-permission PERCENT]
      设定执行过程操作事件百分比,一般情况下为默认.
          

6.工作中具体使用

  1. 命令:adb shell monkey -p  包名 –ignore-crashes –ignore-timeouts –ignore-security-exceptions –monitor-native-crashes -s 360 -v -v –throttle 450 350000 >D:\log\monkeylog.txt  
  2. 重定向–用于保存

7.Moneky结果分析

  1. Monkey的日志分析
    1. Monkey错误图片:《九、App稳定性测试--Monkey》
    2. 正常的结果:// Monkey finished      elapsed time=25352ms 共耗费时间
    3. crash:  //CRASH 包名 《九、App稳定性测试--Monkey》
    4. ANR:《九、App稳定性测试--Monkey》《九、App稳定性测试--Monkey》
              //NOT RESPONDING:包名
              ANR in 包名
    5. 异常中断:没有上述三种关键字显示
    6. 其他异常:关机:温度过高—>temperature/电量过低–>batterylevel=0
                       重启:Reboot:monkey测试中发生了问题:monkey中断/不中断/logcat停止了,手机亮屏
                       tcdump:黑底蓝字—>app测试中几乎没有
  2. adb logcat日志的分析:
    1. 两个cmd,一个执行monkey命令,一个执行adb logcat
    2. 命令:adb logcat -v  time >D:\log\logcat.txt
    3. 不会自动停止,只能第二天上班手动停止( ctrl+c)
  3. 步骤
    1. 先查看monkey结果,如果Monkey结果正常,那么都不用看了
    2. 如果Monkey结果也有问题,根据关键字,在logcat中搜索,查到响应的位置
      1. CRASH:logcat中显示为:fatal exception
      2. ANR:logcta中显示为:ANR
    3. 复制关键信息前后两行,附在bug的描述中
    4. .logcat日志打包附在bug的附件中

8.Monkey执行的前提条件:

  1. 手机设置常亮,锁屏关闭
  2. 电量在90以上
  3. 其他设置要设置好,wifi,数据网络,进程该关闭就关闭
  4. app登录,数据创造,必要的情况,打开app一个页面
  5. 执行命令之后少等一会,如果在可见之内发现退出账号,可以尝试换一个seed值操作

9.Monkey的bug描述

  1. 标题:[monkey][crash/anr/关机]XX应用执行monkey是发生FATAL EXCEPTION: main
  2. 前提:Monkey前提
  3. 步骤:
    1.连接手机
    2.执行命令:命令
    3.查看结果
    4.关键字:
    06-17 23:53:54.162 E/AndroidRuntime( 3375): FATAL EXCEPTION: main
    06-17 23:53:54.162 E/AndroidRuntime( 3375): Process: edu.yjyx.student, PID: 3375
  4. 实际结果:执行Monekey 发生xxxx
    预期结果:执行monkey,没有异常发生

推荐阅读
  • 本文介绍了进程的基本概念及其在操作系统中的重要性,探讨了进程与程序的区别,以及如何通过多进程实现并发和并行。文章还详细讲解了Python中的multiprocessing模块,包括Process类的使用方法、进程间的同步与异步调用、阻塞与非阻塞操作,并通过实例演示了进程池的应用。 ... [详细]
  • iOS 小组件开发指南
    本文详细介绍了iOS小部件(Widget)的开发流程,从环境搭建、证书配置到业务逻辑实现,提供了一系列实用的技术指导与代码示例。 ... [详细]
  • 本文详细介绍了Socket在Linux内核中的实现机制,包括基本的Socket结构、协议操作集以及不同协议下的具体实现。通过这些内容,读者可以更好地理解Socket的工作原理。 ... [详细]
  • Mysqlcheck作为MySQL提供的一个实用工具,主要用于数据库表的维护工作,包括检查、分析、修复及优化等操作。本文将详细介绍如何使用Mysqlcheck工具,并提供一些实践建议。 ... [详细]
  • 本文详细介绍了如何在本地环境中安装配置Frida及其服务器组件,以及如何通过Frida进行基本的应用程序动态分析,包括获取应用版本和加载的类信息。 ... [详细]
  • 本文介绍了一个基本的同步Socket程序,演示了如何实现客户端与服务器之间的简单消息传递。此外,文章还概述了Socket的基本工作流程,并计划在未来探讨同步与异步Socket的区别。 ... [详细]
  • 基于51单片机的多项目设计实现与优化
    本文探讨了基于51单片机的多个项目的设计与实现,包括PID控制算法的开关电源设计、八音电子琴仿真设计、智能抽奖系统控制设计及停车场车位管理系统设计。每个项目均采用先进的控制技术和算法,旨在提升系统的效率、稳定性和用户体验。 ... [详细]
  • 本文将详细介绍如何配置并整合MVP架构、Retrofit网络请求库、Dagger2依赖注入框架以及RxAndroid响应式编程库,构建高效、模块化的Android应用。 ... [详细]
  • 使用R语言进行Foodmart数据的关联规则分析与可视化
    本文探讨了如何利用R语言中的arules和arulesViz包对Foodmart数据集进行关联规则的挖掘与可视化。文章首先介绍了数据集的基本情况,然后逐步展示了如何进行数据预处理、规则挖掘及结果的图形化呈现。 ... [详细]
  • 本文详细介绍了PHP中的几种超全局变量,包括$GLOBAL、$_SERVER、$_POST、$_GET等,并探讨了AJAX的工作原理及其优缺点。通过具体示例,帮助读者更好地理解和应用这些技术。 ... [详细]
  • 本文详细介绍了如何在PHP中使用Memcached进行数据缓存,包括服务器连接、数据操作、高级功能等。 ... [详细]
  • selenium通过JS语法操作页面元素
    做过web测试的小伙伴们都知道,web元素现在很多是JS写的,那么既然是JS写的,可以通过JS语言去操作页面,来帮助我们操作一些selenium不能覆盖的功能。问题来了我们能否通过 ... [详细]
  • 如何高效学习鸿蒙操作系统:开发者指南
    本文探讨了开发者如何更有效地学习鸿蒙操作系统,提供了来自行业专家的建议,包括系统化学习方法、职业规划建议以及具体的开发技巧。 ... [详细]
  • 前端技术分享——利用Canvas绘制鼠标轨迹
    作为一名前端开发者,我已经积累了Vue、React、正则表达式、算法以及小程序等方面的技能,但Canvas一直是我的盲区。因此,我在2018年为自己设定了一个新的学习目标:掌握Canvas,特别是如何使用它来创建CSS3难以实现的动态效果。 ... [详细]
  • 本文由公众号【数智物语】(ID: decision_engine)发布,关注获取更多干货。文章探讨了从数据收集到清洗、建模及可视化的全过程,介绍了41款实用工具,旨在帮助数据科学家和分析师提升工作效率。 ... [详细]
author-avatar
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有