(原版)Monkeyrunner自动化测试由浅入深(第一节)

博主原创,请勿转载

第一、相关软件和环境的配置

1、Android sdk下载和配置

2、java jdk下载和配置

第二、Monkeyrunner认识

Monkeyrunner是Android SDK中提供的一个测试工具,存放位置在SDK-tools中,以bat文件存在,即monkeyrunner.bat,双击此文件即启动monkeyrunner(启动是不是很简单,小编之前还以为monkeyrunner是需要何等高级配置)

官方定义(官方地址:http://developer.android.com/tools/help/MonkeyDevice.html):monkeyrunner工具,其本身提供了一个API来供大家编程啦,用以控制一个android设备或者模拟器,而不用了解这个android及其应用的源码。有了monkeyrunner,我们可以写一个Python(monkeyrunner指定脚本语言,不会没关系,继续看)的程序来安装android程序或者测试包,运行编写好的脚步语言,则通过monkeyrunner则会给模拟器或者真机发送一系列控制事件,并且测试的过程中,还可以自定义重要步骤的截图(代码自动完成)。monkeyrunner的工具的作用是在功能/框架层上测试应用和设备,跑单元测试用例,当然你也可以用它做其他的。

再次需要区分一下monkeyrunner和monkey的区别:

此两个都为Android SDK中提供的官方测试工具

monkey:严格意义上来讲不算测试工作,它只是主要应用在压力和可靠性测试上,运行该命令可以随机地向目标程序发送各种模拟键盘事件流,并且可以自己定义发送的次数,以此观察被测应用程序的稳定性和可靠性,应用起来也比较简单,记住那几个命令就行了

monkeyrunner:相比之下会强大一些,它主要可应用于功能测试,回归测试,并且可以自定义测试扩展,灵活性较强,并且测试人员可以完全控制,缺点:主要生成坐标的自动化操作,移植性不强,功能最为局限

同理,也恶补一下行业内最最最基础的自动化工具,市面上其他的自动化工具,基本都基于此扩展:

1、Instrumentation:早期Google提供的Android自动化测试工具类,虽然在那时候JUnit也可以对Android进行测试,但是Instrumentation允许你对应用程序做更为复杂的测试,甚至是框架层面的。通过Instrumentation

你可以模拟按键按下、抬起、屏幕点击、滚动等事件。此工具类也基本属于鼻祖级别的,后面提到的robotium就是属于基于此工具类,像itestin,MTC,淘宝的Athrun等等

2、UiAutomator:优点:可以对所有操作进行自动化,操作简单;缺点:Android版本需要高于4.0,无法根据控件ID操作,相对来说功能较为局限,但也够用了;

3、Monkey:准确来说,这不算是自动化测试,因为其只能产生随机的事件,无法按照既定的步骤操作;

4、Rubotium:主要针对某一个APK进行自动化测试,APK可以有源码,也可以没有源码,功能强大;缺点是针对APK操作,而且需要对APK重新签名(有工具),因此操作相对复杂;为什么要将robotium和其他Android或者

Google亲儿子放在一起呢,是因为robotium开源,很多工具也是基于此开发,例如易测云的Ratar,以及一些商业化工具,如云测,百度云测,阿里质量中心

闲话不多聊,开始正题

*********Monkeyrunner的使用************

1、启动

  前面已经提过,monkeyrunner存在Android SDK--->tools文件中,双击monkeyrunner.bat即可运行启动,启动后未cmd命令窗口,如下:

  

2、连接设备

  monkeyrunner工具启动成功后,则需要一个连接一个能接收并执行monkeyrunner命令的设备,这里强调一点,monkeyrunner即可连接模拟器,也可以连接真机(因为网上有朋友还在到处搜索monkeyrunner如何连真机的方法),接下来我就讲讲    monkeyrunner是怎样连接模拟器和真机的

  连接模拟器之前我需要讲下monkeyrunner工具的三个类:MonkeyRunner,MonkeyDevice,MonkeyImage

  Monkeyrunner:这个类主要用于把MonkeyRunner连接至真机或者模拟器,另外有个显示提示信息的alert方法和一个选择方法比较常用。

  MonkeyDevice:个类的方法就多了一下,主要提供了安装和卸载程序包、启动一个活动及操作键盘等事件的方法

  MonkeyImage:这个类主要是测试过程中,用来保存测试截图,把图片保存成各种格式,并且可以比较两个MonkeyImage对象

  记住,你需要什么样功能,就需要在monkeyrunner命令窗口中最先运行导入此类的命令,如下:

  from com.android.monkeyrunner import MonkeyRunner,MonkeyDevice,MonkeyImage运行结果如下:

  

  导入了相应类,才可以使用对应的功能,所以后续连接设备,即可使用了Monkeyrunner类了

  连接模拟器:

  device=MonkeyRunner.waitForConnection()

Monkeyrunner自动化测试由浅入深(第一节)的更多相关文章

  1. 第一节 课程简介与HTML5概述

    第一节 课程简介与HTML5概述 *********************************************************** 1.1课程简介 教学目的: 从基础入手到能够运 ...

  2. android内部培训视频_第一节

    声明:本视频为公司内部做android培训时录制的,无任何商业目的.同时鉴于水平有限,可能不符合您的需求,放在这里的目的是提供给公司同事下载,作为培训的一个记录,也作为一个系列教程的自我督促完成的理由 ...

  3. 我的第一节Android课

    我的第一节安卓课程,今天非比寻常的一天,我开始了我程序猿之路的第一节安卓课程,安卓课程只是我的一个兴趣班,我的本专业是java开发,因为喜欢做一个属于自己的一个手机APP,就选多个一样技能,毕竟十八般 ...

  4. 第四章 跨平台图像显示库——SDL 第一节 与SDL第一次亲密接触

    http://blog.csdn.net/visioncat/article/details/1596576 GCC for Win32 开发环境介绍(5) 第四章 跨平台图像显示库——SDL 第一节 ...

  5. Centos7 Openstack - (第一节)基本环境配置

    Centos7 install Openstack - (第一节)基本环境配置 我的blog地址:http://www.cnblogs.com/caoguo 根据openstack官方文档配置 官方文 ...

  6. seajs第一节,seajs基本使用

    什么是seajs,它是干什么使用的,可以去网上搜索一下, 官网:http://seajs.org/docs/ 基本使用seajs <!DOCTYPE html> <html> ...

  7. 2014年度辛星html教程夏季版第一节

    从今天起开始在博客园开启自己的html教程啦,先从第一节开始把,首先推荐一个网站,就是http:/www.w3cschool.cc,这是一个公开的教学网站,但是它有一个问题,那就是虽然很全面,但是不是 ...

  8. 辛星跟您玩转vim第一节之vim的下载与三种模式

    首先值得一提的是,我的vim教程pdf版本号已经写完了,大家能够去下载,这里是csdn的下载地址:点此下载 ,假设左边的下载地址挂掉了,也能够自行在浏览器以下输入例如以下地址进行下载:http://d ...

  9. [iOS]Objective-C 第一节课

    Objective-C 第一节课 本节课的主要内容 创建Objective-C的第一个工程 HelloWorld Objective-C中的字符串 创建Objective-C的第一个工程 打开Xcod ...

随机推荐

  1. [转帖]影驰首发PCIe 4.0 SSD:群联AMD合作主控飚出5GB/s

    影驰首发PCIe 4.0 SSD:群联AMD合作主控飚出5GB/s https://www.cnbeta.com/articles/tech/851275.htm 硬件发展的真快.. AMD刚刚发布的 ...

  2. Git介绍、安装、命令和实战

    一.Git介绍 Git是一个开源的分布式版本控制系统,可以有效.高速地处理从很小到非常大的项目版本管理. 二.Git安装(Mac系统) 在Git官网下载安装包双击直接安装 在终端输入git来检测Git ...

  3. Balloon Robot ZOJ - 3981

    大意: n个参赛队, m个座位, 一共交了p次题, 一个机器人每秒钟会从位置$i$走到$i+1$, 若在$m$直接走到$1$, 当走到一个队伍就给该队应得的气球. 对于每道题, 假设交题时间$t_a$ ...

  4. sql server 获取整数的函数ceiling(x)和floor(x)

    --ceiling(x)返回不小于x的最小整数值,floor(x)返回不大于x的最大整数值 示例:select CEILING(-3.35), CEILING(3.35), FLOOR(-3.35), ...

  5. MySQL第三讲 一一一一 视图、触发器、函数、存储过程

    1. 视图 1.1 视图前戏 我们之前讲有,临时表的概念. 现在我们创建一个临时表:select * from (select * from tb1 where id between 10 and 1 ...

  6. java 求数组最大子序列之和

    经典问题: 给定一个int[]数组,求其最大子序列之和(条件:数组中不全部都是负数). 最优算法,线性时间复杂度: public static int maxSubSum(int[] a){ int ...

  7. 基于SOA的图书商城系统分析

    1.1什么是SOA架构? SOA( Service Oriented Architecture)是一种面向服务的分布式架构,将每个实现特定功能的工程拆分为服务层和表现层.服务层负责处理业务逻辑,对外提 ...

  8. INSERT - 在表中创建新行

    SYNOPSIS INSERT INTO table [ ( column [, ...] ) ] { DEFAULT VALUES | VALUES ( { expression | DEFAULT ...

  9. centos7搭建docker+k8s集成

    1. 关闭防火墙 # systemctl stop firewalld # systemctl disable firewalld # setenforce 2. 使用yum安装etcd和kubern ...

  10. Centos 7.5 双网卡内外网同时访问路由设置

    说明:服务器有两张网卡分别是eth0.eth1,eth0配置内网IP:192.168.1.1/24,eth1配置外网IP:10.1.1.1/24:要求192.168.0.0/16网段走网卡eth0,网 ...