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能够使用的 ...
随机推荐
- 使用a标签下载文件,而不是直接打开,使用属性 download
有的时候,下载的链接文件如果是普通文件类型,如txt,我们下载文件的时候,有的浏览器不会弹出下载框,.而是直接打开了该文件. 针对这种情况,我们只需要在a标签上加上download属性即可显示下载框. ...
- 多态、抽象类、接口、区别(java基础知识九)
1.多态的概述以及代码体现 * A:多态概述 * 事物存在的多种形态 * B:多态前提 * a:要有继承关系. * 一个类是父类,一个类是子类 * b:要有方法重写. * c:要有父类引用指向子类对象 ...
- [Selenium] 测试机器上安装了多个Firefox,如何指定运行哪一个?
可通过FirefoxBinary 来指定运行某个路径下的Firefox, 示例代码如下: public class testFirefoxBinary{ public static void main ...
- 理解iOS Event Handling
写在前面 最近的一个iOS App项目中遇到了这么问题:通过App访问服务器的大多数资源不需要登录,但是访问某些资源是需要用户提供验证的,一般来说,通常App的做法(譬如美团App)将这些资源放在“我 ...
- angularjs 获得当前元素属性
先用 console.log(this)查看下当前被点击元素的 this 属性,然后可以看见里面有个$index属性,该属性指向的就是DOM元素列表中当前被点击的那个DOM的下标,只需要使用this. ...
- Servlet3.0之九:web模块化
一.使用web-fragment.xml 在Servlet 3.0中,可以使用标注来设置Servlet的相关信息.实际上,Web容器并不仅读取/WEB-INF/classes中的Servlet标注信息 ...
- 创建纯文本Banner
场景: 最近再学习Spring Boot的过程中,想要自定义一个Banner,就是再工程启动是输出的那个文本图案,但是自己拼写既麻烦又不好看,所以找到一个工具,自动输出文字代表的纯文本Banner,例 ...
- 4、html的body内标签之input系列
一.input标签与form表单 <!DOCTYPE html> <html lang="en"> <head> <meta charse ...
- ORACLE PL/SQL 实例精解之第一章 PL/SQL概念
1.传统一层一层传数据,而PLSQL作为独立的单元返回客户端,减少查询,减少网路传输的往返,高效 2.PL/SQL语句块 分为两种:命名(子程序,函数,包保存在数据库中,后期可以根据名称进行引用),匿 ...
- STL - merge()
merge用来对两个有序容器进行合并.返回合并后存入容器中的元素的下一个位置的迭代器(可以认为是超尾). merge(v1.first(),v1.end(),v2.first(),v2.end(),r ...