(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. createDocumentFragment 文档碎片提升dom增删的性能

    原理: 操作dom会使得页面进行重新渲染,如果 经常性的对dom就行操作或者一次性操作dom较多,每一次操作都会使页面进行重新渲染,降低页面加载性能. 针对IE9以下,可以使用文档碎片(documen ...

  2. android提权漏洞CVE-2010-EASY修复【转】

    本文转载自: http://blog.csdn.net/lhj0711010212/article/details/9351131 android提权漏洞CVE-2010-EASY修复   linux ...

  3. zoj 1109 Language of FatMouse 解题报告

    题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=109 题目意思:给出一个mouse-english词典,问对于输入的m ...

  4. 转:Oracle客户端NLS_LANG参数的设置详解

    原文:http://database.51cto.com/art/201107/279361.htm 我们知道,Oracle客户端语言支持可以通过NLS_LANG参数的设置来完成,不同的系统平台上NL ...

  5. HDU - 1269 迷宫城堡(有向图的强连通分量)

    d.看一个图是不是强连通图 s.求出强连通分量,看看有没有一个强连通分量包含所有点. c.Tarjan /* Tarjan算法 复杂度O(N+M) */ #include<iostream> ...

  6. IOS中延时执行方式

    本文列举了四种延时执行某函数的方法及其一些区别.假如延时1秒时间执行下面的方法. - (void)delayMethod { NSLog(@"execute"); } 1.perf ...

  7. I.MX6 AW-NB177NF WIFI 驱动移植问题

    /******************************************************************************** * I.MX6 AW-NB177NF ...

  8. MYSQL数据库学习----查询

    查询语句是MYSQL数据库中用到的最多的语句. 查询语句分为几种 单表查询 集合函数查询 连接查询 子查询 合并查询 正则表达式查询 一:单表查询 SELECT 属性 FROM 表名 [WHERE 查 ...

  9. c/c++内存机制(一)(原)

    一:C语言中的内存机制 在C语言中,内存主要分为如下5个存储区: (1)栈(Stack):位于函数内的局部变量(包括函数实参),由编译器负责分配释放,函数结束,栈变量失效. (2)堆(Heap):由程 ...

  10. vs code 代码格式化

    1.打开vs code > 文件 > 首选项 > 设置 > 将下面一段粘贴在右侧即可 // Place your settings in this file to overwr ...