一、Monkey简介

Android系统自带monkey程序,模拟用户触摸屏幕、滑动Trackball、按键等操作来对设备上的程序进行压力测试,检测程序多久的时间会发生异常。

Monkey的使用是在产品稳定了,没有特别多的Bug时候。用monkey去测试待测应用的稳定性、健壮性(是否会发生闪退、崩溃),手机出厂前的整机测试。Monkey犹如其猴子的译名,就是杂乱无章的乱点,通过指定执行点击次数,不断的点击安卓系统,或者指定的App,给系统产生压力。

注意:在使用Monkey之前,需要利用adb将PC端与安卓设备连接。

二、monkey常见命令

1.1、调出说明手册

命令:adb shell monkey –help或者-h

这个命令可以查看monkey使用的说明,如下:

1.2、monkey基本命令格式:adb shell monkey {+命令参数} [执行事件次数]

例如:adb shell monkey -v 100

命令参数例如:-p,-v,-c   事件:一个点击、一个回退,等就是一个事件

1.3、命令参数

注意:所有的参数都需要放在monkey和设置的事件次数之间,参数的顺序可以调整;若带了-p ,-p最好放在monkey之后。

例:adb shell monkey -p <包名> --throttle 1000 --ignore-crashes --ignore-timeouts --ignore-security-exceptions --ignore-native-crashes --monitor-native-crashes -v -v -v -s 300 500

1.3.1、打印日志等级

-v: 用于指定反馈信息级别(信息级别就是日志的详细程度)。

总共分3个级别;

一级:-v                //默认级别,仅提供启动、测试完成和最终结果等少量信息

二级:-v –v          //提供较为详细的日志,包括每个发送到Activity的事件信息

三级:-v -v -v      //提供最详细的日志,包括了测试中选中/未选中的Activity信息

例如:adb shell monkey -v -v -v 100

1.3.2、指定测试App

-p <App包名> :增加App的包名时,可以只针对该App进行压力测试;

包名可同时添加多个,同时对多个App测试;

不加"-p <App包名>"时,则对安卓系统进行测试。

例:1)对一个App测试

adb shell monkey -p com.tecent mobileqq -v -v -v 300

2)对两个App进行测试

adb shell monkey -p com.lemon.lemon -p com.tecent mobileqq -v -v -v 300

1.3.3、seed值

-s  用于指定随机数生成器的seed值;

如果前后两次使用monkey时seed值相同,测两次monkey测试所产生的事件序列也相同。用于问题重现;

seed值相当于执行顺序,可以是300、400等。但是遇到问题,需要再次使用monkey复现问题时,seed必须相同。可以直接运行上一次的命令。

格式:adb shell monkey -p <包名> -v -v -v -s <seed值> [执行事件次数]

例:adb shell monkey -p com.tecent mobileqq -v -v -v -s 400 1000

【400:seed的值,1000:执行事件次数】  【复现同一问题时,将此命令重新输一遍】

1.3.4、操作时延

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

例如:时延为1秒,在执行点击事件后等1秒在进行回退事件。

格式:adb shell monkey -v -v -v -p <包名> -s <seed值> --throttle 1000 [执行事件次数]

例:adb shell monkey -v -v -v -p com.tecent mobileqq -s 300 --throttle 1000 500      【--throttle 1000指时间间隔为一秒】

1.3.5、忽略超时和崩溃

monkey测试的过程中遇到crash(崩溃)或者timeout(超时)的情况时,会停止测试。如果想在遇到crash或者timeout时继续运行指令,需要加--ignore-crashes --ignore-timeouts将crash和timeout忽略掉。

格式:adb shell monkey -p <包名> --throttle 1000 --ignore-crashes --ignore-timeouts -v -v -v -s 300 500

三、日志导出

Monkey执行过程中产生异常时,需要把日志导出,将异常信息找出。

1、直接将日志打印至PC端

命令:adb shell monkey -p <包名> -v -v -v [执行事件次数] > <PC端存放目录>

可以在执行monkey过程中,直接将日志存放至PC端。

例:adb shell monkey -p <包名> -v -v -v 200 D:\log.txt

2、执行完monkey之后导出日志

命令:adb logcat –v time > D:\ log.txt  拉取的日志自带时间

3、日志定位

当日志生成后,我们需要进入日志当中查看是否有APP崩溃记录或者无响应记录。

查找关键字:

A、崩溃记录查找”CRASH”;

B、无响应记录查找”ANR”;

C、内存泄露问题搜索"GC"(需进一步分析);

D、异常问题搜索“Exception”;

