资源预览内容
第1页 / 共46页
第2页 / 共46页
第3页 / 共46页
第4页 / 共46页
第5页 / 共46页
第6页 / 共46页
第7页 / 共46页
第8页 / 共46页
第9页 / 共46页
第10页 / 共46页
亲,该文档总共46页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
移动应用自动化测试移动应用测试面临的挑战2?!?!?!?!自动化测试? 适用场合 - 对软件或模块有较高质量的要求 - 需求变动不频繁的软件:测试脚本的稳定性决定了自动化测试的维护成本 - 软件生命周期足够长:自动化测试需求的确定、自动化测试框架的设计、测试 脚本的编写与调试均需要相当长的时间来完成 - 回归测试要求高的产品:自动化测试脚本可重复使用 - 手工测试无法完成:性能测试、配置测试、大数据量输入测试等 ? 移动应用自动化测试- Android:Robotium - 基于Android Instrumentation 的一个扩展- iOS:XCTest,UIAutomation, Xcode Server- Hybrid Apps: Native App 及 Mobile Web App 基于 iOS UIAutomation, Android Automator3基于 Robotium的测试架构4? 采用Robotium一种通过InstrumentationTestRunner来完成Android交互式测试的架构,它横跨多 个 activities,支持功能测试,系统测试和验收测试。 ? Robotium支持Activities、Dialogs、Toasts、Menus、 Context Menus,并且它可以同Maven和 Ant集成来完成持续集成测试自动化测试与持续集成要素? 测试用例定义- 单元测试- 界面测试? 测试用例及代码管理- 与 svn 或 git 集成? 自动化测试引擎或平台- 定义自动化测试策略、范围、方式等? 自动化测试报告反馈- 通过工具、邮件、Web 查看自动化测试结果5iOS 自动化测试 - 单元测试Xcode 测试框架? XCTest- OCUnit 从 Xcode 5及 iOS 7.x 以后演进为 XCTest? 起步 - 单元测试入手- 从基础框架或工具库入手- 先编写 Model 类及方法,比编写 View 类和Controller 类及方法要容易? 自动化测试提升- 使用 Xcode Server 实现持续集成- 使用 UI Animation 实现 UI 测试或黑盒测试- 使用 TestFlight 进行发布测试? 参考- About Testing with Xcode - Unit Testing Apps and Frameworks- Xcode Server and Continuous Integration Guide7起步? 新建工程时自动增加测试目标,或者新增一个目标8XCTest 框架9异步测试? 对 blocks 操作的异步测试,使用 XCTestExpectation 对象及方法完成10性能测试? XCTest 提供 measureBlock 来做性能测试11结果断定? 常用- 对象相等或不等 XCTAssertEqualObjects(expression1, expression2, format) XCTAssertNotEqualObjects(expression1, expression2, format.) - 数值相等或不等 XCTAssertEqual(expression1, expression2, format) XCTAssertNotEqual(expression1, expression2, format) XCTAssertGreaterThan(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 Building 菜单项- 快捷键 Command-U? 结果在导航中、日志窗口、Debug 控制台均有显示13Schemes 及 Test Targets 相关? Scheme 管理界面中可以配置相关的测试参数及内容14测试覆盖15编写可测试代码? 定义规范 API:- 输入、输出的范围、异常情况以及可能的返回值- 减少全局变量、类量使用,降低方法之间的依赖关系? 在写代码的时候写测试用例来测试- 在实现每个方法或函数的时候,写一个或多个测试用例来保证 API 满足需求- 对写代码时定义测试用例,不仅方便测试,也会比事后补写容易? 注意边界条件- 对于0,100 的约束条件,至于准备 -1,0,50,100,101 这些测试用例(可 以写在一个测试方法中)- 对于复杂的项目,测试代码也需要良好的架构设计,测试代码也需要关注易读 性及良好的用例注释说明? 测试用例要覆盖已有的 Bug- 修订一个 Bug 后,写一些测试用例来确认测试16iOS 自动化测试 - UI单元测试UI 测试? Xcode 7.0 +,iOS9+,MacOS10.11+- 新增加 iOS UI Testing Bundle 和OS X UI Testing Bundle- 将原有 Instruments 中 JS 脚本集成进 Xcode 统一测试方式中- 通过界面 UI 的 Accessibility 方便进行 自动化测试 - 为 MacOS 提供了 Accessibility Inspector 工具? 参考- UI Testing in Xcode- 视频:https:/developer.apple.com/ videos/play/wwdc2015-406/- PDF: http:/devstreaming.apple.com/ videos/wwdc/ 2015/406o0doszwo8r15m/ 406/406_ui_testing_in_xcode.pdf?dl=118UI 测试概述? UI 测试- 查找UI元素- UI元素交互- 检验 UI 资源及状态? UI 录制? 测试报告19核心技术? XCTest + Accessibility 功能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 fine tuning UI tests interact with the app the way a user does 使用前真机上 iOS 辅助调试功能需要打开建立 UI 测试Xcode Targets? UI 测试有特殊的要求- 在单独进行中执行- 需要使用【辅助功能】的权限? 新的 Xcode Target 模板- Cocoa Touch UI Testing Bundle(iOS)- Cocoa UI Testing Bundle(OS X)21APIs 及 UI 录制? 三个新类- XCUIApplication- XCUIElement - XCUIElementQuery ? UI录制- 与 App 交互- 记录并生成代码 生成新的测试用例 扩展现有测试用例22示例 - 测试 Add 按钮23UI 基础类24XCUIApplication 测试应用的代理 运行在另外进程中 启动 创新新进程并结束前面存在的 进程 查找界面元素的起点XCUIElement 测试应用中元素的代理 类型 Button,Cell,Window,等等. 标识 Accessibility identifier, label,等等 多数界面元素可以通过类型及标识找到XCUIElementQuery 元素类型 Button,table,menu,等 标识 Accessibility identifier, label,title等 条件断言 Predicates 值,部分匹配等界面元素查找 - descendantsMatchingType? descendantsMatchingType let allButtons = app.descendantsMatchingType(.Button)let allCellsInTable = table.descendantsMatchingType(.Cell)let allMenuItemsInMenu = menu.descendantsMatchingType(.MenuItem)25? 简写 let allButtons = app.buttonslet allCellsInTable = table.cellslet allMenuItemsInMenu = menu.menuItems界面元素查找 - childrenMatchingTypelet allButtons = app.buttons / descendantsMatchingType(.Button)let childButtons = navBar.childrenMatchingType(.Button)26界面元素查找 - containingType27界面元素查找 - 多层查询? 各类查询可以链在一起,一个查询输出可做为下一个查询的输入28从查询结果中获取元素29Accessibility 及 UI 测试? 使用 Interface Builder inspector? API- UIAccessibility (iOS)- NSAccessibility (OS X)30Xcode Server 持续集成Xcode Server 持续集成? 是 iOS 及 Mac 应用的自动编译、分析、测试的过程32Xcode Server 持续集成? 测试用例定义- 单元测试- 界面测试? 测试用例及代码管理? 自动化测试引擎或平台? 自动化测试报告反馈33持续集成带来的益处? 及时发现问题:- Xcode Server可以代码提交的时候触发集成操作,也可以定调调度或手工触发? 增加协作功能:- 具备团队生成 bots、触发集成、查看活动、下载构建结果的功能? 测试面广- 可多台设备同时启动自动化测试,可以长期持续运行? 构建及测试统计信息- 在集成的过程中,全流程进展及失败记录在日志中- 提供监控界面34使用 Xcode Server 和持续集成? 关建术语- Shared Schemes:定义了需要构建哪些目标,依赖目标需要构建什么,什么 样的构建设置将被传递到构建过程中。服务器是要建立
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号