首页>参考读物>计算机科学与技术>软件与程序设计

Android应用测试与调试实战
作者 : 施懿民 著
丛书名 : 移动开发
出版日期 : 2014-04-14
ISBN : 978-7-111-46018-3
定价 : 79.00元
扩展资源下载
扩展信息
语种 : 简体中文
页数 : 444
开本 : 16
原书名 :
原出版社:
属性分类: 店面
包含CD :
绝版 : 未绝版
图书简介

本书是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 应用的调试方法和技巧。

图书特色

好的测试能缩短项目的工期,能让项目在保证质量的前提下如期交付;好的调试则可以快速定位并解决应用中暴露出来的bug,从而提高用户的满意度。随着企业级的Android应用越来越多,Android应用的测试与调试变得越来越重要。如何才能正确、高效地对Android应用进行自动化测试和调试,是越来越多的Android应用测试工程师和开发工程师们需要掌握的。目前市面上非常缺乏这方面的系统性参考资料,本书就是为解决这一需求而写的,它的目标是成为该领域最具权威性和实战性的一本书。无论是内容结构上,还是写作方式上,本书都凝聚了作者和编辑的心血,实现了这个目标,值得推荐!
—— eoe(http://www.eoeandroid.com/) 最棒的移动开发者社区

本书从Android应用自动化测试工程师、开发工程师的视角横向(测试)和纵向(调试)对Android系统进行深入探索。自动化测试工程师需要对Android应用进行集成测试和系统测试,开发工程师负责单元测试和对应用进行调试,不仅要求测试人员和开发人员对Android应用所涉及的知识有广度上的认知,而且还要对Android的各种技术细节甚至实现原理有深度上的认知,这样才能保证在测试阶段事半功倍,在调试bug时能得心应手。Android有Java、HTML 5、C++&NDK三种开发方式,每种开发方式的测试和调试技术都略有不同,本书针对这3种方式进行了全面而细致的讲解。

作者简介
施懿民 资深软件开发工程师和调试技术专家,拥有近10年软件行业从业经验,精通Windows、.NET、iOS、Android以及Windows Phone等平台上应用的测试与调试,曾经带领团队为微软的.NET Developer Platform、CLR、.NET BCL、WPF、Silverlight、ASP.NET、.NET平台和框架提供测试服务,近几年来专注于主流移动平台上的应用测试与调试,积累了丰富的经验。此外,他还精通.NET、Java、C++等编程语言,以及在Windows、Linux以及UNIX等环境下的编程。


拥有近10年从业经验的资深软件开发工程师和测试工程师经验结晶,系统且实用,为开发高质量Android应用提供全方位指导
从测试和调试两个维度深度探索Android系统,为Android应用的自动化测试和调试提供原理性的解决方案

图书前言

为什么要写这本书
几年前看过微软工程师Adam Nathan写的一本书《.NET and COM: The Complete Interoperability Guide》,对作者说过的一句话印象极其深刻:学习一门新技术的最佳方法就是写一本书。对于这个说法,笔者深以为然,在实际工作中,迫于项目交付的压力,很多时候只会使用一门技术中自己熟悉的部分,对于其他部分,甚至自己熟悉的那一部分,也只是知其然而不知其所以然,似懂非懂。而当要写一本书介绍这门技术的时候,就不得不去上下求索,这时不仅要横向了解该门技术的各个细节,还要纵向了解该门技术的发展思路以及各部分的来龙去脉,才能向读者解释它。因此可以说,写作本书的过程也是笔者系统学习Android操作系统的过程。
而笔者之所以从测试和调试的角度来介绍Android操作系统,是因为从这两个角度入手能够很好地从横向和纵向两个方向学习Android系统。从测试的角度来说,由于一般测试人员对Android应用进行集成测试和系统测试,开发人员负责单元测试工作,这就要求测试人员,特别是自动化测试人员对Android应用所涉及的技术有一个广度的认知,对Android的各种技术都要知其然。从调试的角度来说,却又可以从源码级别知各项技术的所以然。比如,要调试应用的功能错误,就必须对应用的源码有一个完整的理解,只有这样才能知道应该在什么地方设置断点,在什么时候让调试器捕捉异常;而要调试应用的内存泄露问题,就必须对Android系统采用的垃圾回收机制有一个通透的理解,只有这样才能从根源上发现并解决内存方面的问题。另外,反观市面上的技术书籍,介绍自动化测试和调试技术的书实在少。但在软件开发过程中,不仅测试是必不可少的环节,而且程序员实际上只花20%的时间写代码并完成编译过程,剩下80%的时间都是花在调试和修改代码上,这种情况也坚定了笔者写作本书的信心。
最后,由于笔者能力有限,同时为了及时出版本书,不得不放弃一些如多核设备上并行程序的调试、NDK程序的验尸调试等内容,希望感兴趣的读者可以完成这方面的分享。
读者对象
Android自动化测试工程师
Android开发工程师
无编程基础的Android测试工程师
如何阅读本书
虽然本书讲解的是自动化测试和程序调试相关技术,但有些测试工程师的行业经验更丰富些,而编程基础则相对薄弱。因此本书分为两大部分:
第一部分为自动化测试篇(第1~11章),这一部分列举Android自动化测试中可以使用的几种测试技术,尽可能详细地介绍了Android白盒、黑盒自动化测试所用到的技术及其原理。由于Android应用可以使用Java语言配合SDK,也可以用HTML 5技术,还可以用C/C++语言配合NDK技术编写,所以这部分尽量涵盖了针对这三种技术编写的应用所采用到的测试技术。这些内容适合Android自动化测试工程师和对自动化测试感兴趣的手工测试工程师阅读。这一部分除了第11章需要有C/C++编程经验之外,其他章节无需编程基础即可阅读。另外每个章节都是独立的,读者可以根据自己的实际需要分开来阅读。
第二部分为调试技术篇(第12~16章),第12章讲解的是通用的调试技术,这部分对于Android自动化测试工程师和Android开发工程师都是必要的知识,这一章节无需编程知识即可掌握。而第13章之后,主要涉及的是性能方面的调试技术,其中涉及一些Android系统内部的实现细节,这些技术更适合具备一定开发经验的自动化测试和开发工程师阅读。
勘误和支持
由于作者的水平有限,加之编写时间仓促,书中难免会出现一些错误或者不准确的地方,恳请读者批评指正。为此,作者特意在Google+上创建一个在线支持与应急方案的社区https://plus.google.com/u/0/communities/112928495323595574856。你可以将书中的错误发布在Bug勘误表页面中,同时如果你遇到任何问题,也可以访问Q&A页面,作者将尽量在线上提供满意的解答。书中的全部源文件除可以从华章网站下载外,还可以从这个社区和github上 https://github.com/shiyimin/androidtestdebug下载,作者也会将相应的功能更新及时发布出来。如果你有更多的宝贵意见,也欢迎发送邮件至邮箱shiyimin.aaron@gmail.com,期待能够得到你们的真挚反馈。
致谢
首先要感谢支付宝的陈晔(新浪微博:@Monkey陳曄曄),在本书写作时,他参与了大部分章节的技术审阅工作,帮助完善了书中的细节。
感谢阿里集团的梁剑钊(新浪微博:@liangjz)推荐的玄黎(新浪微博:@浪头)、李子乐(新浪微博:@子乐_淘宝太禅)参与本书技术审阅工作。
感谢机械工业出版社华章分社的编辑杨福川老师,在这一年多的时间中始终支持我的写作,他的鼓励和帮助引导我顺利完成全部书稿。
谨以此书献给我最亲爱的家人,以及众多热爱Android测试的朋友们!

施懿民

上架指导

计算机\程序设计

封底文字

(同《深入理解Android网络编程》,放上eoe、51CTO和安卓巴士3个社区的logo)
好的测试能缩短项目的工期,能让项目在保证质量的前提下能如期交付;好的调试则可以快速定位并解决应用中暴露出来的bug,从而提高用户的满意度。随着企业级的Android应用越来越多,Android应用的测试与调试变得越来越重要。如何才能正确、高效地对Android应用进行自动化测试和调试,是越来越多的Android应用测试工程师和开发工程师们需要掌握的。目前市面上非常缺乏这方面的系统性参考资料,本书就是为解决这一需求而写的,它的目标是成为该领域最具权威性和实战性的一本书。无论是内容结构上,还是写作方式上,本书都倾注了作者和编辑的心血,实现了这个目标,值得推荐!
——eoe(http://www.eoeandroid.com/) 最棒的移动开发者社区

本书从Android应用自动化测试工程师、应用开发工程师的视角横向(测试)和纵向(调试)对Android系统做了深入探索。自动化测试工程师需要对Android应用进行集成测试和系统测试,开发工程师负责做单元测试和对应用进行调试,不仅要求测试人员和开发人员对Android应用所涉及的知识有广度上的认知,而且还要对Android的各种技术细节甚至是实现原理要有深度上的认知,这样才能保证在测试阶段事半功倍,调试bug时能得心应手。Android有Java、HTML 5、C++&NDK三种开发方式,每种开发方式的测试和调试技术都略有不同,本书针对这3种方式进行了全面而细致的讲解。

作者简介

施懿民 著:资深软件工程师和测试工程师,拥有近10年软件行业从业经验,精通iOS、Android以及Windows Phone应用程序调试、测试技术。曾经为.NET Developer Platform部分框架代码的提供测试服务,团队负责的微软开发框架产品有: CLR, .NET BCL, WPF, Silverlight, ASP.NET, .NET兼容性测试。

图书目录

前言
第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.1 Java编程基础  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.1 JUnit的模拟对象技术  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.1 WebView应用  164
7.1.2 使用视口适配Android设备的多种分辨率  170
7.1.3 使用CSS适配多种分辨率  175
7.1.4 使用Chrome浏览器模拟移动设备浏览器  176
7.2 使用QUnit测试HTML 5网页  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.1 Selenium组成部分  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 Maven Archetypes创建新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

教学资源推荐
作者: 邱李华 曹青 郭志强 编著
作者: [美]戴维 I. 施奈德(David I. Schneider) 著
作者: 罗兵 刘艺 孟武生
作者: 施霞萍 张欢欢 王瑾德 马可幸
参考读物推荐
作者: (美)Aaftab Munshi,Benedict R. Gaster, Timothy G. Mattson, James Fung, Dan Ginsburg 著
作者: 黄灯桥 著
作者: 申屠青春主编   宋波 张鹏 汪晓明 季宙栋 左川民 编著