Android 使用自动化框架进行 APP 测试教程

为什么 Android 测试?

Android 是世界上最大的操作系统。同时, Android 碎片化。有大量的设备和 Android 您的应用必须兼容的版本。

Android 测试

无论您在设计和实现上投入多少时间,错误都是不可避免的,并且会出现缺陷。

Android 测试

Android 测试策略

正确的 Android 测试策略应该包括以下内容

  1. 单元测试
  2. 集成测试
  3. Opera国家考试
  4. 系统测试

Android 测试策略

单元测试

单元测试包括一组或多组程序,旨在验证源代码的原子单元,例如方法或类。

Android 平台预先集成 朱尼特 3.0 框架。它是用于自动化的开源框架 单元测试. Android 测试框架是开发人员编写有效单元测试程序的有力工具。

整合 Android 和 JUnit 骨架
整合 Android 和 JUnit 框架

单元测试的补充是用户界面 (UI) 测试。这些测试与目标应用程序的 UI 组件相关。UI 测试可确保您的应用程序根据设备上的用户操作序列返回正确的 UI 输出。

应用程序上的常见用户 UI 操作
应用程序上的常见用户 UI 操作

在设备上执行 UI 测试的常见方式是 Android 控制系统。但这存在性能问题。进行 UI 测试的最佳工具之一 Android is 机器人馆.

整合测试

In 整合测试,所有经过单元测试的模块都已组合并验证。在 Android,集成测试通常涉及检查与Android 服务测试、活动测试、内容提供商测试等组件

集成测试
集成测试的类型 Android

有许多测试框架用于进行集成测试 Android 例如 Troyd、Robolectric、Robotium。

Opera国家测试

  • Operational 也被称为功能测试或验收测试。它们是高级测试,旨在检查应用程序的完整性和正确性。
  • In Android, 健身 是一个开源框架,可以轻松对目标应用程序进行操作测试。

系统测试

In 系统测试 对系统进行整体测试,检查组件、软件和硬件之间的交互。

In Android,系统测试通常包括

  • 图形用户界面测试
  • 可用性测试
  • 性能测试
  • 压力测试

在上面的列表中, 性能测试 更加专注。您可以使用以下工具 追踪视图 进行性能测试 Android .此工具可以帮助您调试应用程序并分析其性能。

自动化 Android 测试

由于安卓系统比较分散,因此需要在多种设备上进行测试。但这也会花费你的钱。自动化 Android 测试有助于降低成本

自动化 Android 测试的好处

  • 减少执行测试用例的时间
  • 提高开发过程的生产力
  • 早期发现错误,节省软件维护成本
  • 快速发现并修复实施过程中的错误
  • 确保软件质量

我们将研究以下两个框架

  • Android 测试框架
  • Robolectric 测试框架

Android 测试框架

标准测试框架之一 Android 应用 Android 测试框架. 它是一个功能强大且易于使用的测试框架,可以与 Android SDK 工具。

Android 测试框架
Android 测试框架 Archi质地
  1. 应用包 您需要测试的目标应用程序是什么
  2. 仪表测试运行器 测试用例 在目标应用程序上执行测试用例的运行器。它包括:

2a) 测试工具: 用于构建测试的 SDK 工具。它们集成在 Eclipse IDE 或作为命令行运行。

2b) 猴子跑者: 提供用于编写​​控制 Android 设备或模拟器之外 Android 码。

  1. 测试包 被组织成测试项目。此包遵循命名约定。如果被测应用程序的包名为“com.mydomain.myapp”,则测试包应为“com.mydomain.myapp.test”。测试包包含以下 2 个对象:

3a) 测试用例类:包括在目标应用程序上执行的测试方法。

3b) 模拟对象:包括将用作测试用例的示例输入的模拟数据。

Android 测试用例类

