Appium v​​s Espresso 用于自动化测试框架

Posted

技术标签:

【中文标题】Appium v​​s Espresso 用于自动化测试框架【英文标题】:Appium vs Espresso for automated testing framework 【发布时间】:2016-06-05 16:55:51 【问题描述】:

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

我们想要扩展我们的自动化测试,并且有很多 appium 中没有的功能。

这是最新的android测试框架之一,具有很好的向后兼容性。

API 小,非常容易定制。

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

【问题讨论】:

别忘了分享您的经验/印象 【参考方案1】:
    Shifting 将非常有用,因为 Espresso 支持在应用程序之外测试 appium 不支持的活动,例如相机、浏览器和拨号器等。 Espresso 您可以测试应用外的 toast 消息、自动完成和对话框。 使用 Espresso 测试套件,您可以找到代码覆盖率并衡量您的测试工作。

【讨论】:

我不确定您是否可以使用 Espresso 在您的应用程序之外进行测试。为此,您需要使用 ui-automator 之类的东西。见developer.android.com/training/testing/ui-testing/… 和developer.android.com/training/testing/ui-testing/… @YairKukielka 没错,Espresso 不支持在应用程序之外进行测试,但它可以与 UiAutomator 协同工作。因此,在相同的测试代码中,您可以编写 Espresso 以及 UiAutomator 并在应用程序内外进行测试。参考:plus.google.com/+AndroidDevelopers/posts/WCWANrPkRxg 您可以使用 Espresso Intent 在您的应用之外测试相机和手机的拨号器活动。这就是我在回答中的意思。 我认为最重要的一点是:您只需在与 Appium 的集成级别上测试端到端/。这些往往是不确定的,在我看来,这些测试或多或少是无用的。测试失败很难调查。此外:随着复杂的工作流程或越来越多的测试,它们根本无法扩展。解决方案是逐个测试组件(例如每个 Activity),这要快得多、可靠、可追溯、适应性强(可移动)等等。 Appium 无法做到这一点。【参考方案2】:

如果您只坚持 Android 自动化并且对 ios 自动化一无所知,您可以选择 Espresso。

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

优点是,它是google直接开源的。

但我会选择 Appium,因为它是一个大型的开源社区,在开发过程中具有巨大的增强功能,并且易于使用任何编程语言实现自动化,更不用说它同时支持 Android 和 iOS。

【讨论】:

我同意你的观点。 您能澄清一下您所说的“巨大的改进”是什么意思吗?我找不到太多意义。 我认为 appium 支持非常低的 api 级别现在仍然只有 5.0,这不是很好。【参考方案3】:

我同意 Espresso 仅在 Android 测试方面可能非常高效。例如,它只能运行它正在测试的活动,这很棒。

不过,我还是坚持使用 Appium,因为它为 AndroidDriver 和 iOSDriver 提供了相同的 API。通常,Android 应用程序伴随着 iOS 应用程序,如果您负责 UI 自动化,则必须考虑总体成本。

Appium 与特定平台解决方案相比具有以下优势:

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

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

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

【讨论】:

在稳定性和长期维护成本方面您有什么建议? Appium 还是 Espresso?【参考方案4】:

两者的主要区别在于,

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

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

【讨论】:

以上是关于Appium v​​s Espresso 用于自动化测试框架的主要内容,如果未能解决你的问题,请参考以下文章

appium desktop

appium capabilities

Android 手机自动化测试工具有哪几种

app自动测试-微信web-1

用于在 android 中列出元素的 xPath(使用 appium 自动化)

自动化测试用例适用于 appium 命令行工具,但不适用于桌面客户端