zoukankan      html  css  js  c++  java
  • 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,基本操作顺序如下:

    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。

  • 相关阅读:
    rmq +二分暴力 hdu 5726
    8.25 ccpc 比赛总结
    莫比乌斯反演题目总结
    HDU 4848 Wow! Such Conquering! (搜索+floyd)
    Codeforces 982 C Cut 'em all!(DFS)
    Codefoces 986C AND Graph(DFS)
    CodeForces 986A Fair(BFS)
    ACM经验贴
    Kattis A+B Problem(FFT)
    CF E. Porcelain (双向dp)
  • 原文地址:https://www.cnblogs.com/luerniu/p/6393055.html
Copyright © 2011-2022 走看看