xcode server 实现 ios 移动应用自动化测试与集成

上传人:ji****en 文档编号:107684385 上传时间:2019-10-20 格式:PDF 页数:46 大小:2.78MB
返回 下载 相关 举报
xcode server 实现 ios 移动应用自动化测试与集成_第1页
第1页 / 共46页
xcode server 实现 ios 移动应用自动化测试与集成_第2页
第2页 / 共46页
xcode server 实现 ios 移动应用自动化测试与集成_第3页
第3页 / 共46页
xcode server 实现 ios 移动应用自动化测试与集成_第4页
第4页 / 共46页
xcode server 实现 ios 移动应用自动化测试与集成_第5页
第5页 / 共46页
点击查看更多>>
资源描述

《xcode server 实现 ios 移动应用自动化测试与集成》由会员分享,可在线阅读,更多相关《xcode server 实现 ios 移动应用自动化测试与集成(46页珍藏版)》请在金锄头文库上搜索。

1、移动应用自动化测试 移动应用测试面临的挑战 2 ?! ?! ?! ?! 自动化测试 ? 适用场合 - 对软件或模块有较高质量的要求 - 需求变动不频繁的软件:测试脚本的稳定性决定了自动化测试的维护成本 - 软件生命周期足够长:自动化测试需求的确定、自动化测试框架的设计、测试 脚本的编写与调试均需要相当长的时间来完成 - 回归测试要求高的产品:自动化测试脚本可重复使用 - 手工测试无法完成:性能测试、配置测试、大数据量输入测试等 ? 移动应用自动化测试 - Android:Robotium - 基于Android Instrumentation 的一个扩展 - iOS:XCTest,UIAuto

2、mation, Xcode Server - Hybrid Apps: Native App 及 Mobile Web App 基于 iOS UIAutomation, Android Automator 3 基于 Robotium的测试架构 4 ? 采用Robotium一种通过InstrumentationTestRunner来完成Android交互式测试的架构,它横跨多 个 activities,支持功能测试,系统测试和验收测试。 ? Robotium支持Activities、Dialogs、Toasts、Menus、 Context Menus,并且它可以同Maven和 Ant集成来完成

3、持续集成测试 自动化测试与持续集成要素 ? 测试用例定义 - 单元测试 - 界面测试 ? 测试用例及代码管理 - 与 svn 或 git 集成 ? 自动化测试引擎或平台 - 定义自动化测试策略、范围、方式等 ? 自动化测试报告反馈 - 通过工具、邮件、Web 查看自动化测试结果 5 iOS 自动化测试 - 单元测试 Xcode 测试框架 ? XCTest - OCUnit 从 Xcode 5及 iOS 7.x 以后演进为 XCTest ? 起步 - 单元测试入手 - 从基础框架或工具库入手 - 先编写 Model 类及方法,比编写 View 类和Controller 类及方法要容易 ? 自动化

4、测试提升 - 使用 Xcode Server 实现持续集成 - 使用 UI Animation 实现 UI 测试或黑盒测试 - 使用 TestFlight 进行发布测试 ? 参考 - About Testing with Xcode - Unit Testing Apps and Frameworks - Xcode Server and Continuous Integration Guide 7 起步 ? 新建工程时自动增加测试目标,或者新增一个目标 8 XCTest 框架 9 异步测试 ? 对 blocks 操作的异步测试,使用 XCTestExpectation 对象及方法完成 10

5、性能测试 ? XCTest 提供 measureBlock 来做性能测试 11 结果断定 ? 常用 - 对象相等或不等 XCTAssertEqualObjects(expression1, expression2, format) XCTAssertNotEqualObjects(expression1, expression2, format.) - 数值相等或不等 XCTAssertEqual(expression1, expression2, format) XCTAssertNotEqual(expression1, expression2, format) XCTAssertGrea

6、terThan(expression1, expression2, format) 等 - 空值 XCTAssertNil(expression, format.) XCTAssertNotNil(expression, format.) - 布尔值 XCTAssertTrue(expression, format.) XCTAssertFalse(expression, format.) - 其他 . 12 测试执行 ? 使用测试导航 ? 使用菜单 - 使用 Product Build for Testing 或 Product Perform Action Test without Bui

7、lding 菜单项 - 快捷键 Command-U ? 结果在导航中、日志窗口、Debug 控制台均有显示 13 Schemes 及 Test Targets 相关 ? Scheme 管理界面中可以配置相关的测试参数及内容 14 测试覆盖 15 编写可测试代码 ? 定义规范 API: - 输入、输出的范围、异常情况以及可能的返回值 - 减少全局变量、类量使用,降低方法之间的依赖关系 ? 在写代码的时候写测试用例来测试 - 在实现每个方法或函数的时候,写一个或多个测试用例来保证 API 满足需求 - 对写代码时定义测试用例,不仅方便测试,也会比事后补写容易 ? 注意边界条件 - 对于0,100

