零、前言

无论你在安卓设计上投入多少时间,甚至编程时有多小心,错误都是不可避免的,bug 也会出现。这本书将帮助您在您的安卓项目中最大限度地减少这些错误的影响,并提高您的开发效率。它将向您展示容易避免的问题,帮助您快速进入测试阶段。

Android 应用测试指南是第一本也是唯一一本提供最常用的技术、框架和工具的实用介绍,以改进你的 Android 应用的开发。清晰、逐步的说明展示了如何为您的应用编写测试,并使用各种方法确保质量控制。

作者将应用测试技术应用于现实项目的经验使他能够分享关于创建专业安卓应用的见解。

这本书涵盖了对架构和技术的测试的框架支持的基础知识,例如测试驱动开发,这是软件开发过程中的一个敏捷组件,也是您将在早期解决 bug 的一种技术。从应用于示例项目的最基本的单元测试到更复杂的性能测试,这本书以基于配方的方式详细描述了安卓测试领域中最广泛使用的技术。

作者在整个职业生涯中有着从事各种开发项目的丰富经验。所有这些研究和知识有助于创造一本书,这本书将成为任何在安卓测试世界中导航的开发者的有用资源。

这本书涵盖了什么

第 1 章测试入门,介绍了不同类型的测试及其对软件开发项目的适用性,尤其是对安卓系统的适用性。然后,它继续涵盖安卓平台上的测试、单元测试和 JUnit,创建一个安卓测试项目并运行测试。

第 2 章了解使用安卓 SDK进行测试,开始深入挖掘以识别可用于创建测试的构件。它涵盖了断言、TouchUtils,旨在测试用户界面、模拟对象、检测和测试用例类层次结构。

第 3 章用测试食谱烘焙,提供了应用前面描述的学科和技术时,你会经常遇到的不同情况的实例。这些例子以烹饪书的形式呈现,这样你就可以在你的项目中修改和使用它们。食谱涵盖了安卓单元测试、活动、应用、数据库和内容提供者、服务、用户界面、异常、解析器、内存泄漏以及使用 Espresso 的测试。

第 4 章管理你的安卓测试环境,提供不同的条件来运行测试。它从创建安卓虚拟设备(AVD)开始,为测试中的应用提供不同的条件和配置,并使用可用的选项运行测试。最后,它引入了 monkey 作为生成用于测试的模拟事件的方法。

第 5 章发现持续集成介绍了这种敏捷的软件工程和自动化技术,旨在通过持续频繁地应用集成和测试来提高软件质量并减少集成变更所需的时间。

第六章实践测试驱动开发,介绍测试驱动开发学科。它从一个一般性的修订开始,然后转向与安卓平台密切相关的概念和技术。这是一个代码密集的章节。

第 7 章行为驱动开发介绍了行为驱动开发和一些概念,比如使用一个通用词汇来表达测试,以及在软件开发项目中包含业务参与者。

第 8 章测试和评测性能,介绍了从传统的日志语句方法到创建 Android 性能测试和使用评测工具的一系列与基准测试和概要相关的概念。

第 9 章备选测试策略,涵盖了添加代码覆盖以确保您知道什么被测试,什么没有,以及在主机的 Java 虚拟机上进行测试,调查 Fest、Spoon 和 Android 测试的未来,以构建和扩展您的 Android 测试范围。

这本书你需要什么

为了能够遵循不同章节中的示例,您需要安装一套通用的软件和工具,以及几个在每一章中都有详细描述的其他组件,包括它们各自的下载位置。

所有示例都基于以下内容:

  • Mac OSX 10.9.4,全面更新
  • Java SE 版本 1.6.0_24(构建 1.6.0_24-b07)
  • 安卓 SDK 工具,第 24 版
  • 安卓 SDK 平台-工具,第 21 版
  • SDK 平台安卓 4.4,API 20
  • 安卓支持库,第 21 版
  • Android Studio IDE 版本:1.1.0
  • 等级 2.2.1
  • 1 . 8 . 5 . 2 版

