用于自动化测试框架的 Appium 与 Espresso
Appium vs Espresso for automated testing framework
过去几周,我使用 Appium(python)
进行 android 测试,但昨天我们决定转向 Expresso(Java)
进行自动化测试。我们做出这种转变有几个原因:
我们想扩展我们的自动化测试,有很多 appium 中没有的功能。
这是android的最新测试框架之一,具有良好的向后兼容性。
- 小巧 API 并且非常容易定制。
我一直在阅读 Espresso,但如果我将它与 Appium 进行比较,我没有发现任何好东西。我是 Python/R developer
,所以可能有几点我无法理解。有人愿意帮助我了解转向这个新测试框架是否对未来有好处吗?我在这里错过了大局,我们将不胜感激。
如果你只坚持 Android 自动化并且不知道自动化 iOS,你可以选择 Espresso。
AFIKW,Espresso 需要应用程序的源代码才能使其自动化。
优点是google直接开源。
但我的目标是使用 Appium,因为它是一个大型开源社区,正在不断改进,并且易于使用任何编程语言实现自动化,不用说它同时支持 Android 和 iOS.
- Shifting 将非常有用,因为 Espresso 支持测试应用程序外部的活动,例如 appium 不支持的相机、浏览器和拨号器等。
- Espresso,您可以测试吐司消息、自动完成和应用程序外部的对话框。
- 使用 Espresso Test Suit,您可以找到代码覆盖率并衡量您的测试工作。
我同意 Espresso 在 Android 单独测试时可能非常有效。例如,它可以 运行 仅 activity 它正在测试,这很棒。
我仍然坚持使用 Appium,因为它对 AndroidDriver 和 iOSDriver 具有相同的 API。通常 Android 个应用伴随着 iOS 个应用,如果您负责 UI 自动化,则必须考虑总体成本。
Appium 与特定于平台的解决方案相比具有以下优势:
- Android 和 iOS 测试可以共享许多 classes,包括辅助方法和配置,
- Android 和 iOS 测试可以在更高级别上共享通用测试逻辑,同时在较低级别上具有不同或略有不同的实现(例如,有时我可以只复制整个页面对象 class 并简单更改定位器以使其在其他平台上工作),
- 相同 API 使我们能够在团队中的 iOS 和 Android 测试开发之间无缝切换。轻松切换到 Selenium 进行 Web 开发是额外的好处。
Appium 最大的缺点是较长测试场景的速度和定位元素的一些困难,但仍然是我的选择。
作为旁注,我想补充一点,您不应该忘记指的是测试自动化的测试金字塔。请在单元测试、集成测试和 UI 测试之间保持平衡 http://martinfowler.com/bliki/TestPyramid.html
两者的主要区别在于,
Espresso 测试在应用程序中进行,它知道应用程序的所有层。所以你可以模拟应用程序的某些层,更像是白盒测试
Appium 测试是黑盒测试,测试只知道应用程序的 UI 层。主要优点是用于跨平台测试。
过去几周,我使用 Appium(python)
进行 android 测试,但昨天我们决定转向 Expresso(Java)
进行自动化测试。我们做出这种转变有几个原因:
我们想扩展我们的自动化测试,有很多 appium 中没有的功能。
这是android的最新测试框架之一,具有良好的向后兼容性。
- 小巧 API 并且非常容易定制。
我一直在阅读 Espresso,但如果我将它与 Appium 进行比较,我没有发现任何好东西。我是 Python/R developer
,所以可能有几点我无法理解。有人愿意帮助我了解转向这个新测试框架是否对未来有好处吗?我在这里错过了大局,我们将不胜感激。
如果你只坚持 Android 自动化并且不知道自动化 iOS,你可以选择 Espresso。
AFIKW,Espresso 需要应用程序的源代码才能使其自动化。
优点是google直接开源。
但我的目标是使用 Appium,因为它是一个大型开源社区,正在不断改进,并且易于使用任何编程语言实现自动化,不用说它同时支持 Android 和 iOS.
- Shifting 将非常有用,因为 Espresso 支持测试应用程序外部的活动,例如 appium 不支持的相机、浏览器和拨号器等。
- Espresso,您可以测试吐司消息、自动完成和应用程序外部的对话框。
- 使用 Espresso Test Suit,您可以找到代码覆盖率并衡量您的测试工作。
我同意 Espresso 在 Android 单独测试时可能非常有效。例如,它可以 运行 仅 activity 它正在测试,这很棒。
我仍然坚持使用 Appium,因为它对 AndroidDriver 和 iOSDriver 具有相同的 API。通常 Android 个应用伴随着 iOS 个应用,如果您负责 UI 自动化,则必须考虑总体成本。
Appium 与特定于平台的解决方案相比具有以下优势:
- Android 和 iOS 测试可以共享许多 classes,包括辅助方法和配置,
- Android 和 iOS 测试可以在更高级别上共享通用测试逻辑,同时在较低级别上具有不同或略有不同的实现(例如,有时我可以只复制整个页面对象 class 并简单更改定位器以使其在其他平台上工作),
- 相同 API 使我们能够在团队中的 iOS 和 Android 测试开发之间无缝切换。轻松切换到 Selenium 进行 Web 开发是额外的好处。
Appium 最大的缺点是较长测试场景的速度和定位元素的一些困难,但仍然是我的选择。
作为旁注,我想补充一点,您不应该忘记指的是测试自动化的测试金字塔。请在单元测试、集成测试和 UI 测试之间保持平衡 http://martinfowler.com/bliki/TestPyramid.html
两者的主要区别在于,
Espresso 测试在应用程序中进行,它知道应用程序的所有层。所以你可以模拟应用程序的某些层,更像是白盒测试
Appium 测试是黑盒测试,测试只知道应用程序的 UI 层。主要优点是用于跨平台测试。