iOS自动化测试文档.docx
- 文档编号:2867278
- 上传时间:2022-11-16
- 格式:DOCX
- 页数:16
- 大小:701.75KB
iOS自动化测试文档.docx
《iOS自动化测试文档.docx》由会员分享,可在线阅读,更多相关《iOS自动化测试文档.docx(16页珍藏版)》请在冰豆网上搜索。
iOS自动化测试文档
自动化测试
一、概述1
二、第一个UIAutomation测试脚本1
1.下面让我们来编写我们的第一段测试代码。
1
2.处理UIAElement和元素可访问性(Accessibility)4
3、经验分享8
4、高级交互11
5、总结13
一、概述
自动化测试代码可以“在你睡觉的时候”很好地帮你测试你的应用程序。
它可以让你能够快速地跟踪程序中的回归和性能方面的问题,这样你就不用担心你的新增的功能会影响到你之前已经完成开发的程序了。
随着iOS4.0的发布,苹果公司同事发布了一个名为UIAutomation的测试框架,它可以用来在真实设备和iPhone模拟器上执行自动化测试。
但官方关于UIAutomation的文档相当有限,在网络上也没有太多的资源可以查找的。
本文将向你展示如何将UIAutomation整合到你的工作流程当中去。
2、第一个UIAutomation测试脚本
UIAutomation的功能测试代码是用Javascript编写的。
UIAutomation和Accessibility有着直接的关系,你将用到通过标签和值的访问性来获得UI元素,同时完成相应的交互操作。
1.下面让我们来编写我们的第一段测试代码。
使用iOS模拟器
(1)下载实例应用程序
(2)确保选中如下图所示的“TestAutomation>iPhone5.0Simulator”模式(或许你已经切换成5.1了,因此可能是iPhone5.1模拟器)。
(3)启动Instruments(Product>Profile),或者通过?
l。
(4)选择左边的iOSSimulator,然后再选择Automation模板,然后点击“Profile”。
(5)Instruments就已经启动好了,然后直接开始录制了。
这里先停止录制,(红色按钮或者?
R)。
(6)在左边的Scripts窗口,点击“Add>Create”创建新的脚本。
(7)在脚本编辑器里,输入下面的代码
vartarget=UIATarget.localTarget();
varapp=target.frontMostApp();
varwindow=app.mainWindow();
target.logElementTree();
(8)重新运行这段脚本?
R(不需要保存)。
脚本跑起来后,你可以在日志打完后停止它。
我们就完成了我们的第一个UIAutomation测试用例。
使用iOS设备
除了将你的测试用例运行在模拟器上,你可以将它运行在一个真实的设备上。
不过,自动化测试用例只能运行在支持多任务的:
iPhone3GS,iPad,iOS>4.0等设备上。
遗憾的是不管iPhone3G的系统版本是什么,都不支持。
下面是如何操作:
(1)通过USB接口连接上你的iPhone。
(2)选择“TestAutomation>iOSDevice”模式。
(3)确保Developperprofile设置成Release模式(而不是Ad-HocDistributionprofile)。
默认情况下,profiling是设置成Release模式的(因此没有必要将profile设置成Debug模式)。
(4)启动测试(?
l)
(5)后面的步骤请参考前面模拟器部分。
2.处理UIAElement和元素可访问性(Accessibility)
UIAElement层次结构
Accessibility和UIAutomation有密切的联系:
如果一个空间的Accessibility是可以被访问的,你就可以设置和读取它的值,作相关的操作,而当一个控件的Accessibility不可见时,你就没有办法通过automation访问它。
你可以通过InterfaceBuilder,或者通过在程序里设置isAccessibilityElement属性的方式来设置一个控件的Accessibility或者可被自动化。
当你设置containerview(即:
一个视图包含其它的UIKit元素)的accessibility时,你必须注意。
你设置了整个view的accessibility将会“隐藏”它的子视图的accessibility,例如:
在示例项目中,你不能将outlet视图设置成可访问的,否则它的所有子控件都不可能访问了。
在任何时候,logElementTree都是你的忠实的朋友:
它将当前界面的所有可被访问的元素都打印在日志里。
每一个可以被访问的UIKit控件都可以用一个Javascript对象来描述,它就是一个UIAElement。
UIAElement有几个属性:
name、value、elements、parent。
你的窗口包含很多的控件,它们是以UIKit层次的方式定义的,这些UIKit层次结构对应的是UIAElement的层次树。
例如:
前面的测试代码中,通过调用logElementTree,我们可以得到如下面所示的树结构:
+-UIATarget:
name:
iPhoneSimulatorrect:
{{0,0},{320,480}}
|+-UIAApplication:
name:
TestAutomationrect:
{{0,20},{320,460}}
||+-UIAWindow:
rect:
{{0,0},{320,480}}
|||+-UIAStaticText:
name:
FirstViewvalue:
FirstViewrect:
{{54,52},{212,43}}
|||+-UIATextField:
name:
UserTextvalue:
TapSomeTextHere!
rect:
{{20,179},{280,31}}
|||+-UIAStaticText:
name:
Thetextis:
value:
Thetextis:
rect:
{{20,231},{112,21}}
|||+-UIAStaticText:
value:
rect:
{{145,231},{155,21}}
|||+-UIATabBar:
rect:
{{0,431},{320,49}}
||||+-UIAImage:
rect:
{{0,431},{320,49}}
||||+-UIAButton:
name:
Firstvalue:
1rect:
{{2,432},{156,48}}
||||+-UIAButton:
name:
Secondrect:
{{162,432},{156,48}}
你可以通过下面的代码来访问文本框:
vartextField=UIATarget.localTarget().frontMostApp().mainWindow().textFields()[0];
你可以选择通过从0开始的索引或者这个元素的名称来访问这个元素,例如:
你可以通过下面的代码来访问文本控件。
vartextField=UIATarget.localTarget().frontMostApp().mainWindow().textFields()["UserText"];
后面一种方式更加清明了,应该多使用。
你可以通过InterfaceBuilder设置UIAElement的name属性,
或者通过编写代码的方式:
myTextField.accessibilityEnabled=YES;
myTextField.accessibilityLabel=@"UserText";
你现在可以看到,通过accessibility属性可以被UIAutomation用来找到不同的控件。
这非常的清晰,因为,第一,你只要学习一个测试框架;第二,通过编写自动化测试代码,你同时还可以保证你的程序是可以被访问的。
因此,每一个UIAElement对象的子控件可以通过下面的方法进行访问:
buttons(),images(),scrollViews(),textFields(),webViews(),segmentedControls(),sliders(),staticTexts(),switches(),tabBar(),tableViews(),textViews(),toolbar(),toolbars()等等......
你可以通过如下代码在tabbar上访问第一个tab:
vartextField=
UIATarget.localTarget().frontMostApp().mainWindow().textFields()[0];
UIAElement结构层次非常重要,你以后会常常用到它。
而且你还要记住,你可以随时通过调用UIAAplication的logElementTree来获得它的结构。
vartabBar=UIATarget.localTarget().frontMostApp().tabBar();S
在模拟器上,你还可以激活Accessibility的检测器。
启动模拟器,找到“Setting->General>Accessibility>AccessibilityInspector”,然后将它设为“打开”状态。
这个彩色的小框框即使Accessibility检测器了。
当它收起来的时候,Accessibility就被关闭了,当它展开的时候,Accessibility就是打开的。
你只要点击上面的箭头按钮就可以激活或者屏蔽Accessibility。
现在打开我们的示例程序,激活检测器。
然后,点击文本框,检查UIAElement的name和value属性(其实就是accessibilityLabel和accessibilityLabel对应的NSObject类型的值)。
这个检测器可以帮助你调试和编写你的测试代码。
模拟用户操作
让我们更进一步,模拟一些用户的交互操作。
你可以简单地调用按钮的tap()来作一个点击操作:
vartabBar=UIATarget.localTarget().frontMostApp().tabBar();
vartabButton=tabBar.buttons()[¡°First¡±];
//Tapthetabbar!
tabButton.tap();
你还可以调用UIAButtons的doubleTap(),twoFingerTap()。
如果你不想操作具体的某个元素,你也可以根据屏幕上指定的坐标点进行操作,你可以这么用:
●点击:
UIATarget.localTarget().tap({x:
100,y:
200});
UIATarget.localTarget().doubleTap({x:
100,y:
200});
UIATarget.localTarget().twoFingerTap({x:
100,y:
200});
●缩放:
UIATarget.localTarget().pinchOpenFromToForDuration({x:
20,y:
200},{x:
300,y:
200},2);
UIATarget.localTarget().pinchC
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- iOS 自动化 测试 文档