Android 使用自动化框架进行应用程序测试教程
Android 测试?
Android 是世界上最大的操作系统。同时, Android 分散的:设备种类繁多,而且 Android 您的应用必须兼容的版本。
无论你在设计和实现上投入多少时间,错误都是不可避免的,漏洞也会出现。
Android 测试策略
一个正确的 Android 测试策略应包括以下内容
- 单元测试
- 集成测试
- Opera国家考试
- 系统测试
单元测试
单元测试是一组程序,旨在验证源代码的原子单元,例如方法或类。
此 Android 平台已预先集成 JUnit 3.0 框架。这是一个用于自动化的开源框架。 单元测试并且它允许开发人员编写有效的单元测试程序。
单元测试之外,还有用户界面 (UI) 测试。UI 测试涵盖目标应用程序的 UI 组件,并确保应用程序针对设备上的一系列用户操作返回正确的输出。
在设备上执行 UI 测试的常用方法是: Android 仪表。但这存在性能问题。进行 UI 测试的最佳工具之一 Android is Robotium.
⚠️ 版本说明: JUnit 3 个类别,例如 仪表测试用例 已在 API 24 中弃用;当前项目使用 AndroidX 测试, Espresso 以及 UI Automator。 Robotium 自 2016 年以来未发行任何作品。
整合测试
In 整合测试所有经过单元测试的模块都已合并并验证。 Android 这通常意味着检查与服务、活动和内容提供程序等组件的集成情况。
许多测试框架用于执行集成测试。 Android例如 Troyd、Robolectric 和 Robotium.
Opera国家测试
Opera功能测试,也称为验收测试,是检查应用程序完整性和正确性的高级测试。
In Android, 健身 是一个开源框架,可以方便地针对目标应用程序运行操作测试。
系统测试
In 系统测试 对系统进行整体测试,检查组件、软件和硬件之间的交互。
In Android,系统测试通常包括
- 图形用户界面测试
- 可用性测试
- 性能测试
- 压力测试
在上面的列表中, 性能测试 更加专注。您可以使用以下工具 Trac查看 对……进行性能测试 Android该工具可以帮助您调试应用程序并分析其性能。 Trac视图现已弃用,取而代之的是 CPU 分析器.
自动化 Android 测试与验证
As Android 由于分散性,需要在多种设备上进行测试,这会增加成本。自动化 Android 检测有助于降低这些成本。
自动化带来的好处 Android 测试
- 减少执行测试用例的时间
- 提高开发过程的生产力
- 早期发现错误,节省软件维护成本
- 快速发现并修复实施过程中的错误
- 确保软件质量
我们将研究以下两个框架
- Android 测试框架
- Robolectric 测试框架
Android 测试框架
标准测试框架之一 Android 应用程序是 Android 测试框架。它与以下方面完美集成: Android SDK 工具,其架构分为三个部分。
- 应用程序包是您需要测试的目标应用程序。
- InstrumentationTestRunner 是 测试用例 运行器用于在目标应用程序上执行测试用例。它包括:
- 测试工具: 用于构建测试的 SDK 工具。它们集成在 IDE 中,也可以从命令行运行。
- 猴子跑者: 一个提供 API 的工具,用于编写控制程序的程序 Android 设备或模拟器之外 Android 码。
- 测试包按测试项目组织,并遵循特定的命名约定。如果被测应用程序的包名为“com.mydomain.myapp”,则测试包应为“com.mydomain.myapp.test”。测试包包含两个对象:
- 测试用例类: 包括要在目标应用程序上执行的测试方法。
- 模拟对象: 包含将用作测试用例示例输入的模拟数据。
Android 测试用例类
- 测试用例包括 JUnit 运行的方法 JUnit 实验
- 测试套件用于运行一组测试用例
- InstrumentationTestSuite 是一个测试套件,它会在运行 InstrumentationTestCase 之前将其注入到 InstrumentationTestCase 中。
- InstrumentationTestRunner 在目标应用程序上运行测试用例。
- Android测试用例扩展 JUnit 包含访问资源(例如 Activity Context)的方法的测试用例。
- ApplicationTestCase 在受控环境中验证 Application 类。
- InstrumentationTestCase 验证特定功能或行为,例如应用程序的 UI 输出。
- ActivityTestCase 是支持测试应用程序活动的基类。
- ProviderTestCase 类用于测试单个 ContentProvider。
- ServiceTestCase 在测试环境中测试 Service 类,并支持 Service 生命周期。
- SingleLaunchActivityTestCase 用于使用 InstrumentationTestCase 测试单个 Activity。
- 活动单元测试用例用于测试单个孤立的活动。
- 活动仪器测试用例2扩展 JUnit TestCase 类通过检测功能将您连接到目标应用程序,以便您可以访问 GUI 组件并发送 UI 事件,例如按键或触摸。
以下是一个 ActivityInstrumentationTestCase 的示例。它验证计算器应用程序的 UI 操作,并检查 UI 输出的正确性。
Robolectric 测试框架
使用以下方法进行测试 Android 使用设备或模拟器进行测试框架开发十分困难。构建和运行测试速度慢,且需要大量的开发工作。为了解决这个问题,还有另一种选择:Robolectric 测试框架。
Robolectric 允许您运行 Android 直接在 JVM 上进行测试,无需设备或模拟器。
Robolectric 测试用例类
Robolectric 可以执行以下操作:
- 注册并创建 Shadow 类
- 拦截加载 Android 程
- 使用 Java坚持重写方法体 Android 程
- 将阴影对象绑定到 Android 程
这使得被测代码能够在没有干扰的情况下执行。 Android 环境。
其他测试框架
除了上述测试框架之外,还有许多其他的测试框架,例如:
- Android Junit 报告,一个自定义的插桩测试运行器 Android 生成 XML 报告以便与其他工具集成。
- Espresso
- Appium
神话 Android 测试与验证
许多企业发展 Android 测试与验证 这些策略都是基于常见的误解。本节探讨了一些流行的误解和现实 Android 测试。
误区一:所有 Android 设备都一样,所以用模拟器测试就足够了。
一个应用程序在模拟器上可能运行完美,但在某些真机上运行时却会崩溃。
模拟器不足以满足您的移动端测试需求。您必须在真机上测试您的应用。
误区二:在一些常用设备上进行测试就足够了
由于硬件、屏幕尺寸和内存等因素的差异,您的应用程序在不同设备上的显示效果可能有所不同。请在多种设备、操作系统版本、运营商网络和地理位置上进行测试。
误区三:发布前进行探索性测试就足够了。
- 大多数测试都是先设计测试用例,然后再执行它们;而探索性测试则是设计和执行同时进行的。
- 由于没有计划或准备,测试人员可以随意运行他选择的测试用例。有些功能会被反复测试,而有些功能则从未被测试过。
误区四:如果应用程序中存在一些漏洞,用户会理解的。
- 如果应用程序无法正常运行且存在漏洞,用户会卸载您的应用程序。
- 质量问题是导致差评的首要原因。 Google 玩弄手段,损害你的声誉,失去客户的信任。
因此,拥有一个合适的……至关重要。 Android 已制定测试策略。
最佳实践 Android 测试与验证
- 应用程序开发人员应该在编写代码的同时创建测试用例
- 所有测试用例都应该与源代码一起存储在版本控制系统中。
- 使用持续集成并在每次更改代码时运行测试
- 避免仅依赖模拟器和已root的设备;使用诸如检测工具之类的软件在真实硬件上验证结果。 uiautomator查看器





