本书是Android应用测试与调试领域最为系统、深入和具备实践指导意义的著作,由拥有近10年从业经验的资深软件开发工程师和调试技术专家撰写,旨在为广大程序员开发高质量的Android应用提供全方位指导。它从Android应用自动化测试工程师和开发工程师的需求出发,从测试和调试两个维度,针对Java、HTML 5、C++&NDK三种Android应用开发方式所需要的测试和调试技术、方法进行了细致而深入的讲解,为Android应用的自动化测试和调试提供原理性的解决方案。
全书一共16章,分为两大部分:第一部分为自动化测试篇(1~11章),详细讲解了Android自动化测试需要掌握的各种技术、工具和方法,包括Android自动化测试基础、Android应用的白盒自动化测试和黑盒自动化测试的技术和原理、Android服务组件和内容组件的测试、HTML 5 Android应用和NDK Android应用的测试,以及Android应用的兼容性测试和持续集成自动化测试;第二部分调试技术篇(12~16章),详细讲解了Android应用调试所需要的各种工具的使用、操作日志的分析、内存日志的分析,以及多线程应用HTML 5 应用和NDK 应用的调试方法和技巧。
封面图
目录
- 前言
- 第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.2JUnit简介 36
- 2.2.1添加测试异常情况的测试用例 41
- 2.2.2测试集合 43
- 2.2.3测试准备与扫尾函数 45
- 2.2.4自动化测试用例编写注意事项 47
- 2.3Android应用程序基础 47
- 2.3.1Android权限系统 47
- 2.3.2应用的组成与激活 51
- 2.3.3清单文件 54
- 2.3.4Android应用程序的单UI线程模型 56
- 2.4本章小结 57
- 第3章Android界面自动化白盒测试 58
- 3.1Instrumentation测试框架 58
- 3.1.1Android仪表盘测试工程 58
- 3.1.2仪表盘技术 60
- 3.1.3Instrumentation.ActivityMonitor嵌套类 63
- 3.2使用仪表盘技术编写测试用例 64
- 3.2.1ActivityInstrumentationTest-Case2测试用例 66
- 3.2.2sendKeys和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.3robotium关键源码解释 84
- 3.4Android自动化测试在多种屏幕下的注意事项 87
- 3.5本章小结 90
- 第4章Android界面自动化黑盒测试 91
- 4.1monkey工具 91
- 4.1.1运行monkey 93
- 4.1.2monkey命令选项参考 97
- 4.1.3monkey脚本 98
- 4.1.4monkey服务器 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.2MIME类型 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测试HTML 5网页 177
- 7.2.1QUnit基础 177
- 7.2.2QUnit中的断言 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.3Selenium 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.4Selenium WebDriver命令 200
- 8.5数据驱动测试 206
- 8.6Selenium编程技巧 208
- 8.6.1在测试代码中硬编码测试数据 208
- 8.6.2重构Selenium IDE生成的代码 209
- 8.7本章小结 212
- 第9章Android NDK测试 213
- 9.1安装NDK 213
- 9.2NDK的基本用法 214
- 9.3编译和部署NDK示例程序 214
- 9.4Java与C/C++之间的交互 217
- 9.4.1Makefiles 222
- 9.4.2动态模块和静态模块 222
- 9.5在Android设备上执行NDK单元测试 223
- 9.6unittest++使用基础 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.1Android兼容性测试 232
- 10.1.1运行Android兼容性测试用例集合 232
- 10.1.2兼容性测试计划说明 237
- 10.1.3添加一个新的测试计划 238
- 10.1.4添加一个新的测试用例 239
- 10.1.5调查CTS测试失败 241
- 10.2Android脚本编程环境 243
- 10.2.1Android脚本环境简介 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.1Ant使用简介 257
- 11.1.2Android应用编译过程 262
- 11.1.3使用Ant编译Android工程 263
- 11.2在Maven中集成Android自动化测试 268
- 11.2.1使用Android Maven Archetypes创建新Android工程 268
- 11.2.2Android 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.1Eclipse调试技巧 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.3Android调试桥接 304
- 12.3.1adb命令参考 306
- 12.3.2执行Android shell命令 309
- 12.3.3dumpsys 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.2Traceview界面说明 328
- 13.1.3使用Traceview分析并优化性能瓶颈 329
- 13.2使用DDMS 334
- 13.2.1使用DDMS 335
- 13.2.2DDMS与调试器交互的原理 336
- 13.2.3三种启动操作日志记录功能的方法 338
- 13.3使用dmtracedump分析函数调用树 339
- 13.4本章小结 341
- 第14章分析Android内存问题 343
- 14.1Android内存管理原理 343
- 14.1.1垃圾内存回收算法 343
- 14.1.2GC发现对象引用的方法 351
- 14.1.3Android内存管理源码分析 352
- 14.1.4Logcat中的GC信息 361
- 14.2调查内存泄露工具 362
- 14.2.1Shallow 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.4MAT的其他界面使用方法 373
- 14.3.5对象查询语言OQL(Object Query Language) 376
- 14.3.6使用jHat分析内存文件 381
- 14.4显示图片 382
- 14.4.1Android应用加载大图片的最佳实践 386
- 14.4.2跟踪对象创建 388
- 14.5频繁创建小对象的问题 390
- 14.6Finalizer的问题 393
- 14.7本章小结 394
- 第15章调试多线程和HTML 5应用 395
- 15.1调试应用无响应问题 395
- 15.2Android中的多线程 397
- 15.3调试线程死锁 400
- 15.3.1资源争用问题 400
- 15.3.2线程同步机制 405
- 15.3.3解决线程死锁问题 406
- 15.4StrictMode 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.3Android的C/C++调试器的工作原理 431
- 16.3.1调试符号 433
- 16.3.2源码 433
- 16.3.3多线程调试的问题 433
- 16.4本章小结 434