联想公司老总兼CEO杨元庆、ZUKCEO常程鼎力推荐,杰出检测权威专家很多年经验交流。这书以动漫漫画和会话设计风格对Android服务平台的各种各样自动化测试工具、框架的原理、使用技巧和二次开发开展了详尽的解读。
《深入理解Android自动化测试》分成四篇,共21章:
基本篇(第一~7章),简易详细介绍Android常见自动化测试工具和框架的基础使用技巧与有关基础理论,协助阅读者立即入门实际操作这种工具或应用框架编写自动化脚本制作。
原理篇(第八~13章),根据对Android常见自动化测试工具和框架的源代码分析,让大伙儿更形象化地掌握工具的运作原理。让阅读者不仅能够 更灵便地应用这种工具和框架,清晰地了解运用这种工具和框架的局限,还能够根据这种源代码更深层次地对工具和框架开展二次开发。
实战篇(第14~18章),根据新项目中的各种各样要求和具体难题来剖析工具的不够,进而开发设计一些小工具或对框架开展二次封裝,循着这条案件线索开发设计出大量、更好用的工具,或对框架开展更深层次的封裝。
思考篇(第19~21章),联系实际工作上领导干部们明确提出的各种各样难题,对工具、检测自身及其人深层次开展探讨和思考,深层次思索Android自动化测试及其手机软件自动化测试从业者都会遭遇的难题。
目录
- 本书赞誉
- 前 言
- 第一部分 基础篇
- 第1章 Android自动化测试基础 3
- 1.1 Android自动化分析 3
- 1.2 什么样的兵器*称手 4
- 1.3 如何耍好你手上的兵器 6
- 1.4 你了解你的兵器吗 8
- 1.5 如何改造你的兵器 9
- 第2章 稳定性测试利器monkey使用详解 10
- 2.1 monkey概述 10
- 2.2 第一个Impossible Mission 10
- 2.3 monkey的基本使用 11
- 2.4 monkey的命令及其使用 14
- 2.4.1 monkey的常规类命令 14
- 2.4.2 monkey的事件类命令 15
- 2.4.3 monkey的约束类命令 19
- 2.4.4 monkey的调试类命令 20
- 2.4.5 monkey命令小结 22
- 2.5 第二个Impossible Mission 23
- 2.6 monkey脚本编写 24
- 2.6.1 monkey API详解 24
- 2.6.2 monkey脚本编写 27
- 2.6.3 从getevent和input keyevent说起 33
- 2.7 monkey工具总结 37
- 第3章 monkey之子monkeyrunner使用详解 38
- 3.1 monkeyrunner概述 38
- 3.2 monkeyrunner API详解 38
- 3.2.1 monkeyrunner基本API:手势、输入和点击 44
- 3.2.2 monkeyrunner必备API:启动应用、等待 49
- 3.2.3 monkeyrunner强大API:键值事件 58
- 3.2.4 monkeyrunner与PC交互API:输入、选项列表框、警告框 61
- 3.2.5 monkeyrunner应用操作API:等待设备连接、安装/卸载应用 65
- 3.2.6 monkeyrunner设置控制API:重启、唤醒、获取设备属性 69
- 3.2.7 monkeyrunner基本图像处理API:截屏、图像保存 75
- 3.2.8 monkeyrunner必备图像处理API:图像截取、对比 78
- 3.2.9 monkeyrunner强大图像处理API:转换格式、获取像素元组/像素值 82
- 3.2.10 monkeyrunner超级API:广播、用例及命令 86
- 3.2.11 monkeyrunner帮助文档 91
- 3.3 monkeyrunner脚本编写 96
- 3.3.1 bugben示例脚本剖析 96
- 3.3.2 monkeyrunner脚本运行注意事项 98
- 3.4 第三个Impossible Mission 99
- 3.5 monkeyrunner的录制回放 99
- 3.5.1 等待功能Wait 100
- 3.5.2 按键功能Press a Button 102
- 3.5.3 输入功能Type Something 103
- 3.5.4 拖拽功能Fling 105
- 3.5.5 录制脚本导出功能Export Actions 107
- 3.5.6 录制bugben脚本示例 107
- 3.5.7 回放bugben脚本 110
- 3.6 monkeyrunner工具总结 112
- 第4章 单元测试框架Instrumentation使用详解 114
- 4.1 Instrumentation概述 114
- 4.2 Instrumentation基础 115
- 4.2.1 自动化测试基础 116
- 4.2.2 Android测试框架 117
- 4.3 第四个Impossible Mission 120
- 4.4 Instrumentation的前世:单元测试基础框架JUnit 124
- 4.5 第五个Impossible Mission 133
- 4.6 Instrumentation的今生:对Android系统的高度控制 138
- 4.7 Instrumentation前世今生分析 143
- 4.8 第六个Impossible Mission 149
- 4.9 Instrumentation自动化脚本开发 149
- 4.9.1 Instrumentation自动化条件 150
- 4.9.2 捕获*初项目控件 157
- 4.9.3 对*初项目的自动化测试 161
- 4.10 Instrumentation工具总结 167
- 第5章 终极自动化框架UIAutomator使用详解 171
- 5.1 UIAutomator概述 171
- 5.2 第七个Impossible Mission 173
- 5.3 更清晰的控件捕获 173
- 5.4 更直观的测试项目创建 175
- 5.5 UIAutomator API详解 177
- 5.5.1 与monkeyrunner对照之:给力的手势 178
- 5.5.2 与monkeyrunner对照之:输入、点击和长按 180
- 5.5.3 与monkeyrunner对照之:等待和截屏 182
- 5.5.4 与monkeyrunner对照之:锁屏/唤醒、获取设备属性 184
- 5.5.5 与monkeyrunner对照之:键值事件 186
- 5.5.6 人无我有之:屏幕旋转、布局文件 187
- 5.5.7 人无我有之:获取包名、应用名和通知栏 189
- 5.5.8 人无我有之:获取对象属性 189
- 5.5.9 强大的控件筛选器:UiSelector 192
- 5.5.10 “给力”的控件定位器:UiCollection 194
- 5.5.11 无敌的滚动:UiScrollable 195
- 5.5.12 疯狂的监听器:UiWatcher 200
- 5.5.13 UIAutomator API综述 202
- 5.6 更简洁的脚本撰写 202
- 5.6.1 UIAutomator界面捕获 202
- 5.6.2 UIAutomator应用启动 205
- 5.6.3 UIAutomator控件捕获 206
- 5.6.4 UIAutomator控件操作 211
- 5.6.5 Bugben完整测试项目 213
- 5.7 更便捷地编译运行 216
- 5.8 UIAutomator工具总结 223
- 第6章 兼容性测试框架CTS使用详解 226
- 6.1 CTS概述 226
- 6.2 CTS测试须知 228
- 6.3 CTS的命令及运行 231
- 6.4 CTS测试报告 237
- 6.5 CTS Verif?ier 240
- 6.6 CTS注意事项 243
- 6.7 CTS工具总结 245
- 第7章 Android自动化工具使用总结 247
- 第二部分 原理篇
- 第8章 monkey原理分析 252
- 8.1 monkey源码结构 252
- 8.2 monkey架构分析 254
- 8.2.1 旅程开始 254
- 8.2.2 从run()启程 254
- 8.2.3 monkey参数详解 257
- 8.2.4 如何细分参数? 262
- 8.2.5 导入package列表 264
- 8.2.6 monkey的系统日志 266
- 8.2.7 检查内部配置 268
- 8.2.8 构建三大能力 268
- 8.2.9 获取合法package列表 271
- 8.2.10 monkey运行模式汇总 272
- 8.2.11 monkey运行核心 281
- 8.2.12 旅程结束 286
- 8.3 monkey的原理总结 288
- 第9章 monkeyrunner原理分析 289
- 9.1 monkeyrunner源码结构 289
- 9.2 monkeyrunner架构分析 289
- 9.2.1 设备连接 291
- 9.2.2 应用安装 311
- 9.2.3 应用启动 319
- 9.2.4 按键发送 321
- 9.2.5 截屏 326
- 9.2.6 文件存储 331
- 9.3 monkeyrunner的原理总结 334
- 第10章 Instrumentation原理分析 336
- 10.1 Instrumentation源码结构 336
- 10.2 Instrumentation架构分析 338
- 10.2.1 从InstrumentationTestRunner说开来 339
- 10.2.2 Instrumentation测试运行 342
- 10.2.3 启动被测应用 345
- 10.2.4 startActivity()方法 348
- 10.2.5 startActivity()方法后遗症 351
- 10.2.6 连接ViewServer 356
- 10.2.7 获取设备应用信息 357
- 10.2.8 获取应用控件树 359
- 10.2.9 绘制控件树视图 362
- 10.3 Instrumentation的原理总结 364
- 第11章 UIAutomator原理分析 370
- 11.1 UIAutomator源码结构 370
- 11.2 UIAutomator架构分析 371
- 11.2.1 控件捕获 371
- 11.2.2 创建UiObject对象 372
- 11.2.3 验证控件是否存在 374
- 11.2.4 验证控件是否可用 381
- 11.2.5 点击并等待界面跳转 381
- 11.2.6 获取屏幕截图 386
- 11.2.7 发送返回事件 388
- 11.3 UIAutomator的原理总结 390
- 第12章 CTS原理分析 392
- 12.1 CTS源码结构 392
- 12.2 CTS架构分析 392
- 12.2.1 CTS案例MediaPlayer分析 393
- 12.2.2 测试资源预置及环境清理 396
- 12.2.3 空文件及音视频播放测试 398
- 12.2.4 切换下一首歌测试 401
- 12.2.5 频谱测试 406
- 12.2.6 无缝播放测试 407
- 12.2.7 视频界面重置测试 410
- 12.2.8 录制视频播放角度测试 412
- 12.2.9 不同格式视频文件测试 415
- 12.2.10 字幕选择/取消选择测试 423
- 12.2.11 字幕切换测试 427
- 12.2.12 播放器回调测试 429
- 12.2.13 视频录制播放测试 432
- 12.3 CTS的原理总结 435
- 第13章 Android自动化工具源码总结 436
- 第三部分 实践篇
- 第14章 从monkey到传参或录制工具开发 443
- 14.1 从monkey原理说开来 443
- 14.2 monkey传参小工具 444
- 14.2.1 monkey传参小工具之常规类命令 444
- 14.2.2 monkey传参小工具之事件类命令 445
- 14.2.3 monkey传参小工具之约束类命令 447
- 14.2.4 monkey传参小工具之调试类命令 448
- 14.3 monkey脚本录制工具开发 449
- 14.3.1 monkey脚本录制工具需求 450
- 14.3.2 monkey脚本录制工具设计 450
- 14.3.3 monkey脚本录制工具原理 453
- 14.4 monkey工具总结 458
- 第15章 从Instrumentation到稳定自动化工具开发 459
- 15.1 为何要做二次封装? 459
- 15.2 如何做Instrumentation的二次封装 461
- 15.2.1 场景1:源码问题 461
- 15.2.2 场景2:控件问题 462
- 15.2.3 场景3:用例结构问题 463
- 15.2.4 场景4:运行日志问题 465
- 15.2.5 场景5:窗口监测问题 465
- 15.2.6 场景6:控件ID重复或缺失问题 466
- 15.2.7 场景7:出错截屏问题 468
- 15.3 二次封装改进项总结 469
- 第16章 从UIAutomatorViewer到PC端脚本录制工具开发 470
- 16.1 从UIAutomatorViewer原理说开来 470
- 16.2 基于UIAutomatorViewer的PC端脚本录制工具 472
- 16.2.1 PC端脚本录制工具:基本设计 472
- 16.2.2 PC端脚本录制工具:详细设计 474
- 16.2.3 PC端脚本录制工具:原理剖析 477
- 16.2.4 PC端脚本录制工具:界面设计 483
- 16.3 UIAutomatorViewer录制工具总结 487
- 第17章 从CTS到定制化单元测试 489
- 17.1 从CTS原理说开来 489
- 17.2 用CTS运行定制单元测试脚本 491
- 17.2.1 项目需求分析 491
- 17.2.2 研究官方CTS用例集 492
- 17.2.3 自定义CTS用例集 500
- 17.2.4 运行自定义CTS用例集 504
- 17.3 定制单元测试脚本总结 505
- 第18章 Android自动化实践之路 507
- 第四部分 反思篇
- 第19章 关于工具的反思 512
- 19.1 关于录制/回放工具的幻想 512
- 19.2 要门槛还是要适配 513
- 19.3 什么样的自动化框架才是强大的框架 515
- 19.4 将第七个馒头扔出窗外 516
- 第20章 关于测试的反思 519
- 20.1 自动化是一种短线投资吗 519
- 20.2 难道自动化是为了替代黑盒测试 520
- 20.3 衡量自动化效果的标准是Bug数吗 521
- 第21章 关于人的反思 522
- 21.1 测试脚本编写者态度问题 522
- 21.2 什么人适合做自动化 523
- 21.3 自动化与组织架构有没有关系 525
- 附录A monkey常用键值参照表 526
- 附录B getProperty()和getSystemProperty() 532