• android自动化测试之Monkey--从参数讲解、脚本制作到实战技巧


    视频:

    http://v.youku.com/v_show/id_XODcyMjM1MDA4.html?from=y1.2-1-87.4.4-1.1-1-2-3

    PPT:

    http://www.docin.com/p-1023809505.html

    1.安装jdk,sdk,TT

    2.对app进行压力测试(性能测试),模拟器和真机都可以,发送伪随机事件流(一段时间内不重复)(随机事件流:抛硬币)

    3.monkey是android系统自带的,位置/system/bin/monkey/monkey.jar

    4.adb shell monkey +选项

      adb shell进入shell端, 然后monkey+选项

      在android真机安装android终端模拟器terminal

    5.monkey架构:

    不支持条件判断,不支持验证

    6.基本参数:

      -v: 日志详细程度

        adb shell -p xxx -v(启动,完成,结果信息)

        adb shell -p xxx -v -v(待测活动事件)

        adb shell -p xxx -v -v -v

      -s:随机数种子size

        -s一样的话,两次monkey测试产生的序列是一样的

        adb shell -p xxx -s 10

      --throttle:两次事件的时间间隔,单位是毫秒

        adb shell -p xxx --throttle 3000 100(随机事件的个数)

    7.发送事件的类型

      --pct-touch <percent>: 指定触摸事件百分比,一个点上先后有按下和抬起的操作。

      --pct-motion <percent>: 指定滑动事件百分比,先按下,滑动一段距离,然后抬起。

      --pct-trackball <percent>: 轨迹球事件百分比,一系列的随机移动和单击操作。

      --pct-nav <percent>: 基本导航事件百分比(硬件),设置基本的导航事件(上/下/左/右导航键)的生成比例。

      --pct-majornav <percent>:主要导航事件百分比,会导致UI产生回馈的事件,如单击5个方向键中的中间按钮,单击后退键或者菜单键。

      --pct-syskeys <percent>: 系统按键事件百分比(Home 、Back 、startCall 、 endCall 、 volumeControl)。

      --pct-anyevent <percent>: 任意事件百分比,普通的按键消息,设备上一些不常用的按钮事件。

    8.约束条件

      -p: 包名列表

        adb shell -p xxx -p xxx

      -c: 意图的种类:Monkey只会启动可以处理这些种类的意图的活动,如果没有此选项,monkey只会启动Intent.CATEGORY_LAUNCHER和Intent.CATEGORY_MONKEY的活动。

    9.调试选项

      --dbg-no-events: 指定了此选项,monkey会启动待测应用,但不发送任何消息,建议与-v,-p,-throttle一起使用。

      --hprof: 指定此选项,monkey会在发送事件前后生成性能报告(即内存的快照文件),一般在设备的/data/misc目录下生成一个5M左右的文件。

      --ignore-crashes: 指定了此选项,待测应用崩溃或发生异常时,继续发送系统消息,直到指定个数的消息全部发送完毕,否则停止运行。

      --ignore-timeouts:  指定了此选项,待测应用停止响应(如弹出“应用无响应”对话框)时,继续发送系统消息,直到指定个数的消息全部发送完毕,否则停止运行。

      --ignore-security-exceptions:指定了此选项,待测应用碰到权限方面的错误时,继续发送系统消息,直到指定个数的消息全部发送完毕,否则停止运行。

      --kill-process-after-error: 一般情况下,当monkey因为某个错误指定运行时,出问题的应用会留在系统上继续执行,这个选项通知系统当错误发生时杀掉进程。

        注意:当monkey正常执行完毕后,它不会关闭所启动的应用,设备依然停留在最后接受到消息的状态。

      -monitor-native-crashes: 监视由Android C/C++代码部分(cpu计算部分)引起的崩溃,此时如果设置了“--kill-process-after-error”,整个系统会关机。

      --wait-dbg: 启动monkey后,先中断其运行,等待调试器附加上来。

    10.

      adb shell -p xxx --throttle 100 --pct-touch 50 --pct-motion 50 -v -v -v 1000 >c:monkey.txt

    11:运行

      结合TT,释放端口,检查手机连接,端口映射,

      启动monkeyrunner的脚本录制功能,可以查看手机屏幕。如果对monkeyrunner不熟悉,请参考:http://www.cnblogs.com/zh-ya-jing/p/4385418.html

      启动monkey命令

    12:检测-s一致时,monkey产生的序列也是一样的

    13.分析log一般有以下几个步骤

      看日志(注意第一个switch以及异常信息等)

        程序无响应:ANR

        C崩溃:Exception

      查看monkey里出错前的几个动作,并手动执行,结合TT示波器,找到崩溃点

      日志+TT,找到崩溃时的执行函数

      顺利执行完毕,会有monkey finished字样;如果中间崩溃,会有执行次数说明

    第一个switch主要是monkey执行的是哪一个activity,在两个active之间划分即可。

    14.monkey内存问题分析

    如何确定内存泄露?

      弹出out of memory对话框

      logcat文件GC(java的垃圾回收机制)信息

      --hprof参数与报告

        adb shell -p xxx --hrof -v -v -v 100

      monkey会在发送事件的前后生成内存快照,并保存在/data/misc/下的hprof文件中(需要root权限才可以)也可以收集安装能进入系统文件夹的app去查看文件

      hprof文件跟平时的jvm文件是不一样的,需要用android自带的hprof-conv(在android-sdk/tools/)命令去转化

      成对出现的,事件前后两个成对

      hprof-conv *.hrof *.conv
     转化成的conv文件,用eclipse中的MAT打开

    shadle heap小

    retail size: 如果释放相应参数,GC就可回收这部分内存  

    15.monkey脚本的编写

    编写好后放在SD卡

    adb shell monkey -f/sdcard/*.txt 运行次数

    adb shell monkey --hprof -f/sdcard/*.txt -v -v -v 3 >c:monkey

    16.具体的monkey脚本命令

    start data >>

    控制monkey的一些参数设置和具体的monkey命令分隔开

      count=10

      speed=10

      start data>>

      #monkey 命令

      LaunchActivity(pkg_name, cls_name)app的包名,要打开的类名

      DispatchPointer(downTime,eventTime,active,x,y,0,0,0,0,0,0,0)

      #downTime:发送消息的时间

      #eventTime:用于指定发送两个事件之间的停顿

      #active:动作是按下还是太起,0表示按下,1表示抬起

     

  • 相关阅读:
    NPOI单元格公式不刷新
    DIV+CSS HACK
    简答好用的邮件服务器hMailServer(转)
    C# 后台POST和GET 获取数据
    Quartz.Net1.0.2.3 配置记录
    ASP.NET自定义控件VS2012中添加失败(下列控件已成功添加到工具箱中,但未在活动设计器中启用)
    NPOI 1.2.5复制行(包括格式)
    Javascript中Null和Undefined的区别[转]
    测试流程(立项会)
    测试计划
  • 原文地址:https://www.cnblogs.com/yajing-zh/p/4340795.html
Copyright © 2020-2023  润新知