App压力稳定性测试之Monkey的更多相关文章

  1. APP压力稳定性测试之monkey入门

    1.什么是monkey? Monkey是一个命令行工具,使用安卓调试桥(adb)来运行它,模拟用户触摸屏幕.滑动Trackball.按键等随机事件流来对设备上的程序进行压力测试,检测程序多久的时间会发 ...

  2. APP压力稳定性测试之monkey环境搭建

    一.搭建adb环境: 需要的安装软件包可以使用我分享的,链接:https://pan.baidu.com/s/13DThDtc0GALabTakshcLfg 密码:0kuo:也可以自己百度下载 1)下 ...

  3. [Android 测试] 压力稳定性测试之: Monkey 详解分析脚本(转载)

    一.什么是稳定性测试? 通过随机点击屏幕一段时间,看看app会不会奔溃,能不能维持正常运行. 二. Money是什么? Monkey测试是Android平台自动化测试的一种手段,通过Monkey程序模 ...

  4. android app 压力测试工具-monkey tool

    一.什么是Monkey? Monkey测试是Android自动化测试的一种手段,Monkey测试本身非常简单,就是模拟用户的按键输入,触摸屏输入,手势输入等,看设备多长时间会出异常. Monkey是A ...

  5. Android App 压力测试方法(Monkey)

    一.为什么要开展压力测试 a.提高产品的稳定性:b.提高产品的留存率 二.什么时候开展压力测试 a.首轮功能测试通过后:b.下班后的夜间进行 三.7个基础知识(理论部分) 3.1 手动测试场景与自动测 ...

  6. APP压力稳定性测试

    转自:https://www.cnblogs.com/nuonuozhou/p/8643735.html 1.android系统自带monkey程序,模拟用户触摸屏幕,滑动track ball,按键等 ...

  7. Android App压力测试方法(Monkey)

    一.为什么要开展压力测试 a.提高产品的稳定性:b.提高产品的留存率 二.什么时候开展压力测试 a.首轮功能测试通过后:b.下班后的夜间进行 三.7个基础知识(理论部分) 3.1 手动测试场景与自动测 ...

  8. 安卓手机APP压力monkey测试

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

  9. Android APP压力测试(一)之Monkey工具介绍

    Android APP压力测试(一) 之Monkey工具介绍 前言 本文主要介绍Monkey工具.Monkey测试是Android平台自动化测试的一种手段,通过Monkey程序模拟用户触摸屏幕.滑动. ...

随机推荐

  1. Git私服搭建

    Git私服搭建 一.Git服务器搭建方式 GIT是一个分布式版本管理系统,既然是分布那么必定会涉及远程通信,那么GIT是采用什么协议进行远程通信? Git支持的四种通信协议: Local(本地协议) ...

  2. Think 框架漏洞利用

    下午有点闲,又没有女朋友陪,该干嘛呢??? 对了,做安全的是不需要女朋友的,哈哈哈哈哈 废话不多说,本机搭建环境: 首先nmap扫描一下,哦哈,有点东西. 开的端口有点多,这个时候有点窃喜,开的端口太 ...

  3. 后渗透之meterpreter使用攻略

    Metasploit中的Meterpreter模块在后渗透阶段具有强大的攻击力,本文主要整理了meterpreter的常用命令.脚本及使用方式.包含信息收集.提权.注册表操作.令牌操纵.哈希利用.后门 ...

  4. 在浏览器中使用ES6的模块功能 import 及 export

    感谢英文原作者 Jake Archibald 的技术分享 各个浏览器对于ES6模块 import . export的支持情况 Safari 10.1. Chrome 61. Firefox 54 – ...

  5. C++读入输出优化

    读入输出优化虽然对于小数据没有半点作用,但是对于大数据来说,可以优化几十ms. 有时就是那么几十ms,可以被卡掉大数据的点 读入优化 int read() { int x=0,sig=1; char ...

  6. POJ 1065 & ZOJ 1025

    #include <cstdio> #include <iostream> #include <algorithm> #include <cstring> ...

  7. 深度学习与人类语言处理-语音识别(part2)

    上节回顾深度学习与人类语言处理-语音识别(part1),这节课我们将学习如何将seq2seq模型用在语音识别 LAS 那我们来看看LAS的Encoder,Attend,Decoder分别是什么 Lis ...

  8. Javaweb编程

    首先是题目要求: 1登录账号:要求由6到12位字母.数字.下划线组成,只有字母可以开头:(1分) 2登录密码:要求显示“• ”或“*”表示输入位数,密码要求八位以上字母.数字组成.(1分) 3性别:要 ...

  9. 在Centos系统中基于PowerDNS实现master和slave的域名解析服务双备份

    在上一篇文章中,阐述了如何在Centos 7系统(其他版本的Centos未尝试)中基于PowerDNS和poweradmin自建域名解析服务器替代DnsPod的过程.但是在一般的DNS服务中,我们需要 ...

  10. HTML每日学习笔记(2)

    7.16.2019 1.html表单:用于得到用户不同类型的输入 <form>元素定义表单: <form> First name:<br> <input ty ...