一、理解monkey测试

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

2、当Monkey程序在模拟器或真实设备运行的时候,程序会产生一定数量或一定时间内的随机模拟用户操作的事件, 如点击,按键,手势等, 以及一些系统级别的事件。通常也称随机测试或者稳定性测试。

二、查看设备连接、包名、和入口Activity

1、进入cmd查看设备连接状态:

adb devices

2、查看包名、和入口Activity

进入cd D:\Program Files\adt-bundle-windows-x86_64-20130917\sdk\build-tools\android-4.3

目录下执行下条命令
aapt  dump badging  apk安装包绝对路径
 
三、运行monkey测试

 //不间断操作500次
adb shell monkey -p 包名 -v 500  
 
//每个操作间隔500ms,共执行100次
adb shell  monkey -p 包名  -v-v --throttle  500 100
 
//每个操作间隔100ms,共执行1000次 ,其中点击事件占比50%,轨迹50%                                                                            
adb shell monkey  -p  包名  -v-v --pct-touch  50  --pct-trackball 50 --throttle 100 1000
 
//日志重定向到桌面文件夹
adb shell monkey  -p  包名  -v-v --pct-touch  50  --pct-trackball 50 --throttle 100 1000   >C:\Users\xyp\Desktop\Android脚本\1.log
 
//每个操作间隔500ms、崩溃、超时、许可错误继续执行
adb shell  monkey -p  包名   --throttle  500 --ignore-crashes --ignore-timeouts --ignore-security-exceptions --ignore-native-crashes --monitor-native-crashes -v-v-v  1000000>C:\Users\xyp\Desktop\Android脚本\1.log
 
四、停止monkey测试
重新打开一个cmd窗口
进入adb shell
ps | grep monkey      //查找monkey进程
kill  进程号   //结束monkey
 
五、结果分析
得到Monkey测试的log之后,我们可以通过几个关键词来判断测试是否通过。
1、Monkey finished
用记事本打开LOG,查看log的最下端,是否有类似以下字段:
## Network stats: elapsed time=3799ms (3799ms mobile, 0ms wifi, 0ms not connected)
// Monkey finished
这个字段表明本次的Monkey测试通过,没有异常
2、CRASH
同样,在得到LOG后,搜索”CRASH”字段,如果搜索到有结果,则表明,在测试过程中,测试对象出现了报错现象,因此测试失败。
// CRASH: com.onekchi.downloadmanager (pid 12919)
3、NOT RESPONDING
在log中搜素该字段,如果有搜索有结果,则表示测试过程中,测试对象出现了进程无响应的现象,因此测试失败。
4、无法搜索到上述信息
出现这种情况,一般都是外界原因而非程序本身原因。比如测试过程中,电脑断电关机。或者测试过程中内存不足等等,结果作废,需要重新测试。
 
六、monkey说明
--throttle   时间间隔
--ignore-crashes    忽略崩溃
--ignore-timeouts  忽略超时
--ignore-security-exceptions   忽略许可错误
--ignore-native-crashes  忽略本地崩溃
--monitor-native-crashes   监控本地崩溃
 
--pct-touch  触摸、点击
--pct-motion 调整动作事件的百分比(动作事件由屏幕上某处的一个down事件、一系列的伪随机事件和一个up事件组成)
--pct-trackball  调整轨迹事件的百分比(轨迹事件由一个或几个随机的移动组成,有时还伴随有点击)

--pct-nav 调整“基本”导航事件的百分比(导航事件由来自方向输入设备的up/down/left/right组成)

--pct-majornav 调整“主要”导航事件的百分比(这些导航事件通常引发图形界面中的动作,如:5-way键盘的中间按键、回退按键、菜单按键)

--pct-syskeys 调整“系统”按键事件的百分比(这些按键通常被保留,由系统使用,如Home、Back、Start Call、End Call及音量控制键)

--pct-appswitch 调整启动Activity的百分比。在随机间隔里,Monkey将执行一个startActivity()调用,作为最大程度覆盖包中全部Activity的一种方法

--pct-flip 调整“键盘翻转”事件的百分比。

--pct-anyevent 调整其它类型事件的百分比。它包罗了所有其它类型的事件,如:按键、其它不常用的设备按钮、等等

注意:各事件类型的百分比总数不能超过100%。

