第1章 自动化测试简介 1
1.1 何为自动化测试 2
1.2 自动化测试和手动测试的对比 2
1.3 移动端自动化测试工具的选择 3
1.3.1 Appium 3
1.3.2 uiautomator 4
1.3.3 Robotium 4
第2章 测试开发环境搭建 6
2.1 JDK安装及其环境变量配置 7
2.2 Eclipse的安装 9
2.3 Android SDK的安装及环境变量配置 9
2.4 ADT插件的安装 12
2.5 Genymotion 12
第3章 Robotium入门 18
3.1 Robotium简介 19
3.2 Robotium版“Hello World” 19
3.2.1 导入被测试源码 19
3.2.2 新建测试工程 21
3.2.3 添加Robotium iar 22
3.2.4 新建第一个自动化测试类 23
3.2.5 运行第一个Robotium例子 24
3.3 基于APK的自动化测试 25
3.3.1 APK重签名 25
3.3.2 创建基于APK测试的测试工程 27
3.3.3 编写基于APK自动化测试的“HelloWorld”版 27
3.3.4 安装应用、运行自动化测试用例 29
3.4 基于APK测试的ID定位 30
3.5 Robotium API简介 35
3.6 Robotium录制回放 38
3.6.1 安装Recorder 38
3.6.2 录制回放脚本 41
第4章 第一个实战项目 45
4.1 被测App简介 46
4.2 导入ToDoList APP源码 46
4.3 被测App的详细功能 50
第5章 实战测试项目搭建 52
5.1 搭建实战测试项目 53
5.2 第一个测试用例 54
5.3 第一个自动化测试脚本 55
5.4 查看控件ID的工具 60
5.4.1 hierarchyviewer.bat的用法 61
5.4.2 uiautomatorviewer.bat的用法 62
第6章 完善测试框架 64
6.1 编写抽象父类 65
6.2 提取控件ID类 71
6.3 操作统一入口类 74
6.4 更新抽象父类及测试用例 75
6.5 调试简介 79
第7章 更多自动化测试用例 84
7.1 包管理 85
7.2 编写更多自动化测试用例 85
7.2.1 登录页面测试用例2 86
7.2.2 登录页面用例3 86
7.2.3 添加任务页面测试用例 93
7.2.4 任务列表页面测试用例 96
7.2.5 任务编辑页面测试用例 97
7.2.6 退出功能验证 102
第8章 批量运行测试代码 104
8.1 TestSuite 105
8.2 Runner 107
8.3 生成JUnit格式的report 111
第9章 持续集成 115
9.1 持续集成简介 116
9.2 持续集成工具 116
9.3 编译todolist项目源码 119
9.3.1 安装Ant 119
9.3.2 将添加build.xml到 todolist项目 120
9.3.3 将build.xml添加到 todolisttest项目 124
9.4.Jenkins job的创建 127
9.5 Jenkins job的配置 130
9.6 shell脚本统一管理构建过程 135
9.7 Unit report展示 137
9.8 错误截图展示 142
9.9 参数化运行设备 145
9.10 完整的job配置 147
第10章 Crash处理 150
10.1 crash处理机制 151
10.2 shell部分编码处理 151
10.3 CommonRunner代码逻辑 153
10.4 为Runnerl加入crash处理逻辑 159
10.5 制造Crash场景 160
10.6 report合并 163
第11章 跨应用解决方案 169
11.1 uiautomator 170
11.2 服务端编码 177
11.3 发送跨应用请求 183
11.4 跨应用实例 185
11.5 手动部署 188
第12章 代码覆盖率 190
12.1 代码覆盖率的好处 191
12.2 使用EMMA统计代码覆盖率 191
12.3 合并代码覆盖率文件 197
12.4 创建代码覆盖率Jenkinsjob 200
12.5 代码覆盖率展现 204
第13章 Android Studio和Gradle 206
13.1 Android Studio的安装和配置 207
13.2 Gradle简介与安装 208
13.2.1 Gradle简介 208
13.2.2 Gradle的安装 208
13.3 为Eclipse项目生成gradle配置文件 209
13.4 在Android Studio下新建todolist及其配置 212
13.5 持续集成配置 219
第14章 常见错误及解决方法 223