zoukankan      html  css  js  c++  java
  • Android自动化测试之Monkey

    https://blog.csdn.net/u011436666/article/details/53265372

    1、Monkey简介
    Monkey是Android中的一个命令行工具,可以运行在模拟器里或实际设备中。它向系统发送伪随机的用户事件流(如按键输入、触摸屏输入、手势输入等),实现对应用程序的稳定性测试。Monkey测试是一种为了测试软件的稳定性、健壮性的快速有效的方法。

    Monkey帮助文档:
    monkey文档地址为:< sdk >/docs/tools/help/monkey.html
    在目录/docs/tools/help/下有非常多常用工具的帮助文档,如果访问Google网站不方便的话,我们就可以使用这个来查询。

    sdk目录下帮助文档:


    2、Monkey命令
    我们可以简单的用:

    adb shell monkey
    1
    来使用monkey,monkey脚本是放在/system/bin/目录下的。

    运行之后出现如下界面:

    此时由于我们没有设置参数,monkey将会显示usage信息界面,从里面我们可以看到基本的参数。原来我们少了一个必须的参数COUNT。
    最简单的monkey命令就如下:

    adb shell monkey 100
    1
    这样我们就指定了发送100个事件,并把事件任意发送到安装在目标环境中的全部包。如果要制定选项呢?

    通常我们有两种方式启动Monkey:

    直接PC启动

    adb shell monkey [options] < COUNT>

    Shell端启动

    adb shell
    monkey [options] < COUNT>

    这两种方式的区别就是,PC启动可以将日志保存在PC上,Shell端启动Monkey日志可以保存在手机里。

    那么我们会用到哪些命令呢?这个就很多了,主要分为以下4种:
    (这里笔者以Xmind软件来制作思维导图的形式分析常用命令)

    2.1 常规类
    主要有帮助信息和日志打印等级两个命令:

    2.2 事件类
    对随机事件进行调控,使其按照设定运行:

    2.3 约束类
    让你的随机事件范围控制在某几个包或者类中:


    2.4 调试类
    对monkey进行一些简单的调试,以便于快速的定位问题:

    3、Monkey使用
    monkey的使用我们可以按照上面讲过的命令选择需要的,进行组合即可,下面简单的说明一下其他要点。(本文仅讲述了在Windows环境下,Mac和Linux类似)

    3.1 获取包名
    如果我们要对某一个或多个包进行monkey测试,我们可以指定包名,但是当我们不清楚完整的包名时应该怎么办呢?

    我们可以在CMD命令行中来查看本机装的所有apk的包名。执行如图所示命令即可:

    注意:执行su命令一定要保证设备已经获取了root权限,否则会执行失败。

    然后再执行:

    ls data/data
    1
    即可以显示出所有package name,我们查找需要的即可。

    当然如果我们设备中安装的App很多的话,如果在CMD 窗口中看package name,显然不是一种明智的办法,那么我们可以将其导入到SD卡中,再pull到电脑,以方便我们以后使用。

    3.2 运行&停止monkey
    我们做一个简单的示例,主要说明怎么停止运行中的monkey。
    首先在CMD中运行如下monkey命令:

    adb shell monkey -p me.ele -p com.youdao.dict --throttle 1000 --wait-dbg 10000
    1
    在执行的过程中如果我们想停止执行怎么办呢?这是我们可以点击Ctrl+C来停止CMD运行,但是我们可以发现设备仍然在疯狂运行,并未停止下来。难道我们只有重启这个“万能”的方法吗?这时候我们可以用

    ps | grep monkey
    1
    命令来找出monkey所在的进程id,再kill掉此进程即可。如下图所示:

    这种方法同样适用于清除其他后台程序。
    ---------------------
    作者:LupuX
    来源:CSDN
    原文:https://blog.csdn.net/u011436666/article/details/53265372
    版权声明:本文为博主原创文章,转载请附上博文链接!

  • 相关阅读:
    iOS越狱系列(一):使用Reveal分析APP
    ios-异步消息同步问题-典型使用场景: 微信私信界面
    ios 消息跳转处理
    iOS开发UI篇—IOS CoreText.framework --- 基本用法
    IOS开发之实现App消息推送(最新)
    Thread 1: signal SIGABRT-内存管理的陋习
    别用symbolicatecrash来解析crash Log了by 风之枫
    通过崩溃trace来查找问题原因 .
    Xcode 6视图调试小贴士
    调试message send to deallocated instance问题
  • 原文地址:https://www.cnblogs.com/bell1991/p/10209538.html
Copyright © 2011-2022 走看看