(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,基本操作顺序如下:

  1. 使用Xcode创建一个UI Testing Target
  2. 在生成的模版文件中,将光标放在测试函数中
  3. 开始UI录制,在APP运行起来之后,执行想要的操作,Xcode会捕获这些操作并在函数体内生成源码。

(5) Writing UI Tests

API 测试有功能测试和显示测试,所以UI Tests也一样。UI Tests在App的外部进行操作,集成了许多用户能看到和操作的基础功能。
     UI Tests基本操作:

  1. 查询一个元素(Element)
  2. 根据参考,了解元素预期的操作
  3. 点击了一个元素使其产生响应
  4. 评测这个结果是否符合预期

用XCTest创建的UI Tests是对Unit Tests的一个扩展。 操作的方式很类似,编程的方法也大致相同。不同的方面已经在上面提及过了。
     在Test的类中含有一个SetUp方法,和Unit Tests的SetUp方法有两处不同。

self.continueAfterFailure的默认值是NO,创建了一个XCUIApplication,并Launch。
编写UI Tests的大致模式如下:

  1. 使用XCUIElementQuery查找XCUIElement
  2. 传递消息给XCUIElement
  3. 使用断言去比较XCUIElement的状态是否和预期的一致

如果要创建一次UI Test行为,包涵了一系列可以重复的UI操作,可以看Writing Performance Tests。

1. UI Tests简介的更多相关文章

  1. 使用命令行工具运行Xcode 7 UI Tests

    原文:Run Xcode 7 UI Tests from the command line 苹果在Xcode 7中引入了一项新技术UI Tests,允许开发者使用Swift或Objective C代码 ...

  2. iOS9 UI Tests探索笔记

    UI Tests是什么? UI Tests是一个自动测试UI与交互的Testing组件 UI Tests有什么用? 它可以通过编写代码.或者是记录开发者的操作过程并代码化,来实现自动点击某个按钮.视图 ...

  3. amaze ui使用简介

    amaze ui使用简介 amaze UI 类似于bootstrap 不过比bootstrap更加轻量级 可以用来开发响应式网站,并且是移动优先的,针对移动设备开发的网站可以考虑使用这个框架 css中 ...

  4. Android 程序目录及UI的简介

    Android程序的目录结构 src:源码的组织管理目录. gen:自动生成的目录,会生成一些重要的文件,如R.java,该目录一般不需要我们编写. assets:该目录文件不会被编译成二进制编码,多 ...

  5. Android ActivityThread(主线程或UI线程)简介

    1. ActivityThread功能 它管理应用进程的主线程的执行(相当于普通Java程序的main入口函数),并根据AMS的要求(通过IApplicationThread接口,AMS为Client ...

  6. UI Automation 简介

    转载,源地址: http://blog.csdn.net/ffeiffei/article/details/6637418 MS UI Automation(Microsoft User Interf ...

  7. Android UI -- 内容简介

    Android UI(User Interface) 是android学习的必要课程,在接下来的内容我们将主要介绍 Android UI 的基础知识.

  8. UI自动化测试简介及Selenium工具的介绍和环境搭建

    自动化测试简介 1.1何为自动化测试? 是把以人为驱动的测试转化为机器执行的一种过程,它是一种以程序测试程序的过程.换言之,就是以程序实现的方式来代替手工测试. 1.2自动化测试分类 分为功能自动化测 ...

  9. 课堂笔记及知识点----UI框架简介(2018/10/25)

    UI框架学习目标: 要知道怎样套用的! 框架里面的基本执行流程 怎样开始执行(配置文件) 怎么套用 最主要的三个脚本: (也是多态的体现之一) 1).BaseUI: 作用-->提供UI能够使用的 ...

随机推荐

  1. YTU 2392: 求各位数字之和

    2392: 求各位数字之和 时间限制: 1 Sec  内存限制: 128 MB 提交: 1253  解决: 292 题目描述 编写一个程序,计算任意输入的正整数的各位数字之和.(输入的位数不要超过10 ...

  2. re(正则表达式)模块

    一.最常用的匹配语法 re.match 从头开始匹配 re.search 匹配包含 re.findall 把所有匹配到的字符放到以列表中的元素返回 re.split  以匹配到的字符当做列表分隔符 r ...

  3. skynet源码阅读<7>--死循环检测

    在使用skynet开发时,你也许会碰到类似这样的警告:A message from [ :0100000f ] to [ :0100000a ] maybe in an endless loop (v ...

  4. UVA-11054(扫描法)

    题意: n个等距村庄,每个村庄要么买酒要么卖酒,把k个单位的酒运到相邻村庄去需要k个单位的劳动力,问最少需要多少劳动力才能满足所有的村庄的要求; 思路: 上次做了一个环的,这个是直线的,就是一个大水题 ...

  5. codeforces 690D2 D2. The Wall (medium)(组合数学)

    题目链接: D2. The Wall (medium) time limit per test 2 seconds memory limit per test 256 megabytes input ...

  6. CQOI2013 新数独

    传送门 这道题也是很暴力的搜索啊…… 因为数独一开始全是空的,只有许许多多的大小限制条件,那也没必要纠结从哪开始搜索了,直接暴力搜索之后判断一下是否合法. 这题最恶心的是读入.现学了一招判断点在哪个块 ...

  7. 棋盘问题(dp)

    棋盘问题 传送门 题目描述 在一个给定形状的棋盘(形状可能是不规则的)上面摆放棋子,棋子没有区别.要求摆放时任意的两个棋子不能放在棋盘中的同一行或者同一列,请编程求解对于给定形状和大小的棋盘,摆放k个 ...

  8. 最浅谈的SG函数

    [更新] Nim游戏的经验: 每次最多取m个——%(m+1) 阶梯nim——奇数位无视,看偶数位互相独立,成一堆一堆的石子 . . . . 既然被征召去汇总算法..那么挑个简单点的SG函数好了.. 介 ...

  9. Watir: Watir-WebDriver对富文本编辑器的定位于Watir是不一致的。

    Watir对富文本编辑,一般可以采用b.frame().document.body.innerText = "Value you want to insert"但是Watir-We ...

  10. label标签的可访问性

    与表单元素关联的方法(IE6下label标签包裹控件的方法是不顶用的): 1 使用for和id关联控件 <p><label for="test">标签< ...