三年间Android突飞猛进,系统版本从当初的Froyo2.2发展到如今的AndroidL并细分出了Android Wear,原有框架得到了长足的改进或是消亡,一些新的自动化测试框架也在这期间出现了。
首先介绍的是它们的鼻祖Instrumentation。
说明:下面有些框架不止支持Android,有的还同时支持iOS甚至Windowsphone,本文只介绍Android的部分。本文不会介绍各个框架的具体使用方法,需要的话可以通过万能的Google。
1.Instrumentation
Instrumentation是Google官方提供的框架,包含在AndroidSDK中,最初的一些框架比如Robotium都是基于它进行开发的,所以有必要首先对它进行了解。
通过跟踪Android的核心组件android.app.Activity类的源码,可以发现android.app.Instrumentation类介入了Activity的启动过程,进一步查看Instrumentation类的源码可以发现它具有发送按键事件的功能(更多细节有兴趣的同学可以自行阅读Android的源代码)。
Google正是以android.app.Instrumentation类为核心,遵循Junit规范建立了Instrumentation测试框架,有关代码都包含在AndroidSDK的android.test包下。该体系比较重要的两个类是InstrumentationTestRunner和
InstrumentationTestCase,它们都通过继承或组合的方式使用了Instrumentation类。
......
2.Robotium
项目首页:https://code.google.com/p/robotium/
Robotium是最早的开源Android自动化测试框架之一,也是发展至目前用户最多,社区活跃度最高的。
它基于Instrumentation开发,其核心技术是通过反射获取了当前界面上所有的View对象(有兴趣的同学可以查看Android源码
com.android.internal.policy.impl.PhoneWindow.DecorView这个内部类,同时可以了解Android的View体系),并以多种API的形式提供出来,方便在编写用例时获取、操作View对象。
与Instrumentation一脉相承,基于Robotium编写的case遵循Junit规范,而且让笔者不得不吐槽的是,到目前为止,Google在Android里面集成的还是Junit3。
可以通过扩展开发支持Junit4,下面的章节会介绍到。
Robotium的主要特点:
API很易于测试人员使用,与WebDriver体系面向对象的API不同,它提供了一套面向过程的API,贴近测试的步骤。
支持对WebView的操作。现在比较流行的一种App开发模式是在应用内大量使用WebView,集团内部的淘宝、支付宝客户端都可以见到这种模式,这种开发模式的最大好处是一些频繁变化的内容只需要重复发布服务器端即可,不需要用户升级客户端。Robotium这个特性还是非常实用的。
......
版权声明:51Testing软件测试网及相关内容提供者拥有51testing.com内容的全部版权,未经明确的书面许可,任何人或单位不得对本网站内容复制、转载或进行镜像,否则将追究法律责任。