-
写在前面
研究
iOS
的自动化测试也有些日子了,
刚开始的时候,
< br>一直苦于找不到什么好的
资料,只能从
Apple
的官网查阅相关的
API
文档,只可惜,
p>
Apple
对开发者来说
实在是不怎么友好
,文档写得相当的粗略,对于初学者来说有一定的难度。
本来
是打算自己动手写一篇关于
iOS
的
U
I
自动化测试的入门级别的介绍性文档
的,但想起来后面在具体
解决一些问题的时候,收藏一篇很好的
Blog
,很全面
地介绍了如何使用
UIAutomation
的
JavaScript
Libraries
做
iOS
程序的自动化
测试。
如果作者早点看到这篇文章,
应该要少走一些弯路,
这里没有创意性的它
他翻译成中文,希望对你们有一些帮助。
原文地址:
/2012/04/08/ios-
automated-tests-with-
uiautomat
ion
翻译正文:
快速入门
自动化测试代码可以“在你的睡着的时候”很好地帮你测试你的应用程序。
它可
以让你能够快速地跟踪你程序中的回归和性能方面的问题,
这样你就不用
担心你
新增的功能会影响到你之前已经完成开发的程序了。
随
着
iOS
4.0
的发布,
苹果公司同时发布了一个名为
< br>UIAutomation
的测试框架,
它可以用来在真
实设备和
iPhone
模拟器上执行自动化测试。但
官方关于
UIAutomation
的文档相当的有限,在网络上也没有太多的资源可以查找的。本
文将向你展
示你如何将
UIAutomation
整合到你的工
作流程当中去。
作为
基础知识的准备,你可以先看一下苹果公司
关于
UIAutom
ation
的文档
,另
外还有一篇快速
入门的介绍
苹果
Instruments
的文档
也值得看看,
当然,
如果你<
/p>
有一个免费的
Apple
开发者账号的话
,你可以看一下
WWDC 2010 - Session 306
–
使用
In
struments
进行用户界面自动化测试
的幻灯片或者视频
。
除此之外,包括在
Xcode
p>
中的
OCUnit
测试框架也可以用来为你
的应用程序编写
单元测试。
1. <
/p>
第一个
UIAutomation
测试脚
本
使用
iOS
模拟器
?
使用
iOS
设备
?
2.
处理
UIAElement
和元素可访问性(
Accessibility
)
UIAElement
层次结构
?
模拟用户操作
?
3.
经验分享(让你的生活变得更简单)
?
?
?
?
?
类库
Tune-
up
介绍
导入外部脚本
使用强大的命令行
使用录制交互功能
当遇到问题时,加上“(1);”
4.
高级交互
处理非预期和预期的提示框(
alerts
)
?
多任务
?
屏幕方向
?
5.
总结
有用的链接
?
一个视频
?
1.
你
的第一个
UIAutomation
测试脚本
< br>
UIAutomation
的功能测试代码是用
Javascript
编写的。
UIAuto
mation
和
Accessibility
< br>有着直接的关系,你将用到通过标签和值的访问性来获得
UI
元
素,同时完成相应的交互操作。
下面让我们来编写我们的第一段测试代码。
< br>使用
iOS
模拟器
1.
下载示例应用程序
roj
,并打开它。这个项目是一个
很简单的包含
2
个
tab
的
t
abbar
应用程序。
2.
确保选中如下图所示的“TestAutomation
>
iPhone
5.0
Simula
tor”模式
(或
许你已经切换成
5.
1
了,因此它可能是
iPhone5.1
模拟器)。
3.
启动
Instruments(Product > Prof
ile)
,或者通过
?
I
。
4.
选择左边的
iOS Simulator
,然后再选择
Automation
模板,然后点击
“Profile”。
5.
Instruments
就已经
启动好后,然后直接开始录制了。这里先停止录制,
(红
包按钮
或者
?
R
)。
6.
在左边的
Scripts
窗口,点击“Add >
Create”创建新的脚本。
7.
在脚本编辑器里,输入下面的代码
?
1
vartarget = arget();
2
varapp = ostApp();
3
varwindow = ndow();
4
mentTree();
8. <
/p>
重新运行这段脚本
?
R
< br>(不需要保存)。脚本跑起来后,你可以在日志打完后
停止它。
< br>
赞一个!我们就这样完成了我们的第一个
UIAutomation
测试用例。
使用
iOS
设备
p>
你除了将你的测试用例运行模拟器上,
也可以将它运行在一个真实的
设备上。
不
过,自动化测试用例只能运行在支持多任务的:
p>
iPhone 3GS
,
iPad
,
iOS >
4.0
等设备上。遗憾的是不管
iPhone
3G
的系统版本是什么,都不支持。
下面是如何操作:
1.
通过
USB
接口连接上你的
iPhone
。
2.
选择
“TestAutomation > iOS
Device”模式。
3.
确保
Developper
prof
ile
设置成
Release
模式
p>
(而不是
Ad-Hoc
Distribution
profile
< br>)。默认情况下,
profiling
是设置成
Release
模式的(因为没有必要
将
profile
设置成
Debug
模式)。
4.
启动测试
(
?
I)
5.
后面的步骤请参考前面模拟器部分。
2.
处理
UIAElement
和元素可访问性(
Accessibil
ity
)
UIAElement
层次结构
p>
Accessibility
和
UIAut
omation
有密切的联系:
如果一个控件的
Accessibility
是可以被访问的,
你就可
以设置和读取它的值,
作相关的操作,
而当一个控件的
Accessibility
不可见时,你就没有办法通过
automation
访问它。
你可以通过
Interface Builder
,或者通过在程序里设置
isAccessibilityElement<
/p>
属性的方式来设置一个控件的
Accessibility
或者可
被自动
化。当你设置
container view
< br>(即:一个视图包含其它的
UIKit
元素)
的
accessibility
时,你必须注意。
你设置了整个
View
的
access
ibility
将会
“隐藏”它的子
视图的
accessibility
,
例如:
在示例项目中,
你不能将
out
let
视图设置成可访问的,否则它所有的子控件将都不可以访问了。
< br>
在任何时候,
logElementTree
都是你忠实的朋友:它将当前界面的所有可被访问的元素都打
印在日志里
。
每一个可以被访问的
UIKit<
/p>
控件都可以用一个
Javascript
对象来描述,它就是
一个
UIAElement
。
UIAElement
有几个属
性:
name,
value,
elements,
parent
。
你的主窗口包含很多的控件,它们是以
UIKit
层次的方式定义的,这些
UIKit
层次结构对应的
是
UIAElement
的层次树。
例
如:
前
面的测试代码中,
通过调用
logElementTree
,我们可
以得到如下面所示的树结构:
-
-
-
-
-
-
-
-
-
上一篇:ANSYS模型导入ABAQUS
下一篇:有限元分析系统的发展现状与展望外文翻译