随着3G手机等智能终端的普及和移动互联网速度愈来愈快,移动互联网用户数量不断攀升,移动应用发展迅速,测试需求日渐迫切。本文从移动互联网、移动应用的发展现状和测试需求谈起,着重介绍了Android系统开放的技术架构,对Android测试基础框架进行了详细的阐述,推荐了基于Android系统的一系列测试工具,介绍其测试功能,并展望了移动应用的云端测试服务发展趋势。
随着3G手机等智能终端的普及和移动互联网速度愈来愈快,移动互联网用户数量不断攀升,3G移动互联网也催生出了众多创新型的企业营销或业务应用。随着移动企业应用的普及,各行业的移动应用测试需求也将与日俱增,包括移动办公(电子政务等),银行、证券业的移动支付以及旅游业应用等,这些需求可以来自运营商、移动应用开发商、移动终端厂商、互联网络运营商、应用开发企业等。移动应用的测试类型涉及功能性测试、性能测试、安全性测试、稳定性测试、易用性测试、可靠性测试、兼容性测试及非技术性测试;众多的移动应用及其推向市场的快速响应需求,以及移动终端使用的便利性,对测试的质量和响应速度提出了更高的要求。
Android是一种以Linux为基础的开放源代码操作系统,主要竞争对手是苹果公司的iOS以及RIM的Blackberry OS。2011年第一季度,Android在全球的市场份额首次超过塞班系统,跃居全球第一。基于开源的Android系统还提供了一系列的开源测试技术和工具,使得Android移动应用的开发、测试更加易于开展。
一、Android系统架构介绍
Android作为一个基于Linux系统的移动设备平台,其软件层次结构包括了一个操作系统(OS),中间件(MiddleWare)和应用程序(Application)。其软件层次结构自下而上分为以下几个层次:
这样,在启动程序的时候就会先启动一个Application,然后在此Application运行过程中根据情况加载相应的Activity,而Activity是需要一个界面的。但是Instrumentation并不是这样的,可以将Instrumentation理解为一种没有图形界面的,具有启动能力的,用于监控其他类(用Target Package声明)的工具类。任何想成为Instrumentation的类必须继承android.app.Instrumentation。
对于单元测试,需要认真了解的就是android.test.InstrumentationTestRunner类。这是Android单元测试的主入口。它相当于JUnit当中TestRunner。加载它首先要在manifest文件中加入一行关于Instrumentation的声明,比如Android Api Demos中的测试里的manifest是这么写的:
如果用Eclipse的ADT插件(0.8版本以上),也可以用图形界面来添加。编辑好manifest,就可以打包,然后安装到虚拟机上(用adb install命令)。之后就可以利用命令行的方式来加载单元测试了。在Android Shell中加载一个Instrumentation的方法是利用以下命令:
adb shell am instrument w XXXXXX
其中-w是指定Instrumentation要测试类的参数标志。
二、Android系列测试支持工具
基于Instrumentaion测试框架,Android形成了一系列的自动化测试工具,供开发者选择使用:
1.Debug工具Adb
ADB全称Android Debug Bridge,是Android Sdk自带的一个工具,用这个工具可以直接操作管理android模拟器或者真实的andriod设备(如手机)。它的主要功能有:(1)运行设备的shell(命令行);(2)管理模拟器或设备的端口映射;(3)计算机和设备之间上传/下载文件;(4)将本地apk软件安装至模拟器或android设备。
2.Android调试工具DDMS
DDMS的全称是Dalvik Debug Monitor Service,也是是Android Sdk自带的一款工具,可以提供例如:为测试设备截屏,针对特定的进程查看正在运行的线程以及堆信息、Logcat、广播状态信息、模拟电话呼叫、接收SMS、虚拟地理坐标等等。
3.辅助测试工具―――Android脚本语言环境ASE
Android Scripting Environment(ASE)是Google针对Android操作系统发布的一个小工具。ASE将脚本语言带入Android,允许用户编辑和执行脚本,直接在Android设备上运行交互式解释器。脚本将能大幅度简化任务界面,目前支持Python, Perl, JRuby, Lua, BeanShell, JavaScript, Tcl, shell,借助ASE可以直接通过脚本(解释语言)方便快捷的调用Android系统中大部分的API,针对手机功能展开测试。
4.压力测试工具Monkey
Monkey也是Android Sdk中的一个命令行工具,可以运行在模拟器里或实际设备中。它向系统发送伪随机的用户事件流(如按键输入、触摸屏输入、手势输入等),实现对正在开发的应用程序进行压力测试。Monkey测试是一种为了测试软件的稳定性、健壮性的快速有效的方法。