除了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:\AndroidAutomation\pyscript\MyAPPTest.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  ,它将生成相同
的事件序列。 

Robotium 系列(2) - 简单介绍Monkey和MonkeyRunner的更多相关文章

  1. Https系列之一:https的简单介绍及SSL证书的生成

    Https系列会在下面几篇文章中分别作介绍: 一:https的简单介绍及SSL证书的生成二:https的SSL证书在服务器端的部署,基于tomcat,spring boot三:让服务器同时支持http ...

  2. Docker系列之原理简单介绍

    目录 1.1.Docker架构简介 1.2.Docker 两个主要部件 1.3.虚拟机和Docker对比: 1.4.Docker内部结构 Docker系列之原理简单介绍 @ Docker是一个开源的应 ...

  3. openresty开发系列10--openresty的简单介绍及安装

    openresty开发系列10--openresty的简单介绍及安装 一.Nginx优点 十几年前,互联网没有这么火,软件外包开发,信息化建设,帮助企业做无纸化办公,收银系统,工厂erp,c/s架构偏 ...

  4. 【FIORI系列】SAP OpenUI5 (SAPUI5) js框架简单介绍

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[FIORI系列]SAP OpenUI5 (SA ...

  5. HTTP协议系列(3)---包括WebSocket简单介绍

    一.HTTPS     HTTP是超文本传输协议,那HTTPS是什么尼?要明白HTTPS是什么先要明白HTTP的缺点,想一下我们在使用HTTP的时候会有那些缺点尼? 1.通信使用的明文(不加密),内容 ...

  6. jQuery系列 第一章 jQuery框架简单介绍

    第一章 jQuery框架简单介绍 1.1 jQuery简介 jQuery是一款优秀的javaScript库(框架),该框架凭借简洁的语法和跨平台的兼容性,极大的简化了开发人员对HTML文档,DOM,事 ...

  7. C# 基础知识系列- 6 Lambda表达式和Linq简单介绍

    前言 C#的lambda和Linq可以说是一大亮点,C#的Lambda无处不在,Linq在数据查询上也有着举足轻重的地位. 那么什么是Linq呢,Linq是 Language Intergrated ...

  8. WPF入门教程系列六——布局介绍与Canvas(一)

    从这篇文章开始是对WPF中的界面如何布局做一个较简单的介绍,大家都知道:UI是做好一个软件很重要的因素,如果没有一个漂亮的UI,功能做的再好也无法吸引很多用户使用,而且没有漂亮的界面,那么普通用户会感 ...

  9. 一步一步学习SignalR进行实时通信_1_简单介绍

    一步一步学习SignalR进行实时通信\_1_简单介绍 SignalR 一步一步学习SignalR进行实时通信_1_简单介绍 前言 SignalR介绍 支持的平台 相关说明 OWIN 结束语 参考文献 ...

随机推荐

  1. 1048: [HAOI2007]分割矩阵 - BZOJ

    Description 将一个a*b的数字矩阵进行如下分割:将原矩阵沿某一条直线分割成两个矩阵,再将生成的两个矩阵继续如此分割(当然也可以只分割其中的一个),这样分割了(n-1)次后,原矩阵被分割成了 ...

  2. [转载]ASP.NET MVC URL重写与优化(进阶篇)-继承RouteBase玩转URL

    引言-- 在初级篇中,我们介绍了如何利用基于ASP.NET MVC的Web程序中的Global文件来简单的重写路由.也介绍了它本身的局限性-依赖于路由信息中的键值对: 如果键值对中没有的值,我们无法将 ...

  3. 【leetcode】Word Ladder (hard) ★

    Given two words (start and end), and a dictionary, find the length of shortest transformation sequen ...

  4. 如何在Ubuntu下启动Apache的Rewrite功能

    在终端中执行 sudo a2enmod rewrite 指令后,即启用了 Mod_rewrite 模块. 另外,也可以通过将 /etc/apache2/mods-available/rewrite.l ...

  5. HDU4539+状态压缩DP

    /* 题意:n行m列的矩阵,1表示可以放东西,0表示不可以.曼哈顿距离为2的两个位置最多只能有一个位置放东西. 问最多放多少个东西. */ #include<stdio.h> #inclu ...

  6. Servlet课程0426(十)Servlet如何删除cookie

    //如何删除Cookie案例 package com.tsinghua; import javax.servlet.http.*; import java.io.*; public class Coo ...

  7. Autodesk 2015全套密钥

    Below is a list for collecting all the Autodesk 2015 Product Keys:      [*]AutoCAD 2015 001G1      [ ...

  8. 省市区 Mysql 数据库表

    1.查省SELECT * FROM china WHERE china.Pid=02.查市SELECT * FROM chinaWHERE china.Pid=3300003.查区SELECT * F ...

  9. Python之函数篇

    函数形参 函数取得的参数是你提供给函数的值,这样函数就可以利用这些值 做 一些事情.这些参数就像变量一样,只不过它们的值是在我们调用函数的时候定义的,而非在函数本身内赋值. 参数在函数定义的圆括号对内 ...

  10. 【HDOJ】3553 Just a String

    后缀数组加二分可解. /* 3553 */ #include <iostream> #include <sstream> #include <string> #in ...