Monkey测试log的保存与分析
v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
w\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
|
文档名称 |
Monkey测试执行与LOG分析 |
||
|
文档说明 |
|||
|
更改记录 |
|||
1、Monkey测试介绍
Monkey测试是Android平台自动化测试的一种手段,通过Monkey程序模拟用户触摸屏幕、滑动Trackball、按键等操作来对设备上的程序进行压力测试,检测程序多久的时间会发生异常。
传统意义上,Monkey测试主要针对的是应用的健壮性与稳定性,它通过大量的随机的用户事件来检测应用是否会异常。
主要使用Monkey测试来进行内存泄露检查。
2、Monkey测试执行
Monkey测试可分为环境配置、测试执行、结果分析3步骤。
2.1、环境配置
MONKEY测试使用的是ADB命令,因此只需要配置ADB环境即可。
2.2、测试准备与执行
在Monkey测试前,必须进行以下准备
Ø 手机屏幕超时设置为30分钟,防止手机进入锁屏状态。
Ø 插入SIM卡和存储卡后将手机开机,开启ADB模式,连接到PC(存储卡剩余空间尽量留大,建议1G以上)
Ø 开启系统log。(具体可依据每个机型平台决定)
Ø 在PC上执行 运行—>CMD,在弹出的命令窗口中,输入adb devices,检查设备是否连接
Ø 在弹出的命令窗口中,输入adb shell,进入Linux Shell
Ø 输入Ideafriend Monkey命令。如下:
|
monkey -p com.lenovo.ideafriend --ignore-crashes --ignore-timeouts --ignore-native-crashes --pct-touch 30 -s 1 -v -v --throttle 200 100000 2>/sdcard/error.txt 1>/sdcard/info.txt |
|||
|
参数 |
描述 |
||
|
-p com.lenovo.ideafriend |
只仅针对特定包名进行测试 |
||
|
--ignore-crashes |
忽略应用程序崩溃(Force & Close错误),继续发送执行事件,直到事件数执行完成 |
||
|
--ignore-timeouts |
忽略应用程序发生ANR(Application No Responding)错误时,直到事件数执行完成 |
||
|
--ignore-native-crashes |
忽略本地应用程序发生奔溃,直到事件数执行完成 |
||
|
--pct-touch 30 |
调整触摸事件为30%。即整个事件过程中触摸事件占30% |
||
|
-s 1 |
伪随机数生成器seed值。Seed值为1。相同的seed值再次执行monkey,将产生相同的事件序列。 |
||
|
-v -v |
日志级别为Leve1 1。将提供较为详细的日志,包括每个发送到Activity的事件信息 |
||
|
--throttle 200 |
事件之间延时200毫秒。可以控制monkey的执行速度,如果不指定该选项,monkey事件间将不会延时。 |
||
|
100000 |
执行事件数为10万次 |
||
|
2>/sdcard/error.txt |
Leve1 2日志保存到sdcard上的error.txt中 |
||
|
1>/sdcard/info.txt |
Leve1 1日志保存到sdcard上的info.txt中 |
||
2.3、结果检查与分析
测试结束后,需要将手机连接PC,拷贝以下文件:
Ø info.txt:此文件在手机上的SDCARD中,主要记录了MONKEY测试时发送的各种事件,如触摸事件的位置等等。
Ø error.txt:此文件在手机上的SDCARD中,主要记录了MONKEY测试时产生的一些ANR、强制关闭等异常。
Ø LOG文件:此文件在手机上的LOG文件夹中中,主要主要记录程序对MONKEY测试时的响应情况。
我们需要对这3个文件进行分析整理,以便提交开发人员处理。
2.3.1、检查测试是否完成
通过info.txt文件,可以查看Monkey是否执行成功。如下图

