移动应用软件自动化测试技术初探Word文档格式.docx
《移动应用软件自动化测试技术初探Word文档格式.docx》由会员分享,可在线阅读,更多相关《移动应用软件自动化测试技术初探Word文档格式.docx(5页珍藏版)》请在冰豆网上搜索。
移动应用项目开发“短小精干”,即应用程序小而精,开发模式也抛弃了传统的规范流程,热衷于敏捷式开发,版本发布周期越来越短,迭代频密,这就需要大量的回归测试。
其次,移动应用开发最大的问题是终端种类多、适配工作量大。
在目前苹果应用商店以及Android市场都各有超过几十万种应用,这些还不包括其他平台上的应用,此外,每一个平台都可以为各种设备出售各种操作系统版本。
开发应用需要在这些各种型号和操作系统版本的组合上测试和验证程序。
在这种情况下采用单纯的手工测试已不能满足要求。
自动化测试的主要作用就是能够模拟用户对手机设备等的使用,并将操作过程记录到脚本,而后通过对这些脚本的自动化执行,收集相关的测试数据,对应用系统进行评估。
此外,还能确保在手机操作系统升级之后,脚本仍然可以被重复使用。
因此自动化测试技术可以减少回归测试中大量重复劳动,加快开发周期,减少项目成本。
而随着移动应用逐渐从个人娱乐领域渗透到商业应用,诸如金融、办公、政务等方面的应用比重逐步扩大,对移动应用质量的要求也越来越高,因此移动应用的自动化测试技术显得尤为重要。
2移动应用软件测试平台概述
2014年的统计数据显示Google旗下Android的市场份额为80%以上,而苹果iOS的市场份额为12%左右,这两大操作系统占据了移动应用的平台的百分之九十以上。
基于Android平台的自动化测试框架主要包括以下七种:
2.1基于坐标点触屏测试工具,如Google公司的Monkeyrunner这款测试工具
monkeyrunner工具的主要设计目的是用于测试功能/框架水平上的应用程序和设备,或用于运行单元测试套件。
monkeyrunner工具提供了一个API,通过使用此API可以在Android代码之外控制Android设备和模拟器,如完成安装一个Android应用程序或测试包,运行它,向它发送模拟击键,截取它的用户界面图片,并将截图存储于工作站上。
其优点操作最为简单,可以录制测试脚本,可视化操作;
缺点主要生成坐标的自动化操作,移植性不强,功能最为局限。
2.2基于随机流的单元测试:
CTS、Monkey
CTS全称CompatibilityTestSuite兼容性测试工具。
当产品开发出来,并定制了自己的Android系统后,必须要通过最新的CTS检测,以保证标准的androidapplication能运行在该平台下。
通过了CTS验证,需要将测试报告提交给Google,已取得androidmarket的认证。
CTS是一款通过命令行操作的工具。
目前cts没有提供windows版本,只能在Linux下测试。
Monkey是Android中的一个命令行工具,可以运行在模拟器里或实际设备中。
它向系统发送伪随机的用户事件流(如按键输入、触摸屏输入、手势输入等),实现对正在开发的应用程序进行压力测试。
Monkey测试是一种为了测试软件的稳定性、健壮性的快速有效的方法。
2.3基于元素图形对比测试工作:
SeeTest、i-test
由Experitest提供的SeeTestMobile是一个自动化脚本工具。
像QTP一样可以通过录制方式,工具自动记录可以再次运行的测试脚本,测试脚本在附加的移动设备以及模拟器上自动运行,结果记录在SeeTest环境中进行分析。
自动化脚本可以转换和集成多种其他现有的目标测试环境,像QTP、TestComplete、MSTest、Junit、PERL和Python等。
2.4腾讯Bita和性能测试工具GT
Bita云测试平台是为androidAPP提供云测试服务的真机自动化平台,平台提供海量机型的真实设备和专业的自动化测试技术。
平台为应用程序提供两个测试项:
兼容性测试,性能测试。
在兼容测试中,有深度测试和轻度测试两种测试类型,深度测试包括全程自动安装、启动、滑屏、登录、遍历、卸载并监控实时性能数据,可随意选择测试深度来测试carsh率,CPU占用率,内存占用率等。
轻度测试会实现安装,启动,快速点击测试,卸载。
同样也会测试carsh率,CPU占用率,内存占用率等。
针对手游可以完成对所有机型做兼容测试、稳定性测试、性能测试,其中包括,游戏安装、启动测试、稳定性测试、兼容适配、卸载测试等。
GT是腾讯的一个APP随身调测平台,是直接运行在手机上的集成调测环境,可以对APP进行快速的性能功能测试,包括CPU、内存、流量、电量、帧率和流畅度等。
2.5Itestin、TMTS
iTestin是由云测Testin提供的安卓自动化测试脚本录制工具,可以快速实现稳定模块的功能自动化测试,或者实现某个版本的深度兼容性测试。
iTestin可直接捕获操作者在真实手机设备上对被测应用的操作,并直接生成可跨分辨率执行的功能测试脚本。
该脚本可在应用的多个版本间复用。
TMTS是阿里巴巴的自动化测试框架,使用AndroidSDK的Instrumentation机制作为自动化框架的基础,保证测试工程可以在不改写和重编译被测应用的基础上,与被测应用运行在同一个进程里,从而达到自动化测试的目的。
2.6基于控件信息:
Robutlum+Junit4框架、windtestmanagement
Robotium是一个测试框架,能够为Android应用程序编写强大、健壮的自动化黑盒测试用例。
利用Robotium的支持,用例开发人员能够编写功能、系统和验收测试方案,跨越多个Androidactivities。
Robotium支持Activities、Dialogs、Toasts、Menus和ContextMenus。
Robotium主要针对某一个APK进行自动化测试,APK可以有源码,也可以没有源码,功能强大;
其缺点是针对APK操作,而且需要对APK重新签名,因此操作相对复杂。
Windtestmanagement是全球领先的嵌入式和移动软件提供商风河公司推出的测试工具,能够加强软件的安全性测试,其内置的的模糊测试包还支持多种网络协议。
在其WindRiverUXTestDevelopmentKit测试开发套件中的PatchlessExecution功能不仅能使测试流程更为便捷,而且支持Android4.1JellyBean操作系统。
该套件还能帮助Android设备创建可重复使用、变化适应能力更强的自动化测试脚本,并取代传统手动测试。
2.7NativeDriver,其目前其已经被采用比较新的技术的UlAutomator取代
WebDriver用来实现许多平台和浏览器的Web应用功能测试,nativedriver是Google创建的一款测试框架,该工具是WebDriverAPI的一种实现。
而Google在Android4.1发布的时候包含了一种新的测试工具,即uiautomator,主要用来做UI测试,也就是普通的手工测试,点击每个控件元素看看输出的结果是否符合预期。
比如登陆界面分别输入正确和错误的用户名密码然后点击登陆按钮看看是否能否登陆以及是否有错误提示等。
其优点是可以对所有操作进行自动化,操作简单;
缺点是Android版本需要高于4.0,无法根据控件ID操作,相对来说功能较为局限。
基于IOS平台的自动化测试框架主要包括Monkey、Athrun架构、instrumentsDriver以及Ulautomation。
其中Athrun是淘宝的开源测试项目,其优点是对UIAutomation的java实现,在代码提示、用例维护方面比UIAutomation有所提高,用户可以通过junit4的@Parameters或者Feed4junit实现数据驱动,非常适合生产环境。
但其缺点是没有了UIAutomation的录制功能。
InstrumentDriver是Mobile自动化小组实现的基于instrument,针对iOS的自动化测试框架,支持java语言编写测试用例。
3移动应用自动化对象识别技术
3.1基于坐标点对象识别
进行手机自动化测试获取应用软件中的对象是自动化测试的第一步,Monkeyrunner测试工具通过坐标来获取测试对象。
MonkeyRunner工具共有三个类:
MonkeyRunner、MonkeyDevice、MonkeyImage。
其中MonkeyRunnner类主要用于把MonkeyRunner连接至真机或者模拟器。
MonkeyImage类主要在测试过程中保存测试截图,把图片保存成各种格式,并且可以比较两个MonkeyImage对象。
MonkeyDevice类主要提供了安装和卸载程序包、启动一个活动及操作键盘等事件的方法。
其常用方法包括:
(1)startActivity(stringuri,stringaction,stringdata,stringmimetype,iterablecategoriesdictionaryextras,componentcomponent,flags):
启动一个应用
(2)touch(integerx,integery,integertype):
通过坐标定位点击控件
(3)drag(tuplestart,tupleend,floatduration,integersteps):
拖拉控件
如通过以下基于坐标点方法完成点击应用程序中菜单项目:
devices1.touch(202,258,"
DOWN_AND_UP"
)
这种基于坐标点的对象识别方法可以跨应用,但也存在脚本移植不方便的问题,我们可以通过两种方法来解决。
首先,分辨率来改变坐标点。
如测试脚本原先运行机器分辨率320*480,需要移植到480*800的机器上,某坐标点(x,y)在新的机器上坐标点(newx,newy)可以通过以下方式计算机获得:
newx=480*x/320,newy=800*y/480。
其次,可以利用Hierarchyviewer活用获取布局,再重新定位,即通过坐标点获取控件,再通过控件反向获取坐标点。
但此方法的缺点是在android4.1.1以下都要开root权限。
3.2基于元素图形对比对象识别
测试框架SeeTest采用类似QTP中的基于图像元素识别的技术,这样带来的好处是测试脚本和设备的操作系统无关。
在SeeTest中把某界面的某一区域的图像定义为一个元素,通过图片元素定位。
具体的实现通过在录制期间截取某个按钮的图片并保存到SeeTest的对象库,运行时通过该图片对象来定位对应的按钮进行测试。
如以下代码实现了对某一界面对象的点击操作:
Client.click(“default”,”element0”,0,1)。
在上述代码中“element0”即为对象库中的一个图像元素。
此外