iOS自动化测试 - XCTest与Appium

时间:2017-09-04 22:43:45

标签: ios automated-tests xctest appium-ios

我正在寻找测试工程师和iOS开发人员对特定事项的意见。

我已经使用Appium超过一年了,在真实设备上运行移动网络测试时遇到了各种困难。每次Apple在XCTest或Safari中进行更改时,Appium都会受到直接影响(即使他们修复了某些内容,其他问题也会出现问题),而且我已经花了更多的时间来解决与Appium相关的问题。反对来自AUT的那些。

此外,无论如何,您需要Apple计算机来开发和执行Appium iOS测试。所以我想为什么不直接使用XCTest来编写使用Swift或XCTest支持的语言的测试?

我非常感谢那些有Appium和XCTest(Swift等)自动化测试经验的人的意见和建议。

使用Appium在XCTest上自动执行iOS本机和Web应用程序测试有什么好处?

2 个答案:

答案 0 :(得分:15)

正如您已经发现的那样,Appium最大的缺点之一就是它是第三方框架,每次Apple发布Xcode时它都会破坏。这不太可能改变,因为Apple现在维护着自己的UI测试框架。

使用Appium还有其他一些优点 - 您可以从很多语言中选择(Java,Ruby,Python,C#...),这使任何可以使用这些非常流行的语言编程的人都可以访问它,你可以想象在iOS和Android上的同一个应用程序的测试之间共享代码。

根据我的经验,虽然有很多人在那里使用Appium,但社区支持的水平并不能弥补令人失望的维护水平;除了Appium与Xcode的兼容性的脆弱性之外,我发现一些关键功能在一些绑定中仍未实现,例如:在Python中滚动。

通过UI测试,可靠性是框架最重要的方面。如果没有可靠性,您就无法信任测试来标记问题,而且没有信任,您的测试对您和您的团队几乎没有任何价值。这就是我推荐XCTest优于任何第三方框架的原因。

使用XCTest,您永远不必担心无法更新您的Xcode版本,并且该框架仍按照Apple的发布标准进行维护。与所有iOS UI测试框架一样,存在一些错误(特别是在拾取器周围),但我发现框架的稳定性以及Apple拥有的事实超​​过了奇怪错误的缺点。

得到Apple的支持是使用XCTest的重要原因,因为Apple可以删除对Appium所依赖的API的访问权限,而Appium可能会在一夜之间永远停止工作。从历史上看,如果没有至少一年的通知,Apple不会简单地删除对自己框架的支持。

要直接使用XCTest,您需要使用Swift(推荐)或Objective-C。没有像Appium那样多的语言选择,但对两种语言的支持是一致的,因为它们都使用相同的实现。 Swift是一种强大的语言选择,特别是对于大型项目,因为它的类型安全性允许您在运行之前注意到许多编程错误。这两种语言在Xcode中也为您提供了很好的智能感知(自动完成)支持,而这种支持并不是开箱即用的,而是动态的' Python或Ruby等语言。

XCTest周围的社区正在增长,因为有更多关于在UI测试中使用它的信息,并且更多人感觉能够采用它。用于UI测试的框架的许多部分已经用于单元测试多年,因此在添加UI测试支持之前,已经有很多关于使用它的信息。

两个框架都使用类似的概念 - XCUIApplication类似于Appium的驱动程序,它可以让您访问屏幕上的内容。这两个框架提供的功能水平可以说是非常相似的,因此它取决于您的优先级所在 - 可靠性(XCTest)或其他平台和语言可访问性(Appium)的可重用性。

答案 1 :(得分:10)

一些专业人士Appium和XCTest的缺点:

支持XCTest:

  • Apple推出自己的产品,因此在推出新版Xcode / iOS时不太可能出现兼容性问题
  • 测试运行效率更高(更快,更少随机错误)
  • 记录/播放功能可以说使某些更难识别物体的对象识别更容易识别
  • 比Appium更容易设置(特别是在iOS 10 +之后)

支持Appium:

  • 允许在Apple和Android自动化套件中重复使用更多代码

  • 更多兼容语言选择

  • 与黄瓜前端代码兼容

还有其他专业人士和两种工具的缺点,但使用了两者,我觉得这些是主要的(在我个人看来)

相关问题