APP压力测试Monkey工具--新手入门

Monkey压力测试工具简介

一.Monkey测试简介

Monkey测试是Android平台自动化测试的一种手段,通过Monkey程序模拟用户触摸屏幕、滑动Trackball、按键等操作来对设备上的程序进行压力测试,检测程序多久的时间会发生异常。

二.环境搭建

1.安装JDK,先下载JDK解压、安装;(jdk和jre安装在同一个文件下)安装完成后在JAVA文件夹下产生两个文件夹,如图:

2.JAVA环境变量的搭建:

我的电脑→右键属性→→环境变量点击新建

在系统变量里需找Path,点击编辑--添加%JAVA_HOME%\bin;后点击确定

添加完成后,按win+r键打开运行,输入cmd

在cmd输入java –version或者javac

如果出现了JAVA的版本信息,说明环境变量设置成功

3.Android SDK工具安装,选择适合自己电脑系统的安装。

  • sdk(64位操作系统):
  • sdk(32位操作系统):

安装路径可改(选择空间大的盘,之后下载的安卓工具会比较大:几十个G),安装之后如下图:

安装完之后,先设置Android的环境变量,与JAVA一样

先新建ANDROID_HOME环境变量

在Path编辑加入%ANDROID_HOME%\tools;%ANDROID_HOME%\platform-tools;

检验配置是否成功,在cmd中,输入:adb,出现下图表示成功

三.Monkey测试命令[注意:保证手机内存充足,否则无法测试]

输入adb空格shell:

出现error:device not found,说明安卓设备没有被找到,此时可以使用手机连接电脑,手机的USB模式必须打开,电脑上必须安装有手机的驱动,连上设备之后,我们在输入adb shell命令

输入执行操作的命令:pm list packages获取到手机里所有的安装包名;

pm list packages -3  可以直接查到手机里面第三方软件的包名;

上图命令执行完后,此时我们可以执行monkey命令:

monkey -p com.example.ting_app –v 1000   (包名为例)

此命令意思为执行1000次随机用户模拟操作,com.example.ting_app为安装包的名字,

注意:输出日志在PC端时,需要退出shell; windows返回上层命令为:exit  ; 例如:adb shell monkey -p com.example.fx_app -s 88 --throttle 100 -v -v 15000 > C:\Monkey_log1.txt

也可以设置不依赖USB打印log

在执行monkey测试的时候,如果将monkey测试的日志存放在手机的sdcard或者其他目录下,在monkey测试命令的最后加上一个&符号,则可以再不连接USB的情况下继续执行monkey。如:monkey –p com.android.mms –s 100 --throttle 1000 –v –v –v 15000 > /mnt/sdcard/monkey_test.txt&

四.命令参数解析

* 参数-p用于约束限制,用此参数指定一个或多个包(Package,即App)。指定

包之后,Monkey将只允许系统启动指定的APP。如果不指定包,Monkey将允许系统启动设备中的所有APP。

* 指定一个包: adb shell monkey -p com.ting.Weather 100

说明:com.htc.Weather为包名,100是事件计数(即让Monkey程序模拟100次随机用户事件)。

* 指定多个包:adb shell monkey -p com.ting.Weather –p com.ting.pdfreader  -p com.ting.photo.widgets 100

* 不指定包:adb shell monkey 100

说明:Monkey随机启动APP并发送100个随机事件。

* 要查看设备中所有的包,在CMD窗口中执行以下命令:

>adb shell

#cddata/data

#ls或

>adb shell

#pm list packages

* --throttle <milliseconds> 在事件之间插入固定延迟。通过这个选项可以减缓Monkey 的执行速度。如果不指定该选项,Monkey将不会被延迟,事件将尽可能快地被产成。命令中的380就是延迟时间,单位为毫秒。

* -v  命令行的每一个-v 将增加反馈信息的级别。Level 0( 缺省值) 除启动提示、测试完成和最终结果之外,提供较少信息。Level 1 提供较为 详细的测试信息,如逐个发送到Activity 的事件。Level 2 提供更加详细的设置信息,如测试中被选中的或未被选中的 Activity 事 件。

* -s <seed>  伪随机数生成器的 seed 值。如果用相同的seed 值再次运行Monkey ,它将生成相同的事件序列。命令中的300000 代表monkey event 执行的次数,3500表示Seed值(影响随机事件的发生顺序)

* C:\monkey_log.txt 指将Monkey 的log存在PC端的C盘根目录下。

* 关于Monkey的其它命令,可以通过adb shell monkey来查看:

Monkey测试结果分析
一. 初步分析方法:
Monkey测试出现错误后,一般的差错步骤为以下几步:
1、 找到是monkey里面的哪个地方出错
2、 查看Monkey里面出错前的一些事件动作,并手动执行该动作
3、 若以上步骤还不能找出,可以使用之前执行的monkey命令再执行一遍,注意seed值要一样
一般的测试结果分析:
1、 ANR问题:在日志中搜索“ANR”
2、 崩溃问题:在日志中搜索“crash”

