文档章节

Monkey测试log的保存与分析

竹草席
 竹草席
发布于 2016/10/12 13:45
字数 1278
阅读 91
收藏 0


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

本文转载自:http://www.cnblogs.com/zyanrong/p/5417535.html

竹草席
粉丝 1
博文 44
码字总数 2945
作品 0
兰州
私信 提问
Monkey测试的策略和分析

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

fiawfo
2016/12/05
170
0
韦大仙--简单的monkey测试命令行操作及生成log日志保存

作中,在将apk交给软件测试人员去测试之前,不免要自己先自测,monkey自测是一个不错的选择! 步骤很简单: 1.测试用的手机与电脑连接好USB ,并且安装好驱动(我一般都是通过豌豆荚自动安装...

韦大仙
2018/07/31
0
0
【Android测试】【第二节】Monkey工具

最近开始研究Android测试的Monkey工具,因接触时间很短,还有很多不足之处,希望能和大家多多交流。 ● 什么是Monkey Monkey是Android中的一个命令行工具,可以运行在模拟器里或实际设备中。...

Sweettesting
2016/11/16
0
0
android测试之monkey

本文转载自http://www.testwo.com/blog/6188 感谢本文的作者; 一、Monkey test简介 Android的SDK 里面,Monkey的tools是一个命令行工具,当连接Android设备时,只要在命令行里输入相应命令就...

yangiris
2018/06/26
0
0
使用Monkey进行压力测试---初尝试

Appium不会用,在网上没找到相关的指引,于是退而求其次,利用搭好的环境,尝试下monkey。随手一记,以备记忆衰退..... 一、what is monkey monkey是向系统发送伪随机的用户事件流(如按键输...

静待时光
2016/12/13
42
0

没有更多内容

加载失败,请刷新页面

加载更多

PHP7安装开启mysqli扩展

先用phpinfo()看看有没有mysqli扩展,没有的话先安装, 1,进去PHP安装目录下的ext/mysqli文件夹  cd /usr/local/php/ext/mysqli 2, /usr/local/php/bin/phpize 3, ./configure --with-p...

菜鸟要飞啊
7分钟前
2
0
vue-cli3构建TS项目(基础篇)

https://blog.csdn.net/qq_30669833/article/details/90487700

小鱼蕾蕾
21分钟前
3
0
2019完结篇!一张图带你了解文档管理API套包Aspose.Total完整产品线!

时间一晃,2019年即将结束了,Aspose公司在这一年又不断更新和研发,发布了好几款全新的文件格式API以及适用于更多新的语言平台,满足了更多用户的需求。 Aspose是全球领先的图表控件开发商,...

mnrssj
27分钟前
4
0
vue中eventBus的使用

使用场景: 1、兄弟组件的通信,父子组件的通信 2、不同路由的通信 针对兄弟组件的通信,父子组件的通信 新建bus.js文件 import Vue from 'vue' var bus = new Vue() export default bus 在需...

tianyawhl
38分钟前
5
0
C# DBHelper

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Data;using System.Data.SqlClient;using System.Windows.Forms;namesp......

vga
40分钟前
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部