第1章Android自动化测试初探 1
1.1快速入门 1
1.2待测示例程序 2
1.3第一个Android应用测试工程 6
1.4搭建自动化开发环境 12
1.4.1安装Eclipse和ADT开发包 12
1.4.2创建模拟器 13
1.4.3启动模拟器 21
1.4.4连接模拟器 23
1.4.5连接手机 24
1.5本章小结 29
第2章Android自动化测试基础 30
2.1Java编程基础 30
2.2 JUnit简介 36
2.2.1添加测试异常情况的测试用例 41
2.2.2测试集合 43
2.2.3测试准备与扫尾函数 45
2.2.4自动化测试用例编写注意事项 47
2.3 Android应用程序基础 47
2.3.1 Android权限系统 47
2.3.2应用的组成与激活 51
2.3.3清单文件 54
2.3.4 Android应用程序的单UI线程模型 56
2.4本章小结 57
第3章Android界面自动化白盒测试 58
3.1 Instrumentation测试框架 58
3.1.1 Android仪表盘测试工程 58
3.1.2仪表盘技术 60
3.1.3 Instrumentation.ActivityMonitor嵌套类 63
3.2使用仪表盘技术编写测试用例 64
3.2.1 ActivityInstrumentationTest-Case2测试用例 66
3.2.2 sendKeys和sendRepeatedKeys函数 70
3.2.3执行仪表盘测试用例 72
3.2.4仪表盘测试技术的限制 74
3.3使用robotium编写集成测试用例 77
3.3.1为待测程序添加robotium用例 77
3.3.2测试第三方应用 80
3.3.3 robotium关键源码解释 84
3.4 Android自动化测试在多种屏幕下的注意事项 87
3.5本章小结 90
第4章Android界面自动化黑盒测试 91
4.1 monkey工具 91
4.1.1运行monkey 93
4.1.2 monkey命令选项参考 97
4.1.3 monkey脚本 98
4.1.4 monkey服务器 105
4.2编写monkeyrunner用例 109
4.2.1为待测程序录制和回放用例 110
4.2.2运行monkeyrunner 110
4.2.3手工编写monkeyrunner代码 111
4.2.4编写monkeyrunner插件 114
4.3本章小结 118
第5章 测试Android服务组件 119
5.1JUnit的模拟对象技术 119
5.2测试服务对象 128
5.2.1服务对象简介 128
5.2.2在应用中添加服务 130
5.2.3测试服务对象 136
5.3本章小结 140
第6章 测试Android内容供应组件 142
6.1控制反转 142
6.1.1依赖注入 144
6.1.2服务定位器 146
6.2内容供应组件 147
6.2.1统一资源标识符 150
6.2.2 MIME类型 152
6.2.3内容供应组件的虚拟表视图 152
6.3内容供应组件示例 154
6.4测试内容供应组件 159
6.5本章小结 163
第7章 测试Android HTML 5应用 164
7.1构建Android HTML 5应用 164
7.1.1WebView应用 164
7.1.2使用视口适配Android设备的多种分辨率 170
7.1.3使用CSS适配多种分辨率 175
7.1.4使用Chrome浏览器模拟移动设备浏览器 176
7.2使用QUnit测试HTML5网页 177
7.2.1 QUnit基础 177
7.2.2 QUnit中的断言 179
7.2.3测试回调函数 181
7.2.4测试WebView应用 182
7.3本章小结 185
第8章 使用Selenium测试HTML 5浏览器应用 186
8.1Selenium组成部分 186
8.2安装Selenium IDE 187
8.3 Selenium IDE界面 188
8.3.1菜单栏 188
8.3.2工具栏 189
8.4使用Selenium 189
8.4.1使用Selenium IDE录制测试用例 189
8.4.2运行Selenium测试用例 194
8.4.3等待操作完成 199
8.4.4 Selenium WebDriver命令 200
8.5数据驱动测试 206
8.6 Selenium编程技巧 208
8.6.1在测试代码中硬编码测试数据 208
8.6.2重构Selenium IDE生成的代码 209
8.7本章小结 212
第9章Android NDK测试 213
9.1安装NDK 213
9.2 NDK的基本用法 214
9.3编译和部署NDK示例程序 214
9.4 Java与C/C+++之间的交互 217
9.4.1 Makefiles 222
9.4.2动态模块和静态模块 222
9.5在Android设备上执行NDK单元测试 223
9.6 unittest+++使用基础 228
9.6.1添加新测试用例 228
9.6.2测试用例集合 229
9.6.3验证宏 229
9.6.4数组相关的验证宏 230
9.6.5设置超时 230
9.7本章小结 231
第10章Android其他测试 232
10.1 Android兼容性测试 232
10.1.1运行Android兼容性测试用例集合 232
10.1.2兼容性测试计划说明 237
10.1.3添加一个新的测试计划 238
10.1.4添加一个新的测试用例 239
10.1.5调查CTS测试失败 241
10.2 Android脚本编程环境 243
10.2.1 Android脚本环境简介 243
10.2.2安装SL4A 243
10.2.3为SL4A安装脚本引擎 244
10.2.4编写SL4A脚本程序 246
10.2.5在PC上调试脚本程序 250
10.3国际化测试 251
10.4模拟来电中断测试 254
10.5本章小结 255
第11章 持续集成自动化测试 257
11.1在Ant中集成Android自动化测试 257
11.1.1 Ant使用简介 257
11.1.2 Android应用编译过程 262
11.1.3使用Ant编译Android工程 263
11.2在Maven中集成Android自动化测试 268
11.2.1使用Android MavenArchetypes创建新Android工程 268
11.2.2 Android Maven工程介绍 270
11.2.3与设备交互 271
11.2.4与模拟器交互 272
11.2.5集成自动化测试 274
11.3收集代码覆盖率 276
11.4本章小结 280
第12章Android功能调试工具 281
12.1使用Eclipse调试Android应用 281
12.1.1 Eclipse调试技巧 282
12.1.2使用JDB调试 294
12.1.3设置Java远程调试 296
12.1.4调试器原理简介 301
12.2查看Android的logcat日志 302
12.2.1过滤logcat日志 303
12.2.2查看其他logcat内存日志 304
12.3 Android调试桥接 304
12.3.1 adb命令参考 306
12.3.2执行Android shell命令 309
12.3.3 dumpsys 312
12.4调试Android设备上的程序 317
12.4.1调试命令行程序 317
12.4.2调试Android应用 318
12.4.3调试Maven Android插件启动的应用 321
12.5本章小结 322
第13章Android性能测试之分析操作日志 323
13.1使用Traceview分析操作日志 326
13.1.1记录应用操作日志 326
13.1.2 Traceview界面说明 328
13.1.3使用Traceview分析并优化性能瓶颈 329
13.2使用DDMS 334
13.2.1使用DDMS 335
13.2.2 DDMS与调试器交互的原理 336
13.2.3三种启动操作日志记录功能的方法 338
13.3使用 dmtracedump分析函数调用树 339
13.4本章小结 341
第14章 分析Android内存问题 343
14.1 Android内存管理原理 343
14.1.1垃圾内存回收算法 343
14.1.2 GC发现对象引用的方法 351
14.1.3 Android内存管理源码分析 352
14.1.4 Logcat中的GC信息 361
14.2调查内存泄露工具 362
14.2.1 Shallow size和Retained size 362
14.2.2支配树 363
14.3分析Android内存泄露实例 364
14.3.1在DDMS中检查示例问题程序的内存情况 366
14.3.2使用MAT分析内存泄露 368
14.3.3弱引用 372
14.3.4 MAT的其他界面使用方法 373
14.3.5对象查询语言OQL (Object Query Language) 376
14.3.6使用jHat分析内存文件 381
14.4显示图片 382
14.4.1 Android应用加载大图片的最佳实践 386
14.4.2跟踪对象创建 388
14.5频繁创建小对象的问题 390
14.6 Finalizer的问题 393
14.7本章小结 394
第15章 调试多线程和HTML 5应用 395
15.1调试应用无响应问题 395
15.2 Android中的多线程 397
15.3调试线程死锁 400
15.3.1资源争用问题 400
15.3.2线程同步机制 405
15.3.3解决线程死锁问题 406
15.4 StrictMode 410
15.4.1在应用中启用StrictMode 413
15.4.2暂时禁用StrictMode 415
15.5调试Android上的浏览器应用 416
15.5.1在Android系统自带的浏览器上调试 416
15.5.2在Chrome浏览器上调试 418
15.6本章小结 422
第16章 调试NDK程序 423
16.1使用Eclipse调试Android NDK程序 423
16.2在命令行中调试NDK程序 426
16.3 Android的C/C+++调试器的工作原理 431
16.3.1调试符号 433
16.3.2源码 433
16.3.3多线程调试的问题 433
16.4本章小结 434