monkey及其的日志管理和分析

1.   monkey

1.1.  介绍

  • 通过monkey程序模拟用户触摸屏幕,滑动Trackball、按键等操作来对设备上的程序进行压力测试,检测程序多久的时间会发生异常,检查和评估被测程序的稳定性
  • 官方:Monkey是一个程序,运行在您的模拟器或设备上,并生成伪随机的用户事件流,如点击,触摸或手势,以及一些系统级事件。 您可以使用Monkey以随机但可重复的方式对您正在开发的应用程序进行压力测试。
  • 主要用于Android的压力测试,自动的一个压力测试小工具。目的是为了测试APP是否会crash
  • 用户主要是通过adb命令来启动Monkey的,Monkey在运行时,会根据命令行参数的配置,生成伪随机的事件流,并在Android设备上执行对应的测试事件。同时,Monkey还会对测试系统进行监测,当出现以下几种情况时会进行特殊处理:

  1、如限定了Monkey运行在特定包上,当监测到试图转到其他包的操作,将对其进行阻止。

  2、如应用程序崩溃或接收到任何失控异常,Monkey将记录对应的错误日志,并根据命令行参数判断是停止运行还是继续运行。

  3、如果应用程序发生了程序无响应(application not responding)的错误,Monkey将记录对应的错误日志,并根据命令行参数判断是停止运行还是继续运行。

  4、按照选定的不同级别的反馈信息,在Monkey中还可以看到其执行过程报告和生成的事件。

1.2.  流程

1、通过名为“monkey”的Shell脚本去启动Monkey.jar程序。

  启动脚本是一个shell脚本,在Android文件系统的存放路径是:/system/bin/monkey。

2、在指定的APP上模拟用户点击,滑动,输入等操作以极快的速度来对设备程序进行压力测试。

3、检测程序是否会发生异常如:crash,然后通过日志进行排错。

1.3.  启动及关闭

  • monkey启动方式:

    1、通过pc cmd命令:adb shell monkey {+命令参数}进行monkey测试。(连接上移动设备)

2、在pc上’adb shell’进入Android系统,’cd /system/bin’进入指定目录,输入’monkey’有usage说明启动成功,再执行monkey {+命令参数}。(连接上移动设备)

3、Android机或模拟器上直接执行monkey命令,在真机上安装Android终端模拟器

  • 强制关闭monkey

  1、adb shell ps 查看全部在运行的进程

  2、查找出com.android.commands.monkey 进程PID

  3、adb shell kill pid:杀掉monkey进程

  • monkey测试中,如何终止运行

方法一:

新建一个窗口

执行: adb shell

再执行ps | grep monkey,返回来的第一个数字,即是monkey的进程号

然后kill pid 进程号

方法二:

对手机进行重启??

新建一个窗口

执行adb reboot

1.4.  命令

  • monkey程序由Android系统自带,使用java语言写成,在Android文件系统中的存放路径是:/system/framework/monkey.jar
  • monkey命令格式:adb shell monkey [options] <event-count>

  [options] 是指monkey可传入的参数,是可选项(如果不指定options,Monkey将以无反馈模式启动,并把事件任意发送到安装在目标环境中的全部包)

  <event-count> 是指随机发送事件数。如:输入100就是执行100个伪随机事件,为必选项。

1.5. 日志管理作用及日志分析

  • Monkey日志管理是Monkey测试中非常重要的一个环节,通过日志管理分析,可以获取当前测试对象在测试过程中是否会发生异常,以及发生的概率,同时还可以获取对应的错误信息,帮助开发定位和解决问题。
  • monkey日志保存方法:

  1.保存在PC中:>adb shell monkey [option] <count> >d:\monkey.txt

  eg:C:\Users\Shuqing>adb shell monkey -v -v 100 >d:\monkeylog.txt

  2.保存在手机上:C:\Users\Shuqing>adb shell回车;monkey -v 100 >/sdcard/monkeylog.log

  注意:不能写成C:\Users\Shuqing>adb shell monkey -f /sdcard/kyb.txt -v 1 > /mnt/sdcard/monkey.log 否则会报错“系统找不到指定的路径”。

  3.标准流和错误流分开保存:Monkey [option] <count> 1>/sdcard/monkey.txt 2>/sdcard/error.txt

  C:\Users\Shuqing>adb shell monkey -v 100 1>d:\monkey.log  2>d:\error.log

  执行以上命令,Monkey的运行日志和异常日志将被分开保存。此时Monkey的运行日志将被保存在monkey.txt文件中,而异常日志将被保存在D盘下的error.txt中。

  • 日志分析:

  1.正常:monkey测试顺利执行完成,在log的最后,会打印当前执行时间的次数和所花费的时间。Monkey finished代表执行完成

  2.异常:出现错误后的分析步骤----看monkey的日志(注意第一个switch及异常信息等)

    a程序无响应的问题:在日志中搜索‘ANR’

b奔溃问题:在日志中搜索‘exception’----出现空指针,NullPointerException,是bug。

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

3.看问题:

A monkey执行时未加--ignore-crashes --ignore-crashes参数,就先浏览日志中Events injected: 值,查看当前已执行的次数,就知道有无bug

    B 程序无响应的问题:在日志中搜索 “ANR”

C 崩溃问题:在日志中搜索“Exception”,常见的Java异常:

算术异常类:ArithmeticExecption;空指针异常类:NullPointerException

  类型强制转换异常:ClassCastException;数组负下标异常:NegativeArrayException

