iOS 测试 UI Testing In Xcode7 —— WWDC2015 中提到的 UI 测试工具介绍

大东 · 2015年06月14日 · 最后由 guris_xie 回复于 2016年04月26日 · 3390 次阅读

About《UI Testing In Xcode7》

不知道各位有没关注本周的 WWDC2015,在头几天的大会中,苹果提出了一个全新的基于 Xcode7 的 UI 测试工具。

这个工具貌似没特定的名字,就叫 UI Testing In Xcode7,它是在新版本的 Xcode 当中引入的一个基于 XCTest 框架的 UI 测试工具,那么如果你熟悉 XCTest 框架的话,你肯定很快就能够上手了,因为这个工具所使用的测试类、断言方法等都是基于 XCTest 延展并做了优化,所以说,XCTest 的特性它都继承了,而且能够做得更好。

PS:对于 XCTest Framwork 不了解的同学我估计还是占大部分,毕竟这个框架一直是被定位为开发人员使用的单元测试框架,而且在 Swift 出来之前,也只能使用 objective-C 来做,对于初级的测试人员入门门槛是略高的。
有兴趣的同志可以去读一下官方文档了解一下该框架:XCTest 使用手册

由于升级 OSX10.11 的时候卡住了=。=所以我还没来得及实践。
从官方演示的 DEMO 来看,很强大:
强交互的脚本录制->XCTest 框架->层级元素定位/Accessibility 定位->easy 断点调试->完整的 Report

在这里先给大家介绍一下这个工具的特性。

环境要求

从介绍中来看,目前该工具不但要使用最新的 Xcode7 以外,你的操作系统也必须是要最新的 OS X 10.11 版本,也就是说你必须先将你的机器升级,所以想要提前体验一下这款工具的同学,勇敢得上吧。OS X 10.11 镜像下载

悲剧的是,我今天在将镜像写入 U 盘的时候出错了,U 盘貌似废了,明天出去买一个...

然后还有一点,该工具仅支持运行在 iOS9 上。

所以重点就是:
1、请升级 Xcode 到 7(自带 iOS9 的 SDK);
2、请将系统升级到 OSX 10.11;

工具特性

1、基于 Xcode7 & XCTest Framewrok

完整的测试框架,并拓展了 3 个 API 辅助自动化执行和元素定位;
super 效率的断点调试;

2、分别支持使用 Objective-C、Swift 编写脚本
3、引入 Accessibility 来辅助元素定位,让 UI 测试更加完善,并且专门提供了 Accessibility Inspector;

Accessibility 这个概念从本次议题开始到结束提到多次,在展示 demo 的时候也重点讲解了 accessibility 在 UI 自动化当中的运用。而且在本次 WWDC2015 中,还有一个议题是《iOS Accessibility》,所以从苹果的态度上可以看出,Accessibility 将会是之后重点推动开发者去使用的属性,有了 Accessibility,将会大大降低了我们在做 UI 自动化的难度,恒温有发过一篇关于 android 的 accessibility 的文章,与 iOS 是相似的,可以了解学习一下。

4、自带 UI Recording Tool

Xcode7 提供的脚本录制工具非常得精准智能,交互性非常强,录制开启的时候,你的每一次操作,录制工具都会在 Xcode 上同步生成代码。包括你输入文字的时候,你输入的每个字母都是同步记录,删除文字也是。

日志与报告

看到这个东西的日志我惊呆了,在最终的运行报告界面,我们可以得到如下信息:
1、所有成功和失败的用例,分别是用绿色和红色标注;
2、用例失败的原因与截图;
3、用例执行的每一个步骤描述;
3、运行过程中收集的性能指标信息;

Summary

总得来说,无论是从介绍还是从 demo 演示上来看,我认为这一款工具会成为 iOS 自动化测试的主流工具,就如同 iOS9 迟早会成为主流一样。
xcode、XCTestFramework、OC/Swift 都是基本,你掌握了多少?

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
共收到 14 条回复 时间 点赞

除了 XCTestFramework,其他都完美掌握,一切都不是问题。唯一的疑问就是这项工作会交给测试来做吗?

#1 楼 @pighero001 我了个去,完美掌握,哥们是开发 iOS 的吧
这个确实就是让开发做 UI 测试更容易的一个工具,开发不做那只能测试做了,国内大多都这个情况,开发的哥们说,我理 feature 都理不过来了,哪来时间给你单元测试。【说得好像单元测试是测试的活一样。

#1 楼 @pighero001 完美掌握。。。。。

XCTEST 开发都不会做也不愿意做的飘过。。。

#2 楼 @anikikun 遇到同类型的开发法顶一个,不过人家说的更狠,说我开发的价值比你测试大,我们做单元测试是浪费。

弱弱的问一句,这个和 appium 不冲突吗?

#3 楼 @monkey
#2 楼 @anikikun 额,看来都没看过段子啊,完美掌握=完全没掌握。。。哈哈

@pighero001 不错,速度挺快,求知欲很强啊。

虽然我们这里的 ios 开发貌似真的很少做单元,测试表示对于 XCTest 苦手,不过 UI Testing 还是值得期待的,另外 xcode 7 ios 9 支持免证调试也对于以后做测试好处多多

大东 #10 · 2015年06月25日 Author

#5 楼 @doctorq 哈哈哈

#6 楼 @oscar 不冲突啊...完全分开的两个东西,而且 UI Testing 就是项目里的一个 target,跟项目走的

不知道你们在做 IOS 测试中又没有遇到如果页面信息量变大的时候例如由 10 张图片 扩充到 1000 张 这时候去点击其中一张图片 appium post 请求会返回直接返回 500 并且会出现咔核 挂起的现象, 知道点击没有任何的反应, 再次重新加载页面数据.

你们好像 研究的都是 ios 怎么去启动这些简单的应用程式,我描述的问题不知道是 app 的问题, 还是 Appium 对处理大数据量的时候存在缺陷. 当我点击一个相册只有 10 张相片的其中一张, 反应时间会在 30 秒内, 当我加大图片数量, 变到 500 这时候响应时间在 100s 左右, 知道加到 1000 张 导致点击图片无效。

mark 一下

有人知道怎么通过 xctest 截图吗?找了好久没找到 api....

恒温 UI Testing in Xcode 7 revised 中提及了此贴 11月21日 19:18
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册