内容简介:目前已经有 QQ、今日头条、兴趣部落、NOW直播等几十款 App 接入以往的工作流程是:
TBUIAutoTest 可以帮开发人员生成UI 控件的标签,便于自动化测试。只需一行代码或一个配置,几乎所有的 iOS Native UI 都会在运行时生成一个页面内唯一且不变的标签。不仅节省了开发人员手动为每个 UI 控件加标签的时间,也节省了测试人员与开发人员的沟通成本。
应用场景
目前已经有 QQ、今日头条、兴趣部落、NOW直播等几十款 App 接入 TBUIAutoTest 。阿里系自动化测试开源框架 Macaca 也在使用此方案,服务阿里多款 App。
以往的工作流程是:
- 测试同学梳理出需要加标签的 UI 控件,通过截图标注给开发同学。
- 开发同学按照标注,给相应的 UI 控件手写代码添加标签。(花时间起唯一的标签名,增加安装包体积)
- 测试同学使用 工具 抓取控件树,查看控件标签,编写脚本。
如果使用 TBUIAutoTest ,只需要简化成一个步骤:
- 测试同学使用工具抓取控件树,查看控件标签,编写脚本。
而且几乎是 一劳永逸 的,后续新增的代码也会在运行时生成标签, 以不变应万变 !
近些年苹果的自动化测试框架经历过一些变化,但是始终是使用无障碍化相关的 API 来获取控件树和标签。
实现的思路和原理: 为 UIAutomation 添加自动化测试标签的探索
集成方式
手动拖拽文件
将 TBUIAutoTest 文件夹内的所有文件加入到工程中即可。
TBUIAutoTest.h TBUIAutoTest.m UIImage+TBUIAutoTest.h UIImage+TBUIAutoTest.m UIResponder+TBUIAutoTest.h UIResponder+TBUIAutoTest.m UIView+TBUIAutoTest.h UIView+TBUIAutoTest.m
CocoaPods
首先要安装 CocoaPods:
gem install cocoapods
在 Podfile
中添加 TBUIAutoTest。需要将 “MyApp” 替换成自己的名字:
source 'https://github.com/CocoaPods/Specs.git' platform :ios, '6.0' use_frameworks! target 'MyApp' do pod 'TBUIAutoTest' end
最后需要运行下面的命令行安装下:
pod install
Carthage
首先要通过 homebrew 安装 Carthage:
brew update brew install carthage
然后在 Cartfile
文件中添加
github "yulingtianxia/TBUIAutoTest"
运行 carthage update
命令来获取 TBUIAutoTest.framework
,将其拖拽到工程中使用即可。
使用方法
kAutoTestUITurnOnKey kAutoTestUILongPressKey
TBUIAutoTest
会在 + load
方法中从 NSUserDefaults
中读取 kAutoTestUITurnOnKey
和 kAutoTestUILongPressKey
的值。所以在设置这两个 Key 之后,一般需要下次启动 App 才生效。这里推荐拉一条自动化测试专用分支,通过宏控制在 App 启动更早的时机设置这两个 Key。
extern NSString * const kAutoTestUITurnOnKey; extern NSString * const kAutoTestUILongPressKey; [NSUserDefaults.standardUserDefaults setBool:YES forKey:kAutoTestUITurnOnKey]; [NSUserDefaults.standardUserDefaults setBool:YES forKey:kAutoTestUILongPressKey];
注意事项
系统一些自带的 UI 控件的 isAccessibilityElement
属性默认是 YES
,但是如果想让自定义的 UI 控件能够被捕获,需要手动将其设为 YES
。除此之外还有一些容器控件之间的嵌套场景,需要在容器类中实现 UIAccessibilityContainer
,这样才能捕获到容器控件内的子视图。最简单的一种实现如下:
#pragma mark - UIAccessibilityContainer #ifdef AUTO_TEST_ENV -(BOOL)isAccessibilityElement { return NO; } - (NSInteger)accessibilityElementCount { return [[self subviews] count]; } - (id)accessibilityElementAtIndex:(NSInteger)index { return [[self subviews] objectAtIndex:index]; } - (NSInteger)indexOfAccessibilityElement:(id)element { return [[self subviews] indexOfObject:element]; } #endif
对于那种绘制上去的 UI,但非使用原生 UI 控件的场景,就需要自己创建 UIAccessibilityElement
对象,并手动设置标签了。这部分其实都是 App 无障碍化的知识,具体细节可以参考苹果官方文档: https://developer.apple.com/documentation/uikit/accessibility/uiaccessibilitycontainer?language=objc
以上所述就是小编给大家介绍的《iOS 自动化测试标签生成工具接入指南》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- 云转码接入视频网站解决方案 express-ffmpeg接入discuz方案
- 数据接入治理平台
- 【Netty】如何接入新连接
- 有赞统一接入层架构演进
- Bytom矿池接入协议指南
- 谈谈业务容器化 ———— 降低接入成本
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Unity游戏设计与实现
[日]加藤政树 / 罗水东 / 人民邮电出版社 / 2015-2 / 79.00元
本书出自日本知名游戏公司万代南梦宫的资深开发人员之手,面向初级游戏开发人员,通过10个不同类型的游戏实例,展示了真正的游戏设计和实现过程。本书的重点并不在于讲解Unity的各种功能细节,而在于核心玩法的设计和实现思路。每个实例都从一个idea 开始,不断丰富,自然而然地推出各种概念,引导读者思考必要的数据结构和编程方法。掌握了这些思路,即便换成另外一种引擎,也可以轻松地开发出同类型的游戏。 ......一起来看看 《Unity游戏设计与实现》 这本书的介绍吧!