2.3.2、结果分析整理
前文有提及,我们目前执行Monkey测试的目的是为了检查是否有内存泄露,而这类问题主要是通过Log文件来体现的。
Error文件也记录了部分异常,考虑到这部分文件格式已经很规范,因此不需要再次整理。
Log文件记录了所有信息,因此我们需要进行初步分析整理后再提交研发,以减少研发工作量。
注意:内存泄露检查目前主要针对MTK平台,高通平台等其他平台目前的LOG还未将此部分信息体现。以下说明仅针对MTK平台的LOG。
通过mtklog文件中main_log文件,我们可以查看可能存在内存泄露代码所在具体位置。是否该行代码存在泄露需要开发人员进一步验证。我们只提供可能存在代码泄露的信息。
Main_log文件路径见相关LOG说明 。含有mian_log的文件都需要进行查看。搜索关键字“leak”,在搜索结果中,查看与Ideafreiend相关的代码。如下图:

注:com.lenovo.ideafriend:Ideafriend包名;CursorLeakDetecter: 游标泄露检查器
当发现相关LOG后,将可能存在内存泄露的代码所在区域(代码所在前后5行左右),拷贝到另外一个文档中(新建:mianlog.txt)。泄露的代码只需要拷贝一处即可。如下图:

注:红圈处在ideafriend代码中的677行可能存在泄露,此时只需拷贝一处即可
3、资料与扩展
3.1 Log信息查看工具可使用UltraEdit
3.2 Monkey扩展阅读
[1]Android压力测试工具Monkey介绍-V1.1-20110822.doc
[2]Monkey官网
http://developer.android.com/tools/help/monkey.html
[3]百度文库 Monkey测试介绍
http://wenku.baidu.com/view/476c79b8fd0a79563c1e72b6.html
4、Monkey log工具使用
Monkey测试后在Mobilelog文件中会产生多个main_log文件,里面含有详细的log执行记录,通过下面五步,挑选出我们所需要的信息。
1、 合并含有main_log文件,另存为main_log.txt。
将上述文件合并并重命名为main_log.txt
2、 查找标注可能泄露的log,使用工具Ideafriend_LogTool_1.jar

3、在生成的mian_log_search.txt中查找Ideafriend可能的泄露处。使用工具Ideafriend_logTool_2.jar

注:在文件夹MainLog中,查看文件名格式为:Ideafriend_xxx.txt的说明为Ideafriend可能泄露的代码。删除所有文件名含有dele_xxx.txt的文件。
4、 查找出重复的文件,使用工具NoClone.exe

在重复的列表中标记复制出,重复中一项(如图所示522个文件中有4个重复的,因此只要复制出4个就可以),在非重复中的所有文件(如图所示为3个)
5、 合并我们查找出来的文件,使用工具庖丁解牛.exe

