Monkeyrunner的工作环境

android的sdk中集成了三个比较简单的可用来进行自动化测试的工具:Monkey、MonkeyRunner和Robotium。这三个测试工具都是基于黑盒测试。Monkey相对而言比较简单,只是在cmd下写几行指令对要测试的程序进行简单的压力测试。Robotium测试工具总共只有一个Solo类,里面提供了许多可以用来操作测试设备的方法。MonkeyRunner相对而言,是三个工具中功能最强大的。

MonkeyRunner测试工具主要是编写一个Python程序去安装一个android程序或者测试包,通过模拟一些对程序点击操作的过程,来测试一个程序的稳定性及通过截屏可以方便的记录出现的问题。

Monkeyrunner工具是使用Jython(使用Java编程语言的一种Python实现)写出来的。Jython允许MonkeyrunnerAPI与Android框架轻松的进行交互。至于什么是Python,大家可以百度一下,是一门很强大的面向对象编程语言,可以跨平台运行。当然,我们使用MonkeyRunner测试工具,不必要一定先去学习Python语言,我们恐怕在实际工作中也没有那么多时间,我们只需要了解一些常用的Python编程规范即可。(这些会在后面结合代码给出)。

 现在主要讲一下怎么配置一下一个Monkeyrunner的工作环境。

 如果只是简单使用MonkeyRunner测试工具的话,就没有必要像网上说的,下载一个Python版本安装程序进行安装,或者在eclipose里面集成一个python的插件,用来调试Python程序,在eclipse里面集成插件远没有直接使用记事本或者Notepad等编辑工具好用,因为Monkeyrunner总共就只有三个类(MonkeyRunner,MonkeyDevice,MonkeyImage),也没有那么多方法,让你有在eclipse里写程序时自动提示什么的优势,而有时插件和eclipse版本之间又会出现一些让你头疼的问题。所以,只要一个记事本足矣。

     言归正传,既然是android测试,你肯定是配过android的开发环境了(不会配的可以百度)。android开发免不了要用到android sdk tools下的一些开发工具,你可以在系统环境变量里面配置一个ANDROID_HOME变量,把你的android SDK 安装路径加进去。比如我的路径是:G:\android03\android-sdk-windows。如果你已经配过了ANDROID_HOME变量,你现在只需要在你的系统变量的PATH变量中,把这句话加进去:%ANDROID_HOME%/tools;其实也就是相当于你把指向到android sdk tools的路径加到PATH变量中。

     添加好之后,你可以直接在cmd下运行:monkeyrunner 命令,回车。如果出现monkeyrunner的版本信息,就证明你monkeyrunner环境已经配成功了。(如下图)

android 自动化测试之MonkeyRunner学习(一)_www.fengfly.com

 

有时,你配好之后,会出现NOCLASSDefFound的错误.如下图:

android 自动化测试之MonkeyRunner学习(一)_www.fengfly.com

    这个是由于你的sdk中缺少了一个ChimpChat.jar文件,大家可以去http://code.google.com/p/aster/downloads/list下载一个最新的aster 的压缩包。这个是android系统测试需要用得到运行时环境包,解压这个压缩包,可以在以下路径中找到aster\dist\jar\chimpchat.jar ,然后,把chimpchat.jar复制到你的android sdk 中tools目录下的bin目录中,然后再运行monkeyrunner命令即可。

android 自动化测试之MonkeyRunner学习(一)_www.fengfly.com

     配置好后,就可以在cmd下通过monkeyrunner命令运行你写的monkeyrunner Python测试文件。

     比如:monkeyrunner e:\test.py.

 


上次说到已经配好了MonkeyRunner的运行环境,现在讲解怎么进行简单的MonkeyRunner测试。这个拖了很久才有时间和心情总结一下。真是计划赶不上变化啊。

就不说废话了。 http://developer.android.com/tools/help/MonkeyDevice.html ,这个地址是android上的MonkeyRunner官方文档地址。上面关于MonkeyRunner的一些方法说的很详细。本篇不是详细解释MonkeyRunner方法的文章,只是根据我的理解,结合自己的一个例子 讲解一下怎么使用MonkeyRunner写测试程序。
MonkeyRunner 工具共有三个类:MonkeyRunner、MonkeyDevice、MonkeyImage。
一、MonkeyRunnner类:
        这个类主要用于把MonkeyRunner连接至真机或者 模拟器,另外有个显示提示信息的alert方法和一个选择方法比较常用。