这本书是给谁的

如果你是一个想要测试你的应用或者优化你的应用开发过程的安卓开发者,那么这本书就是为你准备的。不需要以前的应用测试经验。

惯例

在这本书里,你会发现许多区分不同种类信息的文本风格。以下是这些风格的一些例子,以及对它们的含义的解释。

文本中的码字如下所示:“要调用am命令,我们将使用adb shell命令”。

代码块设置如下:

dependencies {
    compile project(':dummylibrary')
}

当我们希望将您的注意力吸引到代码块的特定部分时,相关的行或项目以粗体显示:

fahrenheitEditNumber
.addTextChangedListener(
newFehrenheitToCelciusWatcher(fahrenheitEditNumber, celsiusEditNumber));
}

任何命令行输入或输出都编写如下:

junit.framework.ComparisonFailure: expected:<[]> but was:<[123.45]>
at com.blundell.tut.EditNumberTests.testClear(EditNumberTests.java:31)
at java.lang.reflect.Method.invokeNative(Native Method)
at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:191)

新名词重要词语以粗体显示。您在屏幕上看到的单词,例如菜单或对话框中的单词,出现在文本中,如下所示:“第一个测试执行点击转发活动的转到按钮。”

警告或重要提示会出现在这样的框中。

类型

提示和技巧是这样出现的。

读者反馈

我们随时欢迎读者的反馈。让我们知道你对这本书的看法——你喜欢或不喜欢什么。读者反馈对我们来说很重要,因为它有助于我们开发出你真正能从中获益的标题。

要给我们发送一般反馈,只需发送电子邮件<[feedback@packtpub.com](mailto:feedback@packtpub.com)>,并在您的邮件主题中提及书名。

如果你对某个主题有专业知识,并且对写作或投稿感兴趣,请参见我们位于www.packtpub.com/authors的作者指南。

客户支持

现在,您已经自豪地拥有了一本书,我们有许多东西可以帮助您从购买中获得最大收益。

下载示例代码

您可以从您在http://www.packtpub.com的账户下载您购买的所有 Packt Publishing 书籍的示例代码文件。如果您在其他地方购买了这本书,您可以访问http://www.packtpub.com/support并注册,以便将文件直接通过电子邮件发送给您。

勘误表

尽管我们尽了最大努力来确保我们内容的准确性,但错误还是会发生。如果你在我们的某本书里发现了错误——可能是文本或代码中的错误——如果你能向我们报告,我们将不胜感激。通过这样做,你可以让其他读者免受挫折,并帮助我们改进这本书的后续版本。如果您发现任何勘误表,请访问http://www.packtpub.com/submit-errata,选择您的书籍,点击勘误表提交表链接,并输入您的勘误表的详细信息。一旦您的勘误表得到验证,您的提交将被接受,勘误表将上传到我们的网站或添加到该标题勘误表部分下的任何现有勘误表列表中。

要查看之前提交的勘误表,请前往https://www.packtpub.com/books/content/support并在搜索栏中输入图书名称。所需信息将出现在勘误表部分。

盗版

互联网上版权材质的盗版是所有媒体的一个持续问题。在 Packt,我们非常重视版权和许可证的保护。如果您在互联网上遇到任何形式的我们作品的非法拷贝,请立即向我们提供位置地址或网站名称,以便我们寻求补救。

请通过<[copyright@packtpub.com](mailto:copyright@packtpub.com)>联系我们,获取疑似盗版资料的链接。

我们感谢您在保护我们的作者方面的帮助,以及我们为您带来有价值内容的能力。

问题

如果您对本书的任何方面有问题,可以在<[questions@packtpub.com](mailto:questions@packtpub.com)>联系我们,我们将尽最大努力解决问题。

问题

如果您对本书的任何方面有问题,可以在<[questions@packtpub.com](mailto:questions@packtpub.com)>联系我们,我们将尽最大努力解决。