monkey测试的更多相关文章

  1. 【初学python】使用python调用monkey测试

    目前公司主要开发安卓平台的APP,平时测试经常需要使用monkey测试,所以尝试了下用python调用monkey,代码如下: import os apk = {'j': 'com.***.test1 ...

  2. monkey之三:monkey测试测略(摘抄)

    一.分类 Monkey测试针对不同的对象,不同的目的,采用不同的测略方案. 测试类型分为: 应用程序的稳定性测试和压力测试 测试对象分为: 单个APK和多个APK集合 测试目的分为: 解决问题的测试( ...

  3. Android Monkey测试(转载)

    Monkey是一款通过命令行来对我们APP进行测试的工具,可以运行在模拟器里或真机上.它向系统发送伪随机的用户事件流,实现对正应用程序进行压力测试. 官方介绍 :https://developer.a ...

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

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

  5. Android应用程序Monkey测试

    Monkey是Android SDK中附带的一个测试工具:Monkey用于进行压力测试,软件开发人员结合monkey打印日志和系统日志,解决测试中出现的问题. Monkey测试的特点:所有事件都是随机 ...

  6. Monkey测试4——Monkey命令行可用的全部选项

    Monkey命令行可用的全部选项 常规 --help 列出简单的用法. -v 命令行的每一个-v将增加反馈信息的级别. Level 0(缺省值)除启动提示.测试完成和最终结果之外,提供较少信息. Le ...

  7. Monkey测试3——Monkey测试结果分析

    Monkey测试结果分析 一. 初步分析方法: Monkey测试出现错误后,一般的差错步骤为以下几步: 1. 找到是monkey里面的哪个地方出错 2. 查看Monkey里面出错前的一些事件动作,并手 ...

  8. Monkey测试2——Monkey测试策略

    Monkey的测试策略 一. 分类 Monkey测试针对不同的对象和不同的目的采用不同的测试方案,首先测试的对象.目的及类型如下: 测试的类型分为:应用程序的稳定性测试和压力测试 测试对象分为:单一a ...

  9. Monkey测试1——Monkey的使用

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

随机推荐

  1. fontconfig编译出错

    编译fontconfig编译时出错: 出错configure: error: You must have freetype installed; see http://www.freetype.org ...

  2. Eclipse的link方式安装JBPM6插件(JBPM学习之一)

    1. 首先下载最新的JAVA开发最受欢迎的Eclipse IDE工具,下载地址:http://www.eclipse.org/downloads/ 2. 然后去JBPM社区去下载最新的JBPM6,下载 ...

  3. Android学习笔记(十八)——再谈升级数据库

    //此系列博文是<第一行Android代码>的学习笔记,如有错漏,欢迎指正! 之前我们为了保证数据库中的表是最新的,只是简单地在 onUpgrade()方法中删除掉了当前所有的表,然后强制 ...

  4. ClearCanvas DICOM 开发系列 一

    概述 C#开源的DICOM server.支持影像处理.影像归档.影像管理.影像传输和影像浏览功能.开源代码可学习地方很多. 官方网站:http://www.clearcanvas.ca buildi ...

  5. 8 延时队列相关类——Live555源码阅读(一)基本组件类

    这是Live555源码阅读的第一部分,包括了时间类,延时队列类,处理程序描述类,哈希表类这四个大类. 本文由乌合之众 lym瞎编,欢迎转载 http://www.cnblogs.com/oloroso ...

  6. PHP网页缓存技术

    http://blog.sina.com.cn/s/blog_646e51c40100weu9.html 前台静态化:把动态页面解析后保存为静态页面 文件缓存:把查询结果保存为文件,XML 内存缓存: ...

  7. 用C语言把双向链表中的两个结点交换位置,考虑各种边界问题。

    用C语言把双向链表中的两个结点交换位置,考虑各种边界问题. [参考] http://blog.csdn.net/silangquan/article/details/18051675

  8. 使用swift 中的注意,不断完善中

    1. 应该充分利用swfit的新特性 比如如果按照oc里的习惯,调用一个delegate中都optional函数应该这样写 if delegate != nil && delegate ...

  9. javascript 事件委托,jq,js模拟事件

    <!DOCTYPE> <html> <head> <title></title> <script src="Scripts/ ...

  10. Delphi中限制文本框(TEdit)只能输入数字

    procedure Tform1.Edit1KeyPress(Sender: TObject; var Key: Char);var edt: TEdit; str, strL, strR: stri ...