• Robotium 系列(2)


    除了Robotium,Android还有其他的自动化测试方法,比如Monkey和MonkeyRunner. 这里就做一个简单的介绍和使用方法。

    本文提纲:

    1. Android SDK以及SDK中的工具

        - SDK Manager

        - AVD

        - ADB

        - monitor

    2. MonkeyRunner

    3. Monkey

    Android SDK

        其实就是Android专属的软件开发工具包。

        在这里可以下载到,http://developer.android.com/sdk/index.html

        下载完SDK之后,需要将 SDK/tools和SDK/platform-tools加到环境变量里,以方便调用。当然这些工具需要java的支持, 这是java的下载地址http://www.oracle.com/technetwork/java/javase/downloads/index.html

        SDK目录的主要文件夹,

        - tools, 提供了一系列测试、调试和开发用的工具

        - platform-tools, 提供了平台相关的开发、调试的工具

        - platform, 里面的每一个文件夹对应每一个android版本的api,他包含一个android.jar文件为开发的应用提供支持

        SDK Manager是SDK包的管理工具,我们可以通过他来下载所需要的工具和Android api版本。调用命令 android

        在这提一下android平台版本和SDK api的对应关系,打开sdk manager后在列表里可以看到。

        AVD    (Android Virtual Device)即Android模拟器, 它是一个可以运行在你电脑上的虚拟设备。 Android模拟器可以让你不需使用物理设备即可预览、开发和测试Android应用程序。简单的说就把AVD看做一个手机模拟器。

        avd manager就是avd 的管理器,命令调用android avd

        ADB, Android Debug Bridge. 它是一个 客户端-服务器端 程序,其中客户端是你用来操作的电脑, 服务器端是android设备。包括三个组成部分:

        一个在你用于开发程序的电脑上运行的客户端。你可以在CMD中使用adb命令启动客户端。 其他Android工具比如说ADT插件和DDMS同样可以产生adb客户端.
        在你用于开发的机器上作为后台进程运行的服务器。该服务器负责管理客户端与运行于模拟器或设备上的adb守护程序(daemon)之间的通信。
        一个以后台进程的形式运行于模拟器或设备上的守护程序(daemon)。

        这个是使用频率最高的工具了,下面是我们经常用到的:

        - adb devices

        - adb shell

        - adb install/uninstall apkfile

        - adb push/pull

        - adb logcat 将日志数据输出到屏幕上.

        - adb shell dumpsys [options]

                   meminfo 显示内存信息

                   cpuinfo 显示CPU信息

                   account 显示accounts信息

                   activity 显示所有的activities的信息

                   window 显示键盘,窗口和它们的关系

                   wifi 显示wifi信息

    实际上adb shell就是一个类linux命令shell,有许多linux命令可以在这里方便使用 cd chmod, ls, mkdir, rm, mv, top, df, touch等

     

    Monitor: Device Monitor是一个用来给Android 程序进行调试和分析的工具

    包括:

    DDMS: DDMS 的全称是Dalvik Debug Monitor Service,它为我们提供例如:为测试设备截屏,针对特定的进程查看正在运行的线程以及堆信息、Logcat、广播状态信息、模拟电话呼叫、接收SMS、虚拟地理坐标等等。DDMS将搭建起IDE与测试终端(Emulator 或者connected device)的链接,它们应用各自独立的端口监听调试器的信息,DDMS可以实时监测到测试终端的连接情况。当有新的测试终端连接后,DDMS将捕捉到 终端的ID,并通过adb建立调试器,从而实现发送指令到测试终端的目的

    Tracer for OpenGL ES

    Hierarchy Viewer

    Traceview

    启动 sdk tools/ : monitor

    logcat是Android中一个命令行工具,可以用于得到程序的log信息   

    Android日志信息都有一个标签和它的优先级. 

    日志的标签是系统部件原始信息的一个简要的标志。(比如:“View”就 是查看系统的标签).

    优先级有下列集中,是按照从低到高顺利排列的:

    V — Verbose (lowest priority)

    D — Debug

    I — Info

    W — Warning

    E — Error

    F — Fatal

    S — Silent (highest priority, on which nothing is ever printed)

     
    Monkeyrunner是SDK自带的自动化测试工具需要通过Android-SDK运行,支持用Python编写脚本,按照测试脚本去执行预先定义好的操作事件。
    Monkeyruner脚本可以支持安装卸载应用、进入任一模块、点坐标事件、按键事件、编辑文本、循环测试、截图对比等操作,使用起来比较灵活,简单易学。
    至于图片比对,一般用Imagemagic实现。
     
    可以应用与功能测试,回归测试
    他的缺点是只能对有限的控件进行操控,而其他只能靠坐标位置进行操作,如果手机的分辨率、尺寸或者UI发生变化以后,之前的脚本就不能使用了。
    常用的monkey API:
        MonkeyRunner
        MonkeyDevice
        MonkeyImage
     
    一段典型的MonkeyRunner代码:
    from com.android.monkeyrunner import MonkeyRunner, MonkeyDevice, MonkeyImage
    device = MonkeyRunner.waitForConnection()
    device.installPackage('D:AndroidAutomationpyscriptMyAPPTest.apk')
    device.startActivity(component='com.example.myapp/.MainActivity')
    MonkeyRunner.sleep(5)
    device.touch(20,105,".DOWN_AND_UP");
    MonkeyRunner.sleep(3)
    device.type('Hello');
    MonkeyRunner.sleep(5)
    device.touch(380,105,".DOWN_AND_UP");
    MonkeyRunner.sleep(3)
    device.press('KEYCODE_MENU', MonkeyDevice.DOWN_AND_UP)
    result = device.takeSnapshot()
    result.writeToFile('shot1.png','png')
    MonkeyRunner.sleep(2)
    device.removePackage('com.example.myapp')
     
    monkeyrunner还有录制模块可以使用,
    from com.android.monkeyrunner import MonkeyRunner
    from com.android.monkeyrunner.recorder import MonkeyRecorder
    device = MonkeyRunner.waitForConnection()
    MonkeyRecorder.start(device)
     
    会有一个monkeyrunner录制窗口,很简单的录制过程,只不过有点慢。
    下面是monkeyrunner常用的一些api:
    touch
    press
    drag
    type
    installPackage
    startActivity
    waitForConnection
    takeSnapshot
    writeToFile
     
    关于Monkey
    Monkey 测试是 Android 自动化测试的一种手段,Monkey 测试模拟用户的按键输入,触
    摸屏输入,手势输入等,看设备多长时间会出异常。 
    当 Monkey 程序在模拟器或设备运行的时候,如果用户出发了比如点击,触摸,手势或
    一些系统级别的事件的时候,它就会产生随机脉冲,所以可以用Monkey 用随机重复的方法
    去负荷测试你开发的软件。 
     
    实例:
    adb shell monkey -v -p com.hoperun.activity - -throttle 500 - -pct-anyevent 100    500 
    这条命令的解释是: 
    -v 显示默认程度的信息; 
    -p com.hoperun.activity 是指定测试的程序(包路径)。 
    - -throttle 500   设定延时为 0.5秒 
    - -pct-anyevent 100 设定启动 activity 的百分比为 100%。  
     
    monkey里需要注意的一个参数是: -s,
    这是伪随机数生成器的  seed  值。如果用相同的  seed  值再次运行  Monkey  ,它将生成相同
    的事件序列。 
  • 相关阅读:
    SpringMVC:JSON讲解
    SpringMVC:文件上传和下载
    字符串的使用
    python中的作用域与名称空间
    深、浅copy
    代码块与小数据池之间的关系
    关于敏感字符的筛选替换
    列表的增、删、改、查
    最简三级菜单
    python2.x与python3.x的区别
  • 原文地址:https://www.cnblogs.com/nokia/p/3605072.html
Copyright © 2020-2023  润新知