二、MonkeyImage类:
        这个类主要是测试过程中,用来保存测试截图,把图片保存成各种格式,并且可以比较两个MonkeyImage对象。
        主要常用的有两个方法: writeToFile (string path, string format) ,这个是保存截图的位置,和命名,可以把图片保存到sdcard里面,也可以保存到电脑里面; sameAs ( MonkeyImage other, float percent) ,这个用来比较两个截图是否相同,结果为boolean值。
三、MonkeyDevice类:
        这个类的方法就多了一下,主要提供了安装和卸载程序包、启动一个活动及操作键盘等事件的方法。像里面的 startActivity (string uri, string action, string  data, string mimetype, iterable categories dictionary extras, component component, flags) 启动一个应用, press (string name, dictionary type)点击控件 , touch (integer x, integer y, integer type)点击控件(通过坐标 定位) , drag (tuple start, tuple end, float duration, integer steps) 拖拉 控件等等方法比较常用。
      MonekeyRunner这个 测试工具用起来不算太难,下面给出一段代码简单解释一下:
  FetionTest.py
 
    #coding=utf-8    Python程序的第一句,添加这句使注释支持中文
    # 导入需要的MonkeyRunner的包,也可以是自己写的类,如果文件很多的话
    from  com.android.monkeyrunner import MonkeyRunner,MonkeyDevice,MonkeyImage
    #连接真机,里面要写正确自己的真机对应的名字,cmd下命令下,可以用adb devices 看到
    devices1=MonkeyRunner.waitForConnection(5,"1234567890ABCDEF")
    #连接 模拟器
    devices2=MonkeyRunner.waitForConnection(5,"emulator-5554")
    #启动飞信的主界面,这是我测的飞信程序,里面主要是配好飞信的包名和启动Activity
      devices1.startActivity 
   (component = 'cn.com.fetion/.android.ui.activities.StartActivity')
   devices2.startActivity
   (component = 'cn.com.fetion/.android.ui.activities.StartActivity')
   #休眠8秒,便于帐号的登录
   MonkeyRunner.sleep(8.0)
   #点击我的好友一栏,这里使用的是坐标方法
    devices1.touch(202,258,"DOWN_AND_UP")
   #选中好友
   devices1.touch(222,326,"DOWN_AND_UP")
   devices1.touch(442,325,"DOWN_AND_UP")
   # 点击“加入黑名单”
   devices1.touch(223,563,"DOWN_AND_UP")
   # 下面是进行截图,和保存图片
   result1 = device1.takeSnapshot()
   result1.writeToFile('E:\slack01.png','png')
   #点击返回键,可以找到 模拟器上任何一个建对应的关键值,这个在官方文档里可以查到
   device1.press('KEYCODE_BACK',MonkeyDevice.DOWN_AND_UP)
   result2 = device1.takeSnapshot()
   result2.writeToFile('E:\slack02.png','png')
     这个程序就简单说这些,另外可以对自己的程序进行优化,可以把不同的测试case封装到一个方法里,也可以把一些配置设置成全局变量,然后在不同的类里进行调用。这些需要简单了解一下Python的 编程知识。
   下面说一个比较好用的获取坐标的 工具。就是用来获取真机上坐标的工具,当我们点击真机上的空间时,能显示真机上的点击点的坐标。
这个是一个可以自己定义的 python文件,只有几句话:
from com.android.monkeyrunner import MonkeyRunner as mr
from com.android.monkeyrunner.recorder import MonkeyRecorder as recorder
# 里面添加你的真机的名字
device = mr.waitForConnection(5,"MSM8225QRD5")
recorder.start(device)
比如,我把它定义为monkey_recorder.py, 然后放在G盘,在cmd下运行 monkeyrunner monkey_recorder.py ,就会出现如下界面:
 
android 自动化测试之MonkeyRunner学习(二)_www.fengfly.com
当我们在这个工具上点击时,真机也会跟着执行,并且会显示每一步我们点击的位置的坐标,比如,我点击打开音乐播放器会记录如下:
 
android 自动化测试之MonkeyRunner学习(二)_www.fengfly.com
 
这个工具的好只有处你用过几次才知道的,呵呵,反正有些应用程序里很小的图标只能通过坐标获取点击事件,这个工具的优势就显示出来了。另外,需要注意,这个是不能用来获取 模拟器坐标的,模拟器上的坐标只有自己下个截图工具,来量取坐标了。这一点确实很蛋疼。
软件 工具都是这样,没有绝对的便利。MonkeyRunner也不例外。呵呵,这一次就写这么多吧,这个工具简单的使用介绍的也差不多了,更多的还需要自己去摸索,熟能生巧嘛。希望大家能多多分享,多多交流。
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值