robotium各种方法.docx
《robotium各种方法.docx》由会员分享,可在线阅读,更多相关《robotium各种方法.docx(17页珍藏版)》请在冰豆网上搜索。
robotium各种方法
Android工程的Robotium自动化测试介绍
一.Android自动化测试手段有哪些?
测试手段1:
Monkey
1)应用程序的开发者可以测试自己应用的鲁棒性。
[鲁棒是Robust的音译,也就是健壮和强壮的意思。
鲁棒性(robustness)就是系统的健壮性。
它是在异常和危险情况下系统生存的关键。
比如说,计算机软件在输入错误、磁盘故障、网络过载或有意攻击情况下,能否不死机、不崩溃,就是该软件的鲁棒性。
所谓“鲁棒性”,是指控制系统在一定(结构,大小)的参数摄动下,维持某些性能的特性。
根据对性能的不同定义,可分为稳定鲁棒性和性能鲁棒性。
以闭环系统的鲁棒性作为目标设计得到的固定控制器称为鲁棒控制器。
]
2)设备制造商可以使用Monkey对自己的设配施行压力测试。
看设备能坚持多久。
Monkey测试即可以针对全局,也可以正对某个局部(某个Category,package等等)。
执行简单,效果明显。
测试手段2:
Monkeyrunner
Monkeyrunner工具提供了一个API,使用此API写出的程序可以在Android代码之外控制Android设备和模拟器。
通过Monkeyrunner,您可以写出一个Python程序去安装一个Android应用程序或测试包,运行它,向它发送模拟击键,截取它的用户界面图片,并将截图存储于工作站上。
Monkeyrunner工具的主要设计目的是用于测试功能/框架水平上的应用程序和设备,或用于运行单元测试套件。
Monkeyrunner工具与monkey并无关联。
monkey工具直接运行在设备或模拟器的adbshell中,生成用户或系统的伪随机事件流。
而Monkeyrunner工具则是在工作站上通过API定义的特定命令和事件控制设备或模拟器。
测试手段3:
ASE
ASE意思为Android脚本环境,即我们可以通过脚本(比如Python)调用Android的功能,从而定制一些测试。
比如打电话,发短信,浏览网页,等。
我们可以扩充它的API(Java部分),并用python脚本调用这些API,从而实现丰富的测试功能。
用于API部分可以访问到Android全部API,python又能灵活部署测试,所以ASE的扩展性非常好。
测试手段4:
Robotium
该工具用于黑盒的自动化测试。
可以在有源码或者只有APK的情况下对目标应用进行测试。
Robotimu提供了模仿用户操作行为的API,比如在某个控件上点击,输入Text等等。
测试手段5:
单元测试
Android本身带有很多单元测试例子,我们可以按需要模仿它们,针对某个
应用进行单元测试。
注意Android的Instrument机制功能非常强大,可以测试UI。
以上各测试方法均有其不同的使用场合及范围,在实际测试过程中我们应该根据测试重点不同而选择不同的测试方法。
本文将着重介绍Robotium自动化测试方法。
二.Robotium简介
Robotium是一个测试框架,能够方便你为Android应用程序编写强大、健壮的自动化黑盒测试用例。
利用Robotium的支持,用例开发人员能够编写功能、系统和验收测试方案,跨越多个Androidactivities。
Robotium支持Activities、Dialogs、Toasts、Menus和ContextMenus。
Robotium自动化测试方法能够模仿普通用户行为,可以试着把一些原来由测试工程师做的测试变成Robotium自动化实现。
Robotium提供下列好处
1.以最小的应用程序知识,开发功能强大的测试案例。
2.框架支持多个activities自动活动。
3.最短的时间需求写出测试用例。
4.测试案例的可读性比标准的仪器测试大大提高。
5.通过运行时绑定GUI组件使测试用例更强大。
6.执行测试用例速度快。
7.顺利整合了Maven或Ant来运行测试,持续集成的一部分。
三.
Robotium测试工程创建
确保环境
1.已经安装eclipse
2.Eclipse已经配置好android相关环境
3.存在已经创建模拟器
4.存在一个编译通过的被测工程
这里以AndroidSDK/samples/android-9/NotePad为例:
在Eclipse中导入该工程File-->New-->Project-->AndroidProject-->CreateProjectfromexistingsource-->NotePad.
步骤
1.在官方down栏下下载所需要的jar包
地址:
2.创建一个TestProject
1)打开eclipse,选择File->New->Project…->Android->AndroidTestProject,点击Next。
2)在TestProjectName中输入测试工程的名称,如:
NotePadTest。
选择AnexistingAndroidProject,点击右边的Browse…按钮。
3)选择被测工程NotesList,点击OK按钮,会自动选择和输入BuildTarget和Properties,可以按照默认的,不用修改。
4)点击Finish按钮,一个新建的测试工程(NotePadTest)就创建好了。
3.创建一个TestCase
1)在NotePadTest->src->com.example.android.notepad.test上,右击选择New->JUnitTestCase,创建一个TestCase。
2)在Name中输入TestCase的名字NotePadTest。
3)Superclass改为android.test.ActivityInstrumentationTestCase2。
4)选择创建setUp()、tearDown()和constructor后,点击Finish按钮。
4.导入robotium.jar
1)选择测试工程NotePadTest右击,选择BuildPath->ConfigureBuildPath…
2)在打开的PropertiesforNotePadTest中点击AddExternalJARs…按钮。
3)导入本机中的robotium-solo-2.2.jar文件,击OK按钮。
5.修改javaCompiler
1)选择测试工程NotePadTest右击,选择Properties->javaCompiler->Enableprojectspecificsettings。
Compilercomplicancelevel选择1.6,点击OK按钮。
6.编写Robotium测试程序
1)导包
//导入需要测试的工程
importcom.example.android.notepad.NotesList;
//robotium提供的测试用类
importcom.jayway.android.robotium.solo.Solo;
//测试工程要继承用来测试activity的父类
importandroid.test.ActivityInstrumentationTestCase2;
2)泛型写需要测试的工程的入口activity名NotesList。
3)修改构造方法
4)在测试方法前覆写父类的setUp()方法:
该方法用来初始化solo,绑定对应的Activity。
5)在测试方法后覆写父类的tearDown()方法:
该方法用来清理资源垃圾,关闭activity。
6)Solo类运用
Solo类中提供了自动点击、取得、拖拽、搜索等各种方法。
声明Solo类型的成员变量privateSolosolo;
典型方法:
1点击:
clickOnButton(int)—ClicksonaButtonwithagivenindex.
clickOnButton(String)—ClicksonaButtonwithagiventext.
clickOnCheckBox(int)—ClicksonaCheckBoxwithagivenindex.
clickOnView(View)—ClicksonagivenView.
clickOnText(String)—ClicksonaViewdisplayingagiventext.
clickLongOnText(String)—LongclicksonagivenView.
clickOnRadioButton(int)—ClicksonaRadioButtonwithagivenindex.
clickOnScreen(float,float)—Clicksonagivencoordinateonthescreen.
2取得:
getCurrentActivity()—ReturnsthecurrentActivity.
getText(String)—ReturnsaTextViewwhichshowsagiventext.
getView(int)—ReturnsaViewwithagivenid.
getEditText(String)—ReturnsanEditTextwhichshowsagiventext.
getImage(int)—ReturnsanImageViewwithagivenindex.
3拖拽:
drag(float,float,float,float,int)—Simulatetouchingagivenlocationanddraggingittoanewlocation.
4搜索:
searchText(String)—Searchesforatextstringandreturnstrueifatleastoneitemisfoundwiththeexpectedtext.
searchEditText(String)—SearchesforatextstringintheEditTextobjectslocatedinthecurrentActivity.
searchButton(String,boolean)—SearchesforaButtonwiththegiventextstringandreturnstrueifatleastoneButtonisfound.
更多方法请参见Solo的API文档:
7)创建需要的测试方法
可以根据不同目的编写多个测试方法。
注意方法名称必须以test开头,程序运行会自动调用以test开头的方法。
每次调用测试方法都会运行一次测试工程。
下面是测试程序完整代码:
7.运行测试程序
选择测试工程NotePadTest右击,选择RunAs->AndroidJUnitTest,运行测试程序。
测试程序运行log如下:
测试程序运行中的部分截图:
测试成功的情况下,测试结果如下:
测试失败的情况下,测试结果如下:
以上步骤是在eclipse中进行测试的,也可以在模拟器或者手机上测试。
如果需要直接在模拟器或者手机上测试,需要将测试包和被测试包改成相同的签名。