8、的约束条件,至于准备 -1,0,50,100,101 这些测试用例(可 以写在一个测试方法中) - 对于复杂的项目,测试代码也需要良好的架构设计,测试代码也需要关注易读 性及良好的用例注释说明 ? 测试用例要覆盖已有的 Bug - 修订一个 Bug 后,写一些测试用例来确认测试 16 iOS 自动化测试 - UI单元测试 UI 测试 ? Xcode 7.0 +,iOS9+,MacOS10.11+ - 新增加 iOS UI Testing Bundle 和OS X UI Testing Bundle - 将原有 Instruments 中 JS 脚本集成进 Xcode 统一测试方式中 - 通过界

9、面 UI 的 Accessibility 方便进行 自动化测试 - 为 MacOS 提供了 Accessibility Inspector 工具 ? 参考 - UI Testing in Xcode - 视频: videos/play/wwdc2015-406/ - PDF: videos/wwdc/ 2015/406o0doszwo8r15m/ 406/406_ui_testing_in_xcode.pdf?dl=1 18 UI 测试概述 ? UI 测试 - 查找UI元素 - UI元素交互 - 检验 UI 资源及状态 ? UI 录制 ? 测试报告 19 核心技术 ? XCTest + Acc

10、essibility 功能 20 继承 XCTest 的单元测试属性 Test case subclasses Test methods Assertions Integrated with Xcode CI via Xcode Server and xcodebuild Swift and Objective-C Accessibility 功能 Rich semantic data about UI UIKit and AppKit integration APIs for fi ne tuning UI tests interact with the app the way a user

11、 does 使用前真机上 iOS 辅助调试功能需要打开 建立 UI 测试Xcode Targets ? UI 测试有特殊的要求 - 在单独进行中执行 - 需要使用【辅助功能】的权限 ? 新的 Xcode Target 模板 - Cocoa Touch UI Testing Bundle(iOS) - Cocoa UI Testing Bundle(OS X) 21 APIs 及 UI 录制 ? 三个新类 - XCUIApplication - XCUIElement - XCUIElementQuery ? UI录制 - 与 App 交互 - 记录并生成代码 生成新的测试用例 扩展现有测试用例

12、 22 示例 - 测试 Add 按钮 23 UI 基础类 24 XCUIApplication 测试应用的代理 运行在另外进程中 启动 创新新进程并结束前面存在的 进程 查找界面元素的起点 XCUIElement 测试应用中元素的代理 类型 Button,Cell,Window,等等. 标识 Accessibility identifier, label,等等 多数界面元素可以通过类型及标识找到 XCUIElementQuery 元素类型 Button,table,menu,等 标识 Accessibility identifier, label,title等 条件断言 Predicates

13、值,部分匹配等 界面元素查找 - descendantsMatchingType ? descendantsMatchingType let allButtons = app.descendantsMatchingType(.Button) let allCellsInTable = table.descendantsMatchingType(.Cell) let allMenuItemsInMenu = menu.descendantsMatchingType(.MenuItem) 25 ? 简写 let allButtons = app.buttons let allCellsInTabl

14、e = table.cells let allMenuItemsInMenu = menu.menuItems 界面元素查找 - childrenMatchingType let allButtons = app.buttons / descendantsMatchingType(.Button) let childButtons = navBar.childrenMatchingType(.Button) 26 界面元素查找 - containingType 27 界面元素查找 - 多层查询 ? 各类查询可以链在一起,一个查询输出可做为下一个查询的输入 28 从查询结果中获取元素 29 Ac

15、cessibility 及 UI 测试 ? 使用 Interface Builder inspector ? API - UIAccessibility (iOS) - NSAccessibility (OS X) 30 Xcode Server 持续集成 Xcode Server 持续集成 ? 是 iOS 及 Mac 应用的自动编译、分析、测试的过程 32 Xcode Server 持续集成 ? 测试用例定义 - 单元测试 - 界面测试 ? 测试用例及代码管理 ? 自动化测试引擎或平台 ? 自动化测试报告反馈 33 持续集成带来的益处 ? 及时发现问题: - Xcode Server可以代码提交的时候触发集成操作,也可以定调调度或手工触发 ? 增加协作功能: - 具备团队生成 bots、触发集成、查看活动、下载构建结果的功能 ? 测试面广 - 可多台设备同时启动自动化测试,可以长期持续运行 ? 构建及测试统计信息 - 在集成的过程中,全流程进展及失败记录在日志中 - 提供监控界面 34 使用 Xcode Server 和持续集成 ? 关建术语 - Shared Schemes:定义了需要构建哪些目标,依赖目标需要构建什么,什

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 电子/通信 > 综合/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号