数组下标越界异常:ArrayIndexOutOfBoundsException

违背安全原则异常:SecturityException;文件已结束异常:EOFException

文件未找到异常:FileNotFoundException;

  字符串转换为数字异常:NumberFormatException

操作数据库异常:SQLException;输入输出异常:IOException

 违法访问错误:IllegalAccessError;内存不足错误:OutOfMemoryError

堆栈溢出错误:StackOverflowError

    其他,请参考:https://www.cnblogs.com/cvst/p/5822373.html

  D 找出问题后的操作步骤:

找到是monkey里面的哪个地方出错

查看Monkey里面出错前的一些事件动作,并手动执行该动作

若以上步骤还不能找出,可以再执行一遍monkey命令,注意seed值要一样

原文地址:https://www.cnblogs.com/mind18/p/12663814.html

时间: 2024-08-04 01:30:53

monkey及其的日志管理和分析的相关文章

web站点服务器日志管理及分析

管理Web网站不只是监视Web的速度和Web的内容传送.它不仅要关注服务器每天的吞吐量,还要了解这些Web网站的外来访问,了解网站各页面的访问情况.根据各页面的点击频率来改善网页的内容和质量,提高内容的可读性,以及跟踪包含有商业交易的步骤及管理Web网站"幕后"的数据等. 为了更好地提供WWW服务,监控Web服务器的运行情况.了解网站内容的详细访问状况就显得越来越重要和迫切了.而这些要求都可以通过对Web服务器日志文件的统计和分析来实现.本文将对Web服务器日志分析的原理和技术进行讨论

大型网站的日志管理与分析

先上链接,http://loganalyzer.adiscon.com/articles/using-mongodb-with-rsyslog-and-loganalyzer/ 思路很简单,服务器集群中的各个服务器将日志发给本机的rsyslog,本机的rsyslog再传输到中央rsyslog,rsyslog再将日志保存到mongodb. loganalyzer负责查询日志及权限管理.

防火墙(ASA)高级配置之URL过滤、日志管理、透明模式

对于防火墙产品来说,最重要的一个功能就是对事件进行日志记录.本篇博客将介绍如何对ASA进行日志管理与分析.ASA透明模式的原理与配置.利用ASA防火墙的IOS特性实施URL过滤. 一.URL过滤 利用ASA防火墙IOS的特性URL过滤可以对访问的网站域名进行控制,从而达到某种管理目的. 实施URL过滤一般分为以下三个步骤: (1)创建class-map(类映射),识别传输流量. (2)创建policy-map(策略映射),关联class-map. (3)应用policy-map到接口上. 案例:

Monkey简单操作(三,日志管理)

. monkey日志管理 adb shell monkey –v –v 100 >d:\monkeylog.log保存到本地要保存在手机的话,首先需要进入adb shell然后在运行monkey +目标路径(通常在sdcard下保存)错误流和标准流日志文件分开保存:adb shell monkey –v 100 1>d:\monkey.log 2>d:\error.log1表示标准流,2表示错误流(错误信息) 不管是在项目开发还是测试过程中,项目运行一旦出现问题日志信息就非常重要了.日志

企业日志分析之日志管理

感谢dl528888(吟)帮忙和相关的技术. 自己刚刚弄会了日志管理. 图:

slf4j+logback搭建超实用的日志管理模块

文章转自http://www.2cto.com/kf/201702/536097.html slf4j+logback搭建超实用的日志管理模块(对日志有编号管理):日志功能在服务器端再常见不过了,我们非常有必要记录下发生在服务器上的活动,这些日志将用于debug.统计等各种用途. slf4j+logback这种实现方式是很常见的,好处自然是方便!.在这篇文章中,你将看到如何使用logback搭建你自己的日志组件并将日志输出到文件.如何查看这些文件.如何为每个线程上的访问分配独有的一个日志id.

linux 学习 14 日志管理

第十四讲 日志管理 14.1 日志管理-简介 1.日志服务 ?在CentOS 6.x中日志服务已经由rsyslogd取代了原先的syslogd服务.rsyslogd日志服务更加先进,功能更多.但是不论该服务的使用,还是日志文件的格式其实都是和syslogd服务相兼容的,所以学习起来基本和syslogd服务一致. ?rsyslogd的新特点: ?基于TCP网络协议传输日志信息; ?更安全的网络传输方式: ?有日志消息的及时分析框架: ?后台数据库: ?配置文件中可以写简单的逻辑判断: ?与sysl

MySQl Study学习之--MySQl二进制日志管理

MySQl Study学习之--MySQl二进制日志管理 MySQL二进制日志(Binary Log):   a.它包含的内容及作用如下:    包含了所有更新了数据或者已经潜在更新了数据(比如没有匹配任何行的一个DELETE)    包含关于每个更新数据库(DML)的语句的执行时间信息    不包含没有修改任何数据的语句,如果需要启用该选项,需要开启通用日志功能    主要目的是尽可能的将数据库恢复到数据库故障点,因为二进制日志包含备份后进行的所有更新    用于在主复制服务器上记录所有将发送

ABP日志管理

ABP日志管理 基于DDD的现代ASP.NET开发框架--ABP系列之8.ABP日志管理 ABP是“ASP.NET Boilerplate Project (ASP.NET样板项目)”的简称. ABP的官方网站:http://www.aspnetboilerplate.com ABP在Github上的开源项目:https://github.com/aspnetboilerplate 本文由东莞-天道提供翻译 Server side(服务器端) ASP.NET Boilerplate使用Castl