zoukankan      html  css  js  c++  java
  • Monkey测试log的保存与分析

    文档名称

    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

    忽略应用程序发生ANRApplication 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&

       http://wenku.baidu.com/link?url=u7K2PlMUYvQ6twbOOFryDBq5gwWSm6iSHgq3NDfVIcboCJUiQpkK4TAA53glKnTEdr8x2XDf4C2OiMLGNn2NES3MXlhvXWQvOzrHWZlhwOy###

     

  • 相关阅读:
    机器学习笔记--KNN算法2-实战部分
    机器学习笔记--KNN算法1
    机器学习---python环境搭建
    机器学习简介
    用心去记录未来三年学习生活。
    jmeter5.1.1 生成html报告
    mysql字符串拼接
    linux 下mysql 慢查 my.ini/my.cnf 文件路径
    JMeter 分布式压测
    Jmeter压测报错 java.net.BindException: Address already in use: connect
  • 原文地址:https://www.cnblogs.com/zyanrong/p/5417535.html
Copyright © 2011-2022 走看看