3、其他问题:在日志中搜索“Exception”
4、详细分析monkey日志:
将执行Monkey生成的log,从手机中导出并打开查看该log;在log的最开始都会显示Monkey执行的seed值、执行次数和测试的包名。

首先我们需要查看Monkey测试中是否出现了ANR或者异常,具体方法如上述。
然后我们要分析log中的具体信息,方法如下:
查看log中第一个Switch,主要是查看Monkey执行的是那一个Activity,譬如下面的log中,执行的是com.tencent.smtt.SplashActivity,在下一个swtich之间的,如果出现了崩溃或其他异常,可以在该Activity中查找问题的所在。
:Switch:#Intent;action=android.intent.action.MAIN;category=android.intent.category.LAUNCHER;launchFlags=0x10000000;component=com.tencent.smtt/.SplashActivity;end
  // Allowing start of Intent {act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER]cmp=com.tencent.smtt/.SplashActivity } in package com.tencent.smtt
在下面的log中,Sending Pointer ACTION_DOWN和Sending Pointer ACTION_UP代表当前执行了一个单击的操作;
Sleeping for 500 milliseconds这句log是执行Monkey测试时,throttle设定的间隔时间,每出现一次,就代表一个事件。
SendKey(ACTION_DOWN) //KEYCODE_DPAD_DOWN 代表当前执行了一个点击下导航键的操作;
Sending Pointer ACTION_MOVE 代表当前执行了一个滑动界面的操作。
:Sending Pointer ACTION_DOWN x=47.0 y=438.0
:Sending Pointer ACTION_UP x=47.0 y=438.0
Sleeping for 500 milliseconds
:SendKey (ACTION_DOWN): 20 //KEYCODE_DPAD_DOWN:SendKey (ACTION_UP): 20 //KEYCODE_DPAD_DOWN
Sleeping for 500 milliseconds
:Sending Pointer ACTION_MOVE x=-2.0 y=3.0
:Sending Pointer ACTION_MOVE x=4.0 y=-3.0
:Sending Pointer ACTION_MOVE x=-5.0 y=-3.0
:Sending Pointer ACTION_MOVE x=3.0 y=4.0
:Sending Pointer ACTION_MOVE x=-4.0 y=1.0
:Sending Pointer ACTION_MOVE x=-1.0 y=-1.0
:Sending Pointer ACTION_MOVE x=-2.0 y=-4.0
如果Monkey测试顺利执行完成,在log的最后,会打印出当前执行事件的次数和所花费的时间;// Monkey finished代表执行完成。Monkey执行中断,在log的最后也能查看到当前已执行的次数。Monkey执行完成的log具体如下:
Events injected: 6000
:Dropped: keys=0 pointers=9 trackballs=0 flips=0
## Network stats: elapsed time=808384ms (0ms mobile, 808384ms wifi, 0msnot connected)
// Monkey finished

补充:monkey的高级参数:(最好加上,因为不加的遇到崩溃问题monkey会停止运行)

--ignore-crashes    忽略崩溃和异常

--ignore-timeouts  忽略超时

--ignore-security-exception     忽略程序发生的许可错误

--monitor-native-crashes      监视崩溃时的本地代码

例如:

adb shell monkey -p com.example.ting_app --throttle 1000 --ignore-crashes --ignore-timeouts --ignore-security-exceptions --ignore-native-crashes --monitor-native-crashes -s 1000  -v -v -v 180000 1 > C:\Monkey_log1.txt  

注意事项:

1、手机屏幕设置一直亮着,不可关闭,防止手机进入锁屏状态

2、尽量不插卡

3、保证手机USB可以传输数据,而不是只充电状态

4、开发修复完问题后,需要重新回归测试,验证是否修改OK,此时,需要使用上一次跑的monkey测试中的seed值做回归测试。

原文地址:https://www.cnblogs.com/tingting1202/p/11684086.html

时间: 2024-10-04 04:34:52

APP压力测试Monkey工具--新手入门的相关文章

Android APP压力测试-Monkey

压力测试-Monkey学习 Monkey测试特点 什么是Monkey test? 如其名,像猴子一样,虽然什么都不懂,但是可以乱点一通,可以理解为压力测试.在规定的时间或次数范围内做任何随机的操作,随即操作包括点击.滑动...... Monkey测试目标:通过模拟用户随机操作时间,暴露应用内Crash,降低Crash率 Monkey Test范围预期:除了一些系统设置,我们希望范围维持在待测试应用内,另外可以补充一些中断测试 只能发现Crash,单复现和解决Crash还是需要靠开发人员 暴露所有

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

