- 浏览: 278486 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
zhang_shuai870717:
求指教。没懂
Graphics 的translate(int x, int y) 函数 -
刘亮love小雪:
楼主我还是没有懂啊
Graphics 的translate(int x, int y) 函数 -
wenhaoliu:
大侠!我在从ios平台移植到android平台遇到很多问题!编 ...
android平台移植总结 -
lansehuan:
dwpcny 写道楼主 你给得链接是你自己才能看得啊 。我也遇 ...
cocos2d-x,windows环境配置总结 -
leishengwei:
u_xtian 写道jifengyu 写道楼主你好,我想问一下 ...
(转)Android开发:在EditText中关闭软键盘
最近研究了Android自带的测试工具monkey 跟 monkeyrunner。
monkey主要应用在压力和可靠性测试上,运行该命令可以随机地向目标程序发送各种模拟键盘事件流,并且可以自己定义发送的次数,以此观察被测应用程序的稳定性和可靠性,应用起来也比较简单,记住那几个命令就行了。而monkeyrunner呢,相比之下会强大一些,它主要可应用于功能测试,回归测试,并且可以自定义测试扩展,灵活性较强,并且测试人员可以完全控制。
monkey工具:
基本语法如下:
如果不指定options,Monkey将以无反馈模式启动,并把事件任意发送到安装在目标环境中的全部包。下面是一个更为典型的命令行示例,它启动指定的应用程序,并向其发送500个伪随机事件:
一些常用的参数信息:
-v
命令行的每一个-v将增加反馈信息的级别。Level 0(缺省值)除启动提示、测试完成和最终结果之外,提供较少信息。Level 1提供较为详细的测试信息,如逐个发送到Activity的事件。Level 2提供更加详细的设置信息,如测试中被选中的或未被选中的Activity。
约束限制
-p <allowed-package-name>
如果用此参数指定了一个或几个包,Monkey将只允许系统启动这些包里的Activity。如果你的应用程序还需要访问其它包里的Activity(如选择取一个联系人),那些包也需要在此同时指定。如果不指定任何包,Monkey将允许系统启动全部包里的Activity。要指定多个包,需要使用多个 -p选项,每个-p选项只能用于一个包。
Monkey实例测试
Windows下(注:2—4步是为了查看我们可以测试哪些应用程序包,可省略):
1、 通过eclipse启动一个Android的emulator
2、 在命令行中输入:adb devices查看设备连接情况
C:\Documents and Settings\Administrator>adb devices
List of devices attached
emulator-5554 device
3、 在有设备连接的前提下,在命令行中输入:adb shell 进入shell界面
C:\Documents and Settings\Administrator>adb shell
#
4、 查看data/data文件夹下的应用程序包。注:我们能测试的应用程序包都在这个目录下面
C:\Documents and Settings\Administrator>adb shell
如:
com.android.htmlviewer
com.android.settings
com.android.netspeed
com.android.providers.userdictionary
com.android.browser
com.android.contacts
com.android.alarmclock
等
5.在其中找到我们需要测试的包名com.marshalchen.MonkeyTest1
6、 以com.marshalchen.MonkeyTest1 作为对象进行MonkeyTest
#monkey -p com.marshalchen.MonkeyTest1 -v 500
其中-p表示对象包 –v 表示事件数量
运行过程中,Emulator中的应用程序在不断地切换画面。
按照选定的不同级别的反馈信息,在Monkey中还可以看到其执行过程报告和生成的事件。
如:Sending Pointer ACTION_DOWN x=35.0 y=259.0
:Sending Pointer ACTION_UP x=195.0 y=259.0
:Sending Pointer ACTION_DOWN x=295.0 y=223.0
:Dropped: keys=0 pointers=0 trackballs=0 flips=0
等等信息。
MonkeyRunner 使用
一、什么是MonkeyRunner
monkeyrunner工具提供了一个API,使用此API写出的程序可以在Android代码之外控制Android设备和模拟器。通过monkeyrunner,您可以写出一个Python程序去安装一个Android应用程序或测试包,运行它,向它发送模拟击键,截取它的用户界面图片,并将截图存储于工作站上。monkeyrunner工具的主要设计目的是用于测试功能/框架水平上的应用程序和设备,或用于运行单元测试套件,但您当然也可以将其用于其它目的。
monkeyrunner工具与monkey工具并无关联。monkey工具直接运行在设备或模拟器的adbshell中,生成用户或系统的伪随机事件流。而monkeyrunner工具则是在工作站上通过API定义的特定命令和事件控制设备或模拟器。
monkeyrunner工具为Android测试提供了以下特性:
1.多设备控制:monkeyrunner API可以跨多个设备或模拟器实施测试套件。您可以在同一时间接上所有的设备或一次启动全部模拟器(或统统一起),依据程序依次连接到每一个,然后运行一个或多个测试。您也可以用程序启动一个配置好的模拟器,运行一个或多个测试,然后关闭模拟器。
2.功能测试: monkeyrunner可以为一个应用自动贯彻一次功能测试。您提供按键或触摸事件的输入数值,然后观察输出结果的截屏。
3.回归测试:monkeyrunner可以运行某个应用,并将其结果截屏与既定已知正确的结果截屏相比较,以此测试应用的稳定性。
4.可扩展的自动化:由于monkeyrunner是一个API工具包,您可以基于Python模块和程序开发一整套系统,以此来控制Android设备。除了使用monkeyrunner API之外,您还可以使用标准的Python os和subpress模块来调用如adb这样的Android工具。
您还可以向monkeyrunner API中添加您自己的类。
monkeyrunner工具使用Jython(使用Java编程语言的一种Python实现)。Jython允许monkeyrunnerAPI与Android框架轻松的进行交互。使用Jython,您可以使用Python语法来获取API中的常量、类以及方法。
二、图形化记录与回放
设备名称可以在命令行中输入adb devices获得
另外写了2个脚本,分别用于启动模拟器跟python脚本
EasyMonkeyDevice的相关类,已经可以利用控件的id来进行交互,同时模拟系统按键之类的,从这个角度来说,相比较于游戏,monkeyrunnner更合适android app应用的测试
参考资料:http://blog.csdn.net/zm2714/article/details/7980634
http://blog.csdn.net/marshalchen/article/details/9119979
http://fengbohaishang.blog.51cto.com/5106297/962705
monkey主要应用在压力和可靠性测试上,运行该命令可以随机地向目标程序发送各种模拟键盘事件流,并且可以自己定义发送的次数,以此观察被测应用程序的稳定性和可靠性,应用起来也比较简单,记住那几个命令就行了。而monkeyrunner呢,相比之下会强大一些,它主要可应用于功能测试,回归测试,并且可以自定义测试扩展,灵活性较强,并且测试人员可以完全控制。
monkey工具:
基本语法如下:
$ adb shell monkey [options] <event-count>
如果不指定options,Monkey将以无反馈模式启动,并把事件任意发送到安装在目标环境中的全部包。下面是一个更为典型的命令行示例,它启动指定的应用程序,并向其发送500个伪随机事件:
$ adb shell monkey -p your.package.name -v 500
一些常用的参数信息:
-v
命令行的每一个-v将增加反馈信息的级别。Level 0(缺省值)除启动提示、测试完成和最终结果之外,提供较少信息。Level 1提供较为详细的测试信息,如逐个发送到Activity的事件。Level 2提供更加详细的设置信息,如测试中被选中的或未被选中的Activity。
约束限制
-p <allowed-package-name>
如果用此参数指定了一个或几个包,Monkey将只允许系统启动这些包里的Activity。如果你的应用程序还需要访问其它包里的Activity(如选择取一个联系人),那些包也需要在此同时指定。如果不指定任何包,Monkey将允许系统启动全部包里的Activity。要指定多个包,需要使用多个 -p选项,每个-p选项只能用于一个包。
Monkey实例测试
Windows下(注:2—4步是为了查看我们可以测试哪些应用程序包,可省略):
1、 通过eclipse启动一个Android的emulator
2、 在命令行中输入:adb devices查看设备连接情况
C:\Documents and Settings\Administrator>adb devices
List of devices attached
emulator-5554 device
3、 在有设备连接的前提下,在命令行中输入:adb shell 进入shell界面
C:\Documents and Settings\Administrator>adb shell
#
4、 查看data/data文件夹下的应用程序包。注:我们能测试的应用程序包都在这个目录下面
C:\Documents and Settings\Administrator>adb shell
如:
com.android.htmlviewer
com.android.settings
com.android.netspeed
com.android.providers.userdictionary
com.android.browser
com.android.contacts
com.android.alarmclock
等
5.在其中找到我们需要测试的包名com.marshalchen.MonkeyTest1
6、 以com.marshalchen.MonkeyTest1 作为对象进行MonkeyTest
#monkey -p com.marshalchen.MonkeyTest1 -v 500
其中-p表示对象包 –v 表示事件数量
运行过程中,Emulator中的应用程序在不断地切换画面。
按照选定的不同级别的反馈信息,在Monkey中还可以看到其执行过程报告和生成的事件。
如:Sending Pointer ACTION_DOWN x=35.0 y=259.0
:Sending Pointer ACTION_UP x=195.0 y=259.0
:Sending Pointer ACTION_DOWN x=295.0 y=223.0
:Dropped: keys=0 pointers=0 trackballs=0 flips=0
等等信息。
MonkeyRunner 使用
一、什么是MonkeyRunner
monkeyrunner工具提供了一个API,使用此API写出的程序可以在Android代码之外控制Android设备和模拟器。通过monkeyrunner,您可以写出一个Python程序去安装一个Android应用程序或测试包,运行它,向它发送模拟击键,截取它的用户界面图片,并将截图存储于工作站上。monkeyrunner工具的主要设计目的是用于测试功能/框架水平上的应用程序和设备,或用于运行单元测试套件,但您当然也可以将其用于其它目的。
monkeyrunner工具与monkey工具并无关联。monkey工具直接运行在设备或模拟器的adbshell中,生成用户或系统的伪随机事件流。而monkeyrunner工具则是在工作站上通过API定义的特定命令和事件控制设备或模拟器。
monkeyrunner工具为Android测试提供了以下特性:
1.多设备控制:monkeyrunner API可以跨多个设备或模拟器实施测试套件。您可以在同一时间接上所有的设备或一次启动全部模拟器(或统统一起),依据程序依次连接到每一个,然后运行一个或多个测试。您也可以用程序启动一个配置好的模拟器,运行一个或多个测试,然后关闭模拟器。
2.功能测试: monkeyrunner可以为一个应用自动贯彻一次功能测试。您提供按键或触摸事件的输入数值,然后观察输出结果的截屏。
3.回归测试:monkeyrunner可以运行某个应用,并将其结果截屏与既定已知正确的结果截屏相比较,以此测试应用的稳定性。
4.可扩展的自动化:由于monkeyrunner是一个API工具包,您可以基于Python模块和程序开发一整套系统,以此来控制Android设备。除了使用monkeyrunner API之外,您还可以使用标准的Python os和subpress模块来调用如adb这样的Android工具。
您还可以向monkeyrunner API中添加您自己的类。
monkeyrunner工具使用Jython(使用Java编程语言的一种Python实现)。Jython允许monkeyrunnerAPI与Android框架轻松的进行交互。使用Jython,您可以使用Python语法来获取API中的常量、类以及方法。
二、图形化记录与回放
monkeyrunner monkey_recorder.py
#coding=utf-8 from com.android.monkeyrunner import MonkeyRunner as mr from com.android.monkeyrunner.recorder import MonkeyRecorder as recorder # 里面添加你的真机的名字 device = mr.waitForConnection(5,"emulator-5554") recorder.start(device)
设备名称可以在命令行中输入adb devices获得
另外写了2个脚本,分别用于启动模拟器跟python脚本
@echo off echo ==================================================== echo wait emulator start echo ==================================================== start emulator -avd a4.3 pause echo pause echo wait emulator started start monkeyrunner D:/MonkeyRunner.py
#coding=utf-8 import sys,time,os # Imports the monkeyrunner modules used by this program from com.android.monkeyrunner import MonkeyRunner as mr from com.android.monkeyrunner import MonkeyDevice as md from com.android.monkeyrunner.recorder import MonkeyRecorder as recorder # Connects to the current device, returning a MonkeyDevice object print("wait for Connect device") device = mr.waitForConnection() recorder.start(device) if not device: print >> sys.stderr,"fail" sys.exit(1) # install apk return boolean value to judge wheter apk installed ok #device.installPackage('D:/tmp/installedApk.apk') # sets a variable with the package's internal name package = 'com.clovegame.demogame' # sets a variable with the name of an Activity in the package activity = 'com.clovegame.demogame.MainActivity' # sets the name of the component to start runComponent = package + '/' + activity # Runs the component #device.startActivity(component=runComponent) #wait for a monment, 5s mr.sleep(5) # Presses the Menu button print("press menu") #device.press('KEYCODE_MENU', md.DOWN_AND_UP) # default folder name to save snapshot snapshot = 'D:/tmp/' #time str t = time.strftime("%Y-%m-%d-%X",time.localtime()) t = t.replace(":","-") devicename = "E" #screenshot #if imgsavetofile=='' : imgsavetofile = snapshot+devicename+'-'+t+'.png' if not os.path.exists(snapshot) : os.mkdir(snapshot) print 'snapshot image file: ' + imgsavetofile mr.sleep(3) # Takes a screenshot result = device.takeSnapshot() #This step is very important! mr.sleep(3) # Writes the screenshot to a file result.writeToFile(imgsavetofile,'png') ''' '''
EasyMonkeyDevice的相关类,已经可以利用控件的id来进行交互,同时模拟系统按键之类的,从这个角度来说,相比较于游戏,monkeyrunnner更合适android app应用的测试
from com.android.monkeyrunner import MonkeyRunner, MonkeyDevice from com.android.monkeyrunner.easy import EasyMonkeyDevice from com.android.monkeyrunner.easy import By device = MonkeyRunner.waitForConnection() easy_device = EasyMonkeyDevice(device) easy_device.startActivity(component='com.xuanwu.etion/.SplashActivity') #输入用户名 device.type('mzba') #触摸密码框,相当于获取焦点 easy_device.touch(By.id('id/login_edit_pwd'), MonkeyDevice.DOWN_AND_UP) #输入密码 device.type('888888') #按下返回键,相当于关闭输入法的弹出框 device.press('KEYCODE_BACK', MonkeyDevice.DOWN_AND_UP) #easy_device.touch(By.id('id/login_edit_account'), MonkeyDevice.DOWN_AND_UP) #点击登录按钮 easy_device.touch(By.id('id/login_btn'), MonkeyDevice.DOWN_AND_UP)
参考资料:http://blog.csdn.net/zm2714/article/details/7980634
http://blog.csdn.net/marshalchen/article/details/9119979
http://fengbohaishang.blog.51cto.com/5106297/962705
发表评论
-
(转)Android Layout 之 RelativeLayout,代码实现相对布局
2012-12-11 15:37 2318使用 AbsoluteLayout 可以直 ... -
(转)LayoutInflater作用及使用
2012-11-28 11:06 1486备注: LayoutInflater主要 ... -
jni文件传递方法参数
2012-11-26 17:43 5629使用jni从java传递多个参数到c++时,如果是多个参数,当 ... -
CCTMXTiledMap使用的几个事项
2012-08-02 11:12 7366项目中的地图层采用coco ... -
android平台移植总结
2012-07-30 13:11 2743最近完成了一款游戏的android平台移植,从ios平台移植到 ... -
(转)Android中的“再按一次返回键退出程序”实现
2012-07-26 16:47 1110用户退出应用前给出一个提示是很有必要的,因为可能是用户并不真的 ... -
(装)NDK Build 参数
2012-07-17 16:20 2833'ndk-build' Overview ndk-build ... -
android获得屏幕大小,使用sdk1.6
2011-05-19 14:59 1894DisplayMetrics dm = n ... -
(转)Zipalign使用方法-SDK中的APK文件优化工具
2011-04-29 18:01 3417在Android SDK中包含了一个工具名为Zipalign, ... -
(转)Android开发:在EditText中关闭软键盘
2011-04-12 19:10 80781、EditText有焦点(focusable为true)阻止 ... -
setHint方法
2011-04-12 15:10 5688setHint方法设置view为空时,view显示的内容,还有 ... -
(转)获取系统剩余内存
2011-04-12 11:41 1266原文:http://mingkg21.iteye.com/bl ... -
Android1.6目录结构找不到res资源的问题
2011-04-11 13:54 2302建立的是1.6的目录结构,在res下面有drawable-hd ... -
(转)android proc 进程信息解析
2011-04-08 18:27 2559原文:http://bigfirebird.iteye.com ... -
Android字体跟颜色
2011-04-06 17:50 1956一本电子书的示例,显示android的字体跟颜色,可以在xml ... -
Android的按键处理
2011-03-30 13:34 1921Android在处理键盘按下事件时,重写了Activity的b ... -
(转)Android键盘和触摸事件处理
2011-03-30 13:33 1599activity和VIEW都能接收触摸和按键,如果响应事件只需 ... -
(转)Android横竖屏切换
2011-03-30 13:33 1344关于Android中Activity的横竖屏切换问题可以通过A ... -
(转)Android Activity全屏显示
2011-03-30 13:32 958在onCreate()中加入如下代码: Java ... -
(转)ant编译android工程taskdef class not found
2011-03-30 13:32 2530ant编译android工程时出现 taskdef cl ...
相关推荐
Monkey和Monkeyrunner是Android自动化测试中的两个重要工具,主要用于对应用程序进行压力测试和自定义脚本测试。在本文中,我们将深入探讨这两个工具的基本概念、使用方法和相关资源。 Monkey是Android SDK自带的一...
【Android Monkey测试】 ...总的来说,Monkey和Monkeyrunner都是Android测试中不可或缺的工具,它们各有优势,适用于不同的测试需求。开发者可以根据实际项目的特点和测试目标,灵活选择和组合使用这两种工具。
移动应用测试Android自带命令参数(adb、monkey、monkeyrunner)知识点整理(思维导图加图).rar 根据如下Android自动命令参数(adb、monkey、monkeyrunner)整理: adb命令参数 Monkey命令选项参考 monkeyrunner
用于测试Android计算器,适合初学monkeyrunner测试脚本编写者
MonkeyRunner工具和Monkey工具都是Android系统提供的用于进行自动化测试的命令行工具,但它们的应用方式和目的存在一定的差异。 首先我们来理解Monkey工具。Monkey是一个命令行工具,它可以运行在Android的模拟器...
### Android自动化测试MonkeyRunner详解 #### 一、MonkeyRunner简介 MonkeyRunner是Android SDK中一个强大的自动化测试工具,它提供了一套API来控制Android设备或模拟器。通过编写Python脚本,用户可以实现诸如...
1. **MonkeyRunner**:这是一个命令行工具,它提供了接口供用户设置 Monkey 参数,如事件数量、类型分布等,并启动 Monkey 进程。 2. **Monkey** 类:这是 Monkey 的核心,它负责生成和发送事件。在这个类中,你可以...
Monkeyrunner是Android SDK提供的一种工具,用于创建自动化测试脚本来操控Android设备或模拟器,它为开发者和测试人员提供了一种高效的方式来进行功能测试。在Android应用开发过程中,Monkeyrunner测试脚本扮演着...
Monkeyrunner是另一个Android SDK提供的工具,它可以编写Python脚本来控制设备或模拟器,并执行Monkey测试。Monkeyrunner允许更高级的控制,例如同时在多个设备上运行Monkey测试,或者在测试前后执行自定义的初始化...
### MonkeyRunner培训简单教程 #### 一、认识MonkeyRunner MonkeyRunner是一种强大的自动化测试工具,主要用于...了解Monkey、MonkeyRunner和ADB之间的区别和联系有助于更好地利用这些工具进行Android应用的测试。
【Android自动测试之monkeyrunner工具】是Android平台上用于自动化测试的一种工具,它提供了一套Python API,使得开发者能够在PC上编写脚本,控制Android设备或模拟器进行测试操作。Monkeyrunner不仅适用于应用的...
例如,基本的Monkey命令是`adb shell am instrument -w -e class com.android.monkeyrunner.MonkeyRunner com.android.commands.monkey.MonkeyDevice/your.package.name`,这里的`your.package.name`需要替换为你的...
`MonkeyRunner`类在Android SDK中提供了一个命令行接口,用于执行Monkey测试。在系统源码层面,`com.android.server.am.ActivityManagerService`是接收和处理这些事件的主要组件。`ActivityManagerNative`作为 ...
在探讨如何使用Monkeyrunner进行Android自动化测试之前,先来理解一下Monkey与Monkeyrunner之间的区别及其各自的应用场景。 **Monkey**主要用于压力测试和可靠性测试。通过随机地向目标程序发送各种模拟键盘事件流...
虽然Monkeyrunner和Monkey都是由Android官方提供的自动化测试工具,但它们之间存在明显的差异: 1. **Monkey工具**:直接运行在设备或模拟器的`adb shell`中,通过生成伪随机事件流来模拟用户的触摸、手势和其他...
前言:最近开始研究Android自动化测试方法,对其中的一些工具、方法和框架做了一些简单的整理,其中包括android测试框架、CTS、Monkey、Monkeyrunner、benchmark、其它testtool等等。因接触时间很短,很多地方有不足...
众所周知,一般情况下我们使用android中的monkeyrunner进行自动化测试时,使用的是python语言来写测试脚本。不过,最近发现可以用java调用monkeyrunner Api,用java语言写测试脚本。 于是,就简单研究了一下。...
- **Monkey工具**:Monkey是另一个基于adb shell的工具,它在设备上生成随机用户事件流,而Monkeyrunner则提供了更精细的控制,能够按需发送特定事件。 6. **Monkeyrunner的优势** - **灵活性**:Monkeyrunner...