如图所示,添加要合并的文件,保存文件为TXT。
S920_main_log.txt 就是我们需要的文件,log整理完成。
详情:http://wenku.baidu.com/browse/downloadrec?doc_id=18d475440066f5335a812172&
Normal
0
7.8 磅
0
2
false
false
false
EN-US
ZH-CN
X-NONE
st1\:*{behavior:url(#ieooui) }
/* Style Definitions */
table.MsoNormalTable
{mso-style-name:普通表格;
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-priority:99;
mso-style-parent:"";
mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
mso-para-margin:0cm;
mso-para-margin-bottom:.0001pt;
mso-pagination:widow-orphan;
font-size:10.0pt;
font-family:"Times New Roman",serif;}
Monkey测试log的保存与分析的更多相关文章
- 手机monkey测试BUG重现及解决方法
目录 1.1 Monkey测试简介...1 1.2 Monkey程序介绍...1 1.3 Monkey命令的简单帮助...2 1.4 Monkey命令参数介绍...2 1.5 Monkey测试步骤.. ...
- Monkey测试结果分析
Monkey测试结果分析 什么是monkey Monkey 测试是 Android 自动化测试的手段之一,它通过模拟用户的按键输入.触摸屏输入等,测试设备多长时间出现异常.Monkey 是一个命令行工 ...
- 【转】Monkey测试3——Monkey测试结果分析
Monkey测试结果分析 一. 初步分析方法: Monkey测试出现错误后,一般的差错步骤为以下几步: 1. 找到是monkey里面的哪个地方出错 2. 查看Monkey里面出错前的一些事件动作,并手 ...
- Monkey测试3——Monkey测试结果分析
Monkey测试结果分析 一. 初步分析方法: Monkey测试出现错误后,一般的差错步骤为以下几步: 1. 找到是monkey里面的哪个地方出错 2. 查看Monkey里面出错前的一些事件动作,并手 ...
- Monkey测试的策略和分析
Monkey测试针对不同的对象和不同的目的采用不同的测试方案,首先测试的对象.目的及类型如下: 测试的类型分为:应用程序的稳定性测试和压力测试 测试对象分为:单一apk和apk集合 测试的目的分为:解 ...
- Monkey测试结果分析【转】
转自[http://www.douban.com/note/257030241/] Monkey测试结果分析 一. 初步分析方法: Monkey测试出现错误后,一般的差错步骤为以下几步: 1. 找到是 ...
- monkey测试===Monkey测试结果分析(系列三)转
Monkey测试结果分析 一. 初步分析方法: Monkey测试出现错误后,一般的差错步骤为以下几步: 1. 找到是monkey里面的哪个地方出错 2. 查看Monkey里面出错前的一些事件动作,并手 ...
- 对当前目录下的所有APK包执行Monkey测试,并自动保存Crash日志
适用平台:Android,代码几个月前写的,有问题请及时回复.本代码会依次安装当前目录下的APK安装包,之后执行Monkey测试,然后卸载掉换下一个,继续重复执行,如出现Cransh,会自动保存在当前 ...
- monkey测试入门2--测试步骤、常用参数、常规monkey命令
<凤栖梧> 柳永 伫倚危楼风细细,望极春愁,黯然生天际.草色烟光残照里,无言谁会凭栏意? 拟把疏狂图一醉,对酒当歌,强乐还无味,衣带渐宽终不悔,为伊消得人憔悴. 简要步骤:adb devi ...
随机推荐
- git之commit
面解释的话, 1.git commit -m用于提交暂存区的文件: 2.git commit -am用于提交跟踪过的文件. 要理解它们的区别,首先要明白git的文件状态变化周期,如下图所示 工作目录下 ...
- PHP 程序员危机(转载)
感谢有这样的机会,能和大家一起来聊聊开发者的那些事儿. 其实程序员危机是一个真实存在的问题.也有人说是互联网行业的下滑或者互联网行业已过了风口等等.我在这儿主要谈的是 PHP 程序员的危机,而这种危机 ...
- Windows system 在python文件操作时的路径表示方法
file_path =(r'i:\vacpy\ch10\pi_digits.txt') #将文件路径存储在变量file_path中with open (file_path) as file_objec ...
- 22 pycharm如何将一段代码同时向左缩进一个tab键
在使用pycharm时,经常会需要多行代码同时缩进.左移,pycharm提供了快捷方式 1.pycharm使多行代码同时缩进 鼠标选中多行代码后,按下Tab键,一次缩进四个字符 2.pycharm使多 ...
- 淘宝客订单api处理优化
首选我们看看api定义: http://open.taobao.com/api.htm?docId=38078&docType=2&scopeId=14474 注意下span这个参数 ...
- Scala字节数组转换为数字
1. 2个字节数组转换为整数 def bytes2uint8(_bytes: Array[Byte], _offset: Int): Int = { val b0 = _bytes(_offset) ...
- java中的函数
1.函数:定义在类中的具有特定功能的一段独立小程序.函数也称之为方法. 为了提高代码的复用性,对代码进行抽取. 将这个部分定义成一个独立的功能.方便使用. java中对功能的定义通过函数来实现的.2函 ...
- ldap认证jupyter notebook
虽然jupyter hub是支持ldap的,见ldapauthenticator: 但是登录成功后似乎要以登录用户名启动notebook,而登录用户在服务器上不存在,于是500了: 在服务器上通过pa ...
- 在自定义目录下,按日期创建excel文件
在指定文件目录下,新建以当前日期命名的excel 文件,如果文件已经存在,在文件中新建一个sheet页来存放数据 import datetime import xlrd, xlwt import re ...
- ceph添加osd(ceph-deploy)
修改主机名和 /etc/hosts 关闭防火墙和 SELINUX 安装和配置 NTP ceph-deploy 节点安装 安装 ceph-deploy sudo yum install ceph-dep ...