Android APP压力测试(一) 之Monkey工具介绍 前言 本文主要介绍Monkey工具.Monkey测试是Android平台自动化测试的一种手段,通过Monkey程序模拟用户触摸屏幕.滑动.按键等操作来对设备上的程序进行压力测试,检测程序多久的时间会发生异常.此文主要给自己查阅用. [目录] 1.Monkey简介 2.Monkey参数说明 3.Monkey实例 4.Monkey测试结果分析 1.Monkey简介 Monkey是Android中的一个命令行工具,可以运行在模拟器里或实际设

Android APP压力测试(三)之Monkey日志自动分析脚本

Android APP压力测试(三) 之Monkey日志自动分析脚本 前言 上次说要分享Monkey日志的分析脚本,这次贴出来分享一下,废话不多说,请看正文. [目录] 1.Monkey日志分析脚本 2.脚本原理 3.操作实例 1.Monkey日志分析脚本 1).脚本文件:Monkey_Log分析.bat @ECHO OFF ECHO.::::::::::::::::::::::::::::::::::::::::::::::::: ECHO.::             分析Monkey日志 

Android APP压力测试(二)之Monkey信息自动收集脚本

Android APP压力测试(二) 之Monkey信息自动收集脚本 前言: 上一篇Monkey介绍基本搬抄官方介绍,主要是为了自己查阅方便.本文重点介绍我在进行Monkey时如何自动收集相关信息,主要收集Monkey测试日志.手机日志.手机屏幕截图.测试手机信息,自动按次按时间点保存信息.只需轻轻一点,腾出手腾出脑想干吗干吗,执行结束应该有信息的都有收集,一定程序提升了效率,节约了时间.可以偷空看看美图.聊天扯淡...哦不,是学习提高审美观,沟通交流增进同事情感... 转载请注明出处:Find

Android App压力测试之Monkey

本文为慕课网<Android App压力测试>的学习笔记,视频地址 http://www.imooc.com/video/13007 Monkey是发送伪随机用户事件的工具. MonkeyScript实现自动测试的脚本,是一组可以被Monkey识别的命令集合,可以完成重复固定的操作.不支持截屏. MonkeyRunner提供一系列api操作. Monkey与MonkeyRunner的区别: Monkey:在adb shell中,生产用户或系统的伪随机事件 MonkeyRunner:通过API定

android 自动化压力测试-monkey 1

Monkey是Android中的一个命令行工具,可以运行在模拟器里或实际设备中.它向系统发送伪随机的用户事件流(如按键输入.触摸屏输入.手势输入等),实现对正在开发的应用程序进行压力测试.Monkey测试是一种为了测试软件的稳定性.健壮性的快速有效的方法. 最近在测试公司手机软件app,抽空研究了下手机自动压力测试-monkey,如下: 步骤1:电脑环境准备:搭建android 开发环境 步骤2:手机环境准备:安装待测试的apk 步骤3:打开cmd,进入adb shell,命令如下: C:\Us

Android App 压力测试 monkeyrunner

Android App 压力测试 第一部分 背景 1. 为什么要开展压力测试? 2. 什么时候开展压力测试?第二部分 理论 1. 手工测试场景 2. 自动测试创建 3. Monkey工具 4. ADB命令 5. Monkey Script 6. Monkey Runner 7. 压力测试结果分析 1.什么是CRASH? (crash 奔溃) 2. 什么是ANR? (无响应)第三部分 实践 1. 一个App的压力测试实践 2. Monkey高级参数的应用 3. CRASH结果析取 4. ANR结果

android app 压力测试工具-monkey tool

一.什么是Monkey? Monkey测试是Android自动化测试的一种手段,Monkey测试本身非常简单,就是模拟用户的按键输入,触摸屏输入,手势输入等,看设备多长时间会出异常. Monkey是Android中的一个命令行工具,可以运行在模拟器里或实际设备中.它向系统发送伪随机的用户事件流(如按键输入.触摸屏输入.手势输入等),实现对正在开发的应用程序进行压力测试.Monkey测试是一种为了测试软件的稳定性.健壮性的快速有效的方法. 二.Monkey的特征1.测试的对象仅为应用程序包,有一定

Android APP压力测试(二)之Monkey信息自动收集脚本【转】

前言: 上一篇Monkey介绍基本搬抄官方介绍,主要是为了自己查阅方便.本文重点介绍我在进行Monkey时如何自动收集相关信息,主要收集Monkey测试日志.手机日志.手机屏幕截图.测试手机信息,自动按次按时间点保存信息.只需轻轻一点,腾出手腾出脑想干吗干吗,执行结束应该有信息的都有收集,一定程序提升了效率,节约了时间.可以偷空看看美图.聊天扯淡...哦不,是学习提高审美观,沟通交流增进同事情感... 转载请注明出处:Findyou   http://www.cnblogs.com/findyo