安卓测试框架

3

我是Android测试框架的新手,想了解现有测试框架之间的区别:Monkey、CTS、Instrumentation Framework和Robotium?


CTS - 兼容性测试套件?http://source.android.com/compatibility/cts-intro.html - mparaz
2个回答

7

Instrumentation是测试的一种类别,与单元测试相对。

该框架提供了用于仪器测试的钩子,但您需要一个额外的第三方框架才能真正开始。Robotium就是这样的框架。它允许您编写“脚本”,通过用户界面运行这些脚本,例如“点击这个”,“输入那个”等。如果编写得当,它可以帮助您完成用例测试,从而确保您的应用程序没有出现故障。它还允许您测试多个活动和活动之间的交互。

在我看来,Android上的单元测试非常困难,特别是涉及UI、数据库、活动状态等“常规”代码,除非您为可测试性编写代码。

Android Monkey也使用instrumentation来运行您的用户界面,但它不遵循脚本。它会随机执行操作,其想法是无论它做什么都不会使您的应用程序崩溃。通过生成数十万个事件,它试图尽可能地覆盖所有情况,基于统计学原理。与Robotium不同,Monkey永远不会离开您的应用程序(那将是危险的)。然而,它是一个完美的补充,几乎不需要成本(设置非常便宜,也没有维护成本)。

CTS仅与操作系统和框架本身相关。

您可能还想了解mocks?


0

请观察下面的测试金字塔:

  • 手动测试 - 自我解释
  • 功能测试 - 测试一个特性
  • 集成测试 - 检查单元是否协同工作
  • 单元测试 - 确保单个单元按预期工作(参见SRP

它建议每个级别应该有多少个测试。在金字塔下面是您可以在每个级别使用的Android框架。

Testing Pyramid

在Android中,每个部分通常使用以下框架:

功能性

  • Monkey runner“有点”属于此部分,它基本上只是在应用程序中乱搞,以查看任何交互组合是否会导致崩溃。

集成

  • Instrumentation属于此类别。
  • Espresso(由Google制作,推荐使用,使用Hamcrest匹配器)
  • Robotium

单元测试

  • JUnit4
  • Mockito、Powermock和其他模拟库
  • 匹配框架,如Hamcrest、Fest、AssertJ
  • Robolectric(提供Android特定方法)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接