内容简介
第一部分 基础篇
第1章 Andrnid自动化测试基础
1.1 Android自动化分析
1.2 什么样的兵器最称手
1.3 如何耍好你手上的兵器
1.4 你了解你的兵器吗
1.5 如何改造你的兵器
第2章 稳定性测试利器monkey使用详解
2.1 monkey概述
2.2 第一个Impossible Mission
2.3 monkey的基本使用
2.4 monkey的命令及其使用
2.4.1 monkey的常规类命令
2.4.2 monkey的事件类命令
2.4.3 monkey的约束类命令
2.4.4 monkey的调试类命令
2.4.5 monkey命令小结
2.5 第二个Impossible Mission
2.6 monkey脚本编写
2.6.1 monkeyAPI详解
2.6.2 monkey脚本编写
2.6.3 从getevent和input keyevent说起
2.7 monkey工具总结
第3章 monkey之子monkeyrunner使用详解
3.1 monkeyrunner概述
3.2 monkeyrunnerAPI详解
3.2.1 monkeyrunner基本API:手势、输入和点击
3.2.2 monkeyrunner必备API:启动应用、等待
3.2.3 monkeyrunner强大API:键值事件
3.2.4 monkeyrunner与PC交互API:输入、选项列表框、警告框
3.2.5 monkeyrunner应用操作API:等待设备连接、安装/卸载应用
3.2.6 monkeyrunner设置控制API:重启、唤醒、获取设备属性
3.2.7 monkeyrunner基本图像处理API:截屏、图像保存
3.2.8 monkeyrunner必备图像处理API:图像截取、对比
3.2.9 monkeyrunner强大图像处理API:转换格式、获取像素元组/像素值
3.2.10 monkeyrunner超级API:广播、用例及命令
3.2.11 monkeyrunner帮助文档
3.3 monkeyrunner脚本编写
3.3.1 bugben示例脚本剖析
3.3.2 monkeyrunner脚本运行注意事项
3.4 第三个ImpossibleMission
3.5 monkeyrunner的录制回放
3.5.1 等待功能Wait
3.5.2 按键功能Press a Button
3.5.3 输入功能Type Something
3.5.4 拖拽功能Fling
3.5.5 录制脚本导出功能Export Actions
3.5.6 录制bugben脚本示例
3.5.7 回放bugben脚本
3.6 monkeyrunner工具总结
第4章 单元测试框架Instrumentation使用详解
4.1 Instrumentation概述
4.2 Instrumentation基础
4.2.1 自动化测试基础
4.2.2 Android测试框架
4.3 第四个Impossible Mission
4.4 Instrumentation的前世:单元测试基础框架JUnit
4.5 第五个Impossible Mission
4.6 Instrumentation的今生:对Android系统的高度控制
4.7 Instrumentation前世今生分析
4.8 第六个Impossible Mission
4.9 Instrumentation自动化脚本开发
4.9.1 Instrumentation自动化条件
4.9.2 捕获最初项目控件
4.9.3 对最初项目的自动化测试
4.10 Instrumentation工具总结
第5章 终极自动化框架UIAutomator使用详解
5.1 UIAutomator概述
5.2 第七个Impossible Mission
5.3 更清晰的控件捕获
5.4 更直观的测试项目创建
5.5 UIAutomator API详解
5.5.1 与monkeyrunner对照之:给力的手势
5.5.2 与monkeyrunner对照之:输入、点击和长按
5.5.3 与monnkeyrunner对照之:等待和截屏
5.5.4 与monkeyrunner对照之:锁屏/唤醒、获取设备属性
5.5.5 与monkeyrunner对照之:键值事件
5.5.6 人无我有之:屏幕旋转、布局文件
5.5.7 人无我有之:获取包名、应用名和通知栏
5.5.8 人无我有之:获取对象属性
5.5.9 强大的控件筛选器:UiSelector
5.5.10 “给力”的控件定位器:UiCollection
5.5.11 无敌的滚动:UiScrollable
5.5.12 疯狂的监听器:UiWatcher
5.5.13 UIAutomatorAPI综述
5.6 更简洁的脚本撰写
5.6.1 UIAutomator界面捕获
5.6.2 UIAutomator应用启动
5.6.3 UIAutomator控件捕获
5.6.4 UIAutomator控件操作
5.6.5 Bugben完整测试项目
5.7 更便捷地编译运行
5.8 UIAutomator工具总结
第6章 兼容性测试框架CTS使用详解
6.1 CTS概述
6.2 CTS测试须知
6.3 CTS的命令及运行
6.4 CTS测试报告
6.5 CTS Verifier
6.6 CTS注意事项
6.7 CTS工具总结
第7章 Android自动化工具使用总结
第二部分 原理篇
第8章 monkey原理分析
8.1 monkey源码结构
8.2 monkey架构分析
8.2.1 旅程开始
8.2.2 从run()启程
8.2.3 monkey参数详解
8.2.4 如何细分参数?
8.2.5 导入package列表
8.2.6 monkey的系统日志
8.2.7 检查内部配置
8.2.8 构建三大能力
8.2.9 获取合法package列表
8.2.10 monkey运行模式汇总
8.2.11 monkey运行核心
8.2.12 旅程结束
8.3 monkey的原理总结
第9章 monkeyrunner原理分析
9.1 monkeyrunner源码结构
9.2 monkeyrunner架构分析
9.2.1 设备连接
9.2.2 应用安装
9.2.3 应用启动
9.2.4 按键发送
9.2.5 截屏
9.2.6 文件存储
9.3 monkeyrunner的原理总结
第10章 Instrumentation原理分析
10.1 Instrumentation源码结构
10.2 Instrumentation架构分析
10.2.1 从InstrumentationTestRunner说开来
10.2.2 Instrumentation测试运行
10.2.3 启动被测应用
10.2.4 startActivity()方法
10.2.5 startActivity()方法后遗症
10.2.6 连接ViewServer
10.2.7 获取设备应用信息
10.2.8 获取应用控件树
10.2.9 绘制控件树视图
10.3 Instrumentation的原理总结
第11章 UIAutomator原理分析
11.1 UIAutomator源码结构
11.2 UIAutomator架构分析
11.2.1 控件捕获
11.2.2 创建UiObject对象
11.2.3 验证控件是否存在
11.2.4 验证控件是否可用
11.2.5 点击并等待界面跳转
11.2.6 获取屏幕截图
11.2.7 发送返回事件
11.3 UIAutomator的原理总结
第12章 CTS原理分析
12.1 CTS源码结构
12.2 CTS架构分析
12.2.1 CTS案例MediaPlayer分析
12.2.2 测试资源预置及环境清理
12.2.3 空文件及音视频播放测试
12.2.4 切换下一首歌测试
12.2.5 频谱测试
12.2.6 无缝播放测试
12.2.7 视频界面重置测试
12.2.8 录制视频播放角度测试
12.2.9 不同格式视频文件测试
12.2.10 字幕选择/取消选择测试
12.2.11 字幕切换测试
12.2.12 播放器回调测试
12.2.13 视频录制播放测试
12.3 CTS的原理总结
第13章 Android自动化工具源码总结
第三部分 实践篇
第14章 从monkey到传参或录制工具开发
14.1 从monkey原理说开来
14.2 monkey传参小工具
14.2.1 monkey传参小工具之常规类命令
14.2.2 monkey传参小工具之事件类命令
14.2.3 monkey传参小工具之约束类命令
14.2.4 monkey传参小工具之调试类命令
14.3 monkey脚本录制工具开发
14.3.1 monkey脚本录制工具需求
14.3.2 monkey脚本录制工具设计
14.3.3 monkey脚本录制工具原理
14.4 monkey工具总结
第15章 从Instrumentation到稳定自动化工具开发
15.1 为何要做二次封装?
15.2 如何做Instrumentation的二次封装
15.2.1 场景1:源码问题
15.2.2 场景2:控件问题
15.2.3 场景3:用例结构问题
15.2.4 场景4:运行日志问题
15.2.5 场景5:窗口监测问题
15.2.6 场景6:控件ID重复或缺失问题
15.2.7 场景7:出错截屏问题
15.3 二次封装改进项总结
第16章 从UIAutomatorViewer到PC端脚本录制工具开发
16.1 从UIAutomatorViewer原理说开来
16.2 基于UIAutomatorViewer的PC端脚本录制工具
16.2.1 PC端脚本录制工具:基本设计
16.2.2 PC端脚本录制工具:详细设计
16.2.3 PC端脚本录制工具:原理剖析
16.2.4 PC端脚本录制工具:界面设计
16.3 UIAutomatorViewer录制工具总结
第17章 从CTS到定制化单元测试
17.1 从CTS原理说开来
17.2 用CTS运行定制单元测试脚本
17.2.1 项目需求分析
17.2.2 研究官方CTS用例集
17.2.3 自定义CTS用例集
17.2.4 运行自定义CTS用例集
17.3 定制单元测试脚本总结
第18章 Android自动化实践之路
第四部分 反思篇
第19章 关于工具的反思
19.1 关于录制/回放工具的幻想
19.2 要门槛还是要适配
19.3 什么样的自动化框架才是强大的框架
19.4 将第七个馒头扔出窗外
第20章 关于测试的反思
20.1 自动化是一种短线投资吗
20.2 难道自动化是为了替代黑盒测试
20.3 衡量自动化效果的标准是Bug数吗
第21章 关于人的反思
21.1 测试脚本编写者态度问题
21.2 什么人适合做自动化
21.3 自动化与组织架构有没有关系
附录A monkey常用键值参照表
附录B getProperty()和getSystemProperty()