iOS开发教程:iOSUI自动化测试.doc_第1页
iOS开发教程:iOSUI自动化测试.doc_第2页
iOS开发教程:iOSUI自动化测试.doc_第3页
iOS开发教程:iOSUI自动化测试.doc_第4页
iOS开发教程:iOSUI自动化测试.doc_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

iOS开发教程:iOS UI自动化测试一、关于iOS UI自动化测试 要测试一个已成型的应用,从用户所见的角度来做自动化收益还是比较高的。目前了解的UI测试方法分为两类,一种是iOS4提供的UI Automation,一种是把测试代码注入到应用中。1)iOS4的UI Automation 用JavaScript驱动在应用上模拟用户行为,由 Instruments的Automation工具执行。具体的可以参考这篇文章在iOS 4 中实现UI自动测试,操作很简单,先编写自动化测试的Javascript文件,在Automation工具中选择这个文件,选择测试的target(模 拟器和真机都可以),然后点Record(这个名字起得很坑爹,我一度以为它支持录制,像Selenium一样转化为js代码呢),此时会运行所选的应用 同时自动化脚本也开始运作了。API可以在SDK Developer Document里找到,主要的是UIAElement、UIAElementArray、UIALogger这几个。但是API不是很完善,比如我要得 到整个elementTree可以通过UIATarget.localTarget().logElementTree()得到,但是没有API能获取所 有的Element,获取Element只能以获取子控件的形式一级一级查找,最后的代码可能就会变成这样:window.tableViews()0.cells()1.buttons()2.tap();即使可以通过button的name直接找到这个button也需要写成这样:window.tableViews()0.cells()1.buttons().firstWithName(search);非常难看难维护。我尝试遍历一个view上的所有控件整整运行了两分钟。另外推荐一个测试框架,Working with UIAutomation这篇文章中提供了tuneup_js这样一个框架,封装得非常简单,除了没有before after之类的封装外对我来说暂时已经够用了(需要每个case执行完后或者执行开始前恢复默认状态,不过这个很容易实现),可以参考。2)测试代码注入到应用代码中 大致的思路是,新建一个测试的target,在 applicationDidFinishLaunching最后创建一个测试对象,这个对象封装在测试的代码中,那么此时这个target就是应用+测 试的新的东西了,安装后可以看到应用一直在模拟用户行为,也就是测试代码在运行。这种测试方法其他部门的同事在研究,这里可以介绍几个测试框架:FoneMonkey,这是我最早接触的iOS自动化框架,支持录制回放,但是不知道怎么对结果做验证。如果仅仅是录制回放的话,UI Recorder已经挺好用了。Bromine,这个框架还不错,封装到最后只需要填几个Plist就可以完成testcase,只是不方便扩展,可以模拟用户行为无法做数据验证,同事基于这个框架在做定制,想法是做成C/S模式,这样如果server端没有发送请求测试就不会进行。Google Toolbox for Mac (GTM),Google的一个开源项目。GTM + TestMerge.app = UI testing bliss据说也是类似的思路。总结存在的问题: iOS4的UI Automation有一个硬伤,就是4.0以下iOS不支持,这对自动化来说是打点折扣的。但是既然是Instruments的工具,不知道能否和其他 工具一起使用,比如用leak检测内存泄露,比如用UI Recorder记录操作,然后回放到低版本的iOS设备或者模拟器上,可行性没了解过。第一种方案使用Javascript,相对第二种方案的Objective C上手还是要简单一些。需要解决的问题还有,如果应用crash,测试就不能继续了。如果crash后重跑下一个case,那就不能有case之间的耦合。如何重新运行app有待研究。另外以上两种方案最后都要做到可持续集成,第一种方案需要做的是把 build app、run app & testcase、generate testresult整个流程串起来,Automation这个工具提供可以测试报告,Instruments可以Shell运行,是否可行还需要研究, 如果行不通的话可以尝试用Apple Script运行;第二种方案难点在于如何生成报告,需要把测试的log重定向到某个文件输出,这也是他们准备做成C/S结构的原因之一,可以在 server端直接得到测试结果。PS:如果测试的不是客户端而是web应用的话,Selenium2已经支持iOS和android平台了,可参考Selenium IphoneDriver。二、关于xcode4.2 iOS的自动化测试 使用Instruments 里面的Automation,可以对iOS进行自动化测试。在这里下载修改好的项目,xcode4.2下用的:/detail/andyddd/3714104下载那个附件:LoginWindow_Src.zip,编译里面的xcode项目,如果编译有错,就将Targets- Building Settings - Prefix Header 项清空(如果使用的是上面已经修改好的,就不用改了)。安装xcode的时候,instruments已经装好了,与xcode在一个程序组里。启动Instruments,在左侧添加Scripts:LongonTest.js, 然后在上面选择Target为刚才编译成功的iOS的app。这个app的位置在用户目录下的:/Library/Application Support/iPhone Simulator/Applications/然后就可以运行测试脚本了,测试成功后的截图如下:三、iphone、ipad自动化测试,解决方案明确概念: 目的:自动化测试是为了减轻测试人员“例行公事”似的测试任务,而诞生的一种测试方法,他是必须的,但不是万能的,就像金钱一样;概念:利用现成的测试工具,对程序的执行、操作流程进行录制,而后运行时让程序自动走完录制的流程;原理:操作录制过程,就是测试脚本的自动生成过程,以后的自动测试就是执行相应的脚本,所以,必要时是需要自己动手实现脚本编写;测试工具包括: 1、测试脚本的文件包(插入到程序中),如foneMonkey 在mac中应用,其他地方没用过2、完整的工具(能够启动程序,并按照已经录制的操作步骤执行),eggplant软件3、自动运行脚本平台(能够启动程序,操作过程由自己编写脚本实现),Instruments,xcode环境一般自带我尝试过的两种测试方法: (1)利用fontMonkey测试工具包1、下载FoneMonkey.zip文件并解压2、用xcode打开工程目录3、添加一个测试用的target并重命名:4、选取刚才创建的target并将解压好的FontMonkey倒入工程目录也可以直接拖入到文件目录:导入时确保你的target为刚才添加的5、添加完以后的效果为6、此时在你的框架中会默认添加两个文件libFoneMonkey.5.4a.beta.alibFoneMonkeyOCUnit.5.4a.beta.a这两个文件在FoneMonkey的lib文件夹中,如果框架管理中没有,则可以直接拖过去;然后再添加几个框架文件(默认有三个),libxml2.dylib、SenTestingKit.framework、QuartzCore.framework7、修改工程的配置文件 Buile SetingLinking-Other Linker Flags添加选项 -all_load8、开始编译程序选择测试target以及模拟器(真机器还没试验),运行第二个按钮是录制、第三个是播放、第四个返回上级页面;录制完成后,右上角第一个是保存,第二个是选择保存的脚本对程序进行测试;原文地址:/books/fonemonkey-doc/setup-guide/preparing-an-app略有改动,加入了一些必要的注意点;(2)在Instrument中编写脚本进行测试(不能录制)1、打开Instruments工具一般路径:/Developer/Applications/instruments2、选择Automation3、添加测试脚本(如果有现成的,可以导入)4、编写脚本给出测试几个按钮点击的脚本var target = UIATarget.localTarget(); /变量用来表示这是一个测试系统var application = target.frontMostApp(); /确定要测试的程序var window = application.mainWindow(); /确定要册书的窗口window.logElementTree(); /获取要测试界面的所有元素var bt=window.buttons()2;if(bt.isValid()bt.tap();elseUIAlogger.logMessage(“some error show!”);5、

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论