1. UI Tests简介
(1) User Interface Testing
UI Testing库主要提供了与App中的UI元素进行查找和交互的能力,这使得我们可以通过验证UI元素的状态来测试App是否正常运行。
UI Testing可以通过录制开发者的操作自动生成代码,你可以基于这些生成的代码进行改进完善测试,这使得我们可以快速的完成UI测试。
测试报告主要记载了UI Tests的相信信息,包括了测试失败时候的截图。
UI Tests依靠了2个核心技术:XCTest 和 Accessibility
- XCTest一款集成在Xcode中的框架,提供了测试UI的能力。开发者可以创建一个UI Test
Target,同时会在开发者的项目中生成UI Test类。开发者可以使用XCTest
assertion(断言)进行验证输出是否符合预期。XCTest使用Objective-C和Swift都能进行开发。 - Accessibility是可以使残疾人获得和其他用户一样的关于iOS和OS
X的丰富经验。它包含了一系列语义数据,开发者可以使用这些数据去引导新用户们使用方法。Accessibility集成在UIKit和AppKit中,其API可以使你去微调用户操作。当然这些操作是用户可见的,UI
Testing是使用数据去执行它的功能的。、
创建UI Tests和创建UI Unit Tests的方式类似,首先在你的App中创建UI Test
Target,创建之后,Xcode会在你的工程中自动生成一个文件夹(Group),里面会生成一个样例模版类。当你创建了UI Test
target,你就可以告诉你的App,你的测试数据在什么位置。
UI Testing通过查询app中的UI对象进行工作,生成消息事件,发送给这些UI对象。你可以通过丰富的API去检查UI对象的Property和state,比较他们是否和预期的一致。
(2) Requirements
UI testing 依赖的Services和APIs不是集成在OS平台上的。你需要Xcode 7, OS X 10.11 EI Capitan and iOS(or later version)。UI Test保护以下权限:
- iPhone真机需要连接到一个信任的PC。
- OS X需要给a special Xcode helper app权限。当你在第一次使用UI Tests的时候会自动完成这个授权。
(3) Concepts And APIs
UI Testing和Unit testing在基本的环境上有差异:Unit testing可以使你在app的范围内训练函数和方法的同时,你可以拥有App中所有变量的访问权限。UI Testing在训练函数和方法的时候没有App中内部方法、函数、变量的访问权限。这使得开发者的环境和真正拥护操作的环境相同,这这中环境中用户可能遇到的问题。
你的测试代码会在另外的进程运行,向UI传递消息的API包括以下:
- XCUIApplication
- XCUIElement
- XCUIElementQuery
(4) Get Started With UI Recording
开始UI录制,系统会根据你的操作生成源码。这些源码是可以编辑的,也可以用来重现一个特定的用户操作。UI录制也可以用来寻找新的UI和学习如何使用UI Test,基本操作顺序如下:
- 使用Xcode创建一个UI Testing Target
- 在生成的模版文件中,将光标放在测试函数中
- 开始UI录制,在APP运行起来之后,执行想要的操作,Xcode会捕获这些操作并在函数体内生成源码。
(5) Writing UI Tests
API 测试有功能测试和显示测试,所以UI Tests也一样。UI Tests在App的外部进行操作,集成了许多用户能看到和操作的基础功能。
UI Tests基本操作:
- 查询一个元素(Element)
- 根据参考,了解元素预期的操作
- 点击了一个元素使其产生响应
- 评测这个结果是否符合预期
用XCTest创建的UI Tests是对Unit Tests的一个扩展。 操作的方式很类似,编程的方法也大致相同。不同的方面已经在上面提及过了。
在Test的类中含有一个SetUp方法,和Unit Tests的SetUp方法有两处不同。
self.continueAfterFailure的默认值是NO,创建了一个XCUIApplication,并Launch。
编写UI Tests的大致模式如下:
- 使用XCUIElementQuery查找XCUIElement
- 传递消息给XCUIElement
- 使用断言去比较XCUIElement的状态是否和预期的一致
如果要创建一次UI Test行为,包涵了一系列可以重复的UI操作,可以看Writing Performance Tests。
1. UI Tests简介的更多相关文章
- 使用命令行工具运行Xcode 7 UI Tests
原文:Run Xcode 7 UI Tests from the command line 苹果在Xcode 7中引入了一项新技术UI Tests,允许开发者使用Swift或Objective C代码 ...
- iOS9 UI Tests探索笔记
UI Tests是什么? UI Tests是一个自动测试UI与交互的Testing组件 UI Tests有什么用? 它可以通过编写代码.或者是记录开发者的操作过程并代码化,来实现自动点击某个按钮.视图 ...
- amaze ui使用简介
amaze ui使用简介 amaze UI 类似于bootstrap 不过比bootstrap更加轻量级 可以用来开发响应式网站,并且是移动优先的,针对移动设备开发的网站可以考虑使用这个框架 css中 ...
- Android 程序目录及UI的简介
Android程序的目录结构 src:源码的组织管理目录. gen:自动生成的目录,会生成一些重要的文件,如R.java,该目录一般不需要我们编写. assets:该目录文件不会被编译成二进制编码,多 ...
- Android ActivityThread(主线程或UI线程)简介
1. ActivityThread功能 它管理应用进程的主线程的执行(相当于普通Java程序的main入口函数),并根据AMS的要求(通过IApplicationThread接口,AMS为Client ...
- UI Automation 简介
转载,源地址: http://blog.csdn.net/ffeiffei/article/details/6637418 MS UI Automation(Microsoft User Interf ...
- Android UI -- 内容简介
Android UI(User Interface) 是android学习的必要课程,在接下来的内容我们将主要介绍 Android UI 的基础知识.
- UI自动化测试简介及Selenium工具的介绍和环境搭建
自动化测试简介 1.1何为自动化测试? 是把以人为驱动的测试转化为机器执行的一种过程,它是一种以程序测试程序的过程.换言之,就是以程序实现的方式来代替手工测试. 1.2自动化测试分类 分为功能自动化测 ...
- 课堂笔记及知识点----UI框架简介(2018/10/25)
UI框架学习目标: 要知道怎样套用的! 框架里面的基本执行流程 怎样开始执行(配置文件) 怎么套用 最主要的三个脚本: (也是多态的体现之一) 1).BaseUI: 作用-->提供UI能够使用的 ...
随机推荐
- YTU 2392: 求各位数字之和
2392: 求各位数字之和 时间限制: 1 Sec 内存限制: 128 MB 提交: 1253 解决: 292 题目描述 编写一个程序,计算任意输入的正整数的各位数字之和.(输入的位数不要超过10 ...
- re(正则表达式)模块
一.最常用的匹配语法 re.match 从头开始匹配 re.search 匹配包含 re.findall 把所有匹配到的字符放到以列表中的元素返回 re.split 以匹配到的字符当做列表分隔符 r ...
- skynet源码阅读<7>--死循环检测
在使用skynet开发时,你也许会碰到类似这样的警告:A message from [ :0100000f ] to [ :0100000a ] maybe in an endless loop (v ...
- UVA-11054(扫描法)
题意: n个等距村庄,每个村庄要么买酒要么卖酒,把k个单位的酒运到相邻村庄去需要k个单位的劳动力,问最少需要多少劳动力才能满足所有的村庄的要求; 思路: 上次做了一个环的,这个是直线的,就是一个大水题 ...
- codeforces 690D2 D2. The Wall (medium)(组合数学)
题目链接: D2. The Wall (medium) time limit per test 2 seconds memory limit per test 256 megabytes input ...
- CQOI2013 新数独
传送门 这道题也是很暴力的搜索啊…… 因为数独一开始全是空的,只有许许多多的大小限制条件,那也没必要纠结从哪开始搜索了,直接暴力搜索之后判断一下是否合法. 这题最恶心的是读入.现学了一招判断点在哪个块 ...
- 棋盘问题(dp)
棋盘问题 传送门 题目描述 在一个给定形状的棋盘(形状可能是不规则的)上面摆放棋子,棋子没有区别.要求摆放时任意的两个棋子不能放在棋盘中的同一行或者同一列,请编程求解对于给定形状和大小的棋盘,摆放k个 ...
- 最浅谈的SG函数
[更新] Nim游戏的经验: 每次最多取m个——%(m+1) 阶梯nim——奇数位无视,看偶数位互相独立,成一堆一堆的石子 . . . . 既然被征召去汇总算法..那么挑个简单点的SG函数好了.. 介 ...
- Watir: Watir-WebDriver对富文本编辑器的定位于Watir是不一致的。
Watir对富文本编辑,一般可以采用b.frame().document.body.innerText = "Value you want to insert"但是Watir-We ...
- label标签的可访问性
与表单元素关联的方法(IE6下label标签包裹控件的方法是不顶用的): 1 使用for和id关联控件 <p><label for="test">标签< ...