Android 测试用例类
AndroidTestCase 类图
  1. 测试用例 包括 JUnit 运行的方法 JUnit 测试
  2. 测试套件 用于运行一组测试用例
  3. 仪器测试套件 是一个 TestSuite,在运行之前将 Instrumentation 注入到 InstrumentationTestCase 中。
  4. 仪表测试运行器 是在目标应用程序上执行测试用例的测试用例运行器。
  5. Android测试用例 扩展 JUnit TestCase。它包含访问 Activity Context 等资源的方法。
  6. 应用程序测试用例 在受控环境中验证应用程序类。
  7. 仪表测试用例 验证目标应用程序的特定功能或行为,例如验证应用程序的 UI 输出。
  8. 活动测试用例 是支持测试应用程序活动的基类。
  9. 提供者测试用例 是用于测试单个 ContentProvider 的类。
  10. 服务测试用例 用于在测试环境中测试Service类。支持Service的生命周期。
  11. 单次启动活动测试用例 用于通过 InstrumentationTestCase 测试单个 Activity。
  12. 活动单元测试用例 用于测试单个孤立活动。
  13. 活动仪器测试用例2 扩展 JUnit TestCase 类。它通过仪器将您连接到目标应用程序。使用此类,您可以访问应用程序的 GUI 组件并将 UI 事件(击键或触摸事件)发送到 UI。

下面是 ActivityInstrumentationTestCase 的示例。它验证计算器应用程序的 UI 操作,检查 UI 输出的正确性。

ActivityInstrumentationTestCase2 测试
ActivityInstrumentationTestCase2 测试示例

Robolectric 测试框架

使用测试 Android 使用设备或模拟器测试框架很困难。构建和运行测试很慢,需要大量的开发工作。为了解决这个问题,还有另一种选择—— 机器人电子 测试框架。

Robolectric 框架允许您运行 Android 测试 直接 在 JVM 上 也完全不需要 需要设备或模拟器。

Robolectric 的先进功能
Robolectric 的高级功能

Robolectric 测试用例类

OperaRobolectric 的
OperaRobolectric 的
  • 如上所示,Robolectric 可以执行以下操作:
  • 注册并创建 Shadow 类
  • 拦截加载 Android 程
  • 使用 javaassist 覆盖方法主体 Android 程
  • 将阴影对象绑定到 Android 程
  • 这允许被测代码无需 Android 环境。

其他测试框架

除了上面提到的测试框架之外,还有许多其他测试框架,例如:

神话 Android 测试

许多企业开发Android 测试 这些策略都是基于常见的误解。本节探讨了一些流行的误解和现实 Android 测试。

误区一:所有 Android 设备都一样……在模拟器上测试就足够了

让我们从一个简单的例子开始。一个应用程序在模拟器上运行良好,但在某些真实设备上,它在执行过程中崩溃

应用程序在真实设备执行期间崩溃
应用程序在真实设备执行期间崩溃

仿真器是 不够 进行移动测试。您必须在真实设备上测试您的应用。

误区二:在一些常见设备上测试就足够了

  • 在不同的设备上,您的应用程序看起来会有所不同,因为不同的设备具有不同的硬件、屏幕尺寸、内存等。您必须在不同的设备、操作系统版本、运营商网络和位置上测试您的应用程序。

误区三:产品发布前进行探索性测试就足够了

  • 一般情况下,我们都是先设计测试用例,然后执行。但在探索性测试中,测试设计和执行是一起进行的。
  • 探索性测试没有计划,没有准备,测试人员想做什么就做什么。有些功能会反复测试,而有些功能则根本不会测试。

误区#4:如果应用程序中存在一些错误,用户会理解

  • 如果应用程序无法运行且存在错误,用户就会卸载你的应用程序
  • 质量问题是 Google Play 上差评的首要原因。它会影响您的声誉并失去客户的信任。

因此制定合适的 Android 测试策略至关重要

最佳实践 Android 测试

  • 应用程序开发人员应该在编写代码的同时创建测试用例
  • 所有测试用例都应与源代码一起存储在版本控制中
  • 使用持续集成并在每次更改代码时运行测试
  • 避免使用模拟器和 root 设备