用于自动化测试框架的 Appium 与 Espresso

Appium vs Espresso for automated testing framework

过去几周,我使用 Appium(python) 进行 android 测试,但昨天我们决定转向 Expresso(Java) 进行自动化测试。我们做出这种转变有几个原因:

我一直在阅读 Espresso,但如果我将它与 Appium 进行比较,我没有发现任何好东西。我是 Python/R developer,所以可能有几点我无法理解。有人愿意帮助我了解转向这个新测试框架是否对未来有好处吗?我在这里错过了大局,我们将不胜感激。

如果你只坚持 Android 自动化并且不知道自动化 iOS,你可以选择 Espresso。

AFIKW,Espresso 需要应用程序的源代码才能使其自动化。

优点是google直接开源。

但我的目标是使用 Appium,因为它是一个大型开源社区,正在不断改进,并且易于使用任何编程语言实现自动化,不用说它同时支持 Android 和 iOS.

  1. Shifting 将非常有用,因为 Espresso 支持测试应用程序外部的活动,例如 appium 不支持的相机、浏览器和拨号器等。
  2. Espresso,您可以测试吐司消息、自动完成和应用程序外部的对话框。
  3. 使用 Espresso Test Suit,您可以找到代码覆盖率并衡量您的测试工作。

我同意 Espresso 在 Android 单独测试时可能非常有效。例如,它可以 运行 仅 activity 它正在测试,这很棒。

我仍然坚持使用 Appium,因为它对 AndroidDriver 和 iOSDriver 具有相同的 API。通常 Android 个应用伴随着 iOS 个应用,如果您负责 UI 自动化,则必须考虑总体成本。

A​​ppium 与特定于平台的解决方案相比具有以下优势:

  • Android 和 iOS 测试可以共享许多 classes,包括辅助方法和配置,
  • Android 和 iOS 测试可以在更高级别上共享通用测试逻辑,同时在较低级别上具有不同或略有不同的实现(例如,有时我可以只复制整个页面对象 class 并简单更改定位器以使其在其他平台上工作),
  • 相同 API 使我们能够在团队中的 iOS 和 Android 测试开发之间无缝切换。轻松切换到 Selenium 进行 Web 开发是额外的好处。

A​​ppium 最大的缺点是较长测试场景的速度和定位元素的一些困难,但仍然是我的选择。

作为旁注,我想补充一点,您不应该忘记指的是测试自动化的测试金字塔。请在单元测试、集成测试和 UI 测试之间保持平衡 http://martinfowler.com/bliki/TestPyramid.html

两者的主要区别在于,

Espresso 测试在应用程序中进行,它知道应用程序的所有层。所以你可以模拟应用程序的某些层,更像是白盒测试

Appium 测试是黑盒测试,测试只知道应用程序的 UI 层。主要优点是用于跨平台测试。