2017-09-04 131 views
4

我正在寻找来自测试工程师和iOS开发人员关于具体问题的意见。iOS自动测试 - XCTest vs Appium

我一直在使用Appium一年多了,而且在真实设备上运行移动Web测试时遇到了各种困难。每当Apple在XCTest或Safari中进行更改时,Appium都会直接受到影响(即使他们修正了某些问题,但仍会出现其他问题),并且我已经花费更多时间解决与Appium相关的问题,如反对来自AUT的人。

此外,您需要一台Apple电脑来开发和执行Appium iOS测试。所以我想为什么不直接使用XCTest编写使用Swift或XCTest支持的任何语言的测试呢?

我非常感谢来自具有Appium和XCTest(Swift等)自动化测试经验的人士的评论和意见。

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

+0

今天,我还一年后厌倦了Appium。我已经要求我的qa团队领导,我们应该停止在appium上投入时间。这些人不测试他们的发布,他们的发布没有经过测试,他们偶尔会改变。 :/ –

+0

你切换到xcuitest?这是怎么回事? –

+0

我没有。仍在研究。 –

回答

3

正如您已经发现的那样,Appium最大的缺点之一就是它是第三方框架,并且每次Apple发布Xcode时都会破坏它。这是不太可能改变,因为苹果现在维护自己的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可能会在一夜之间永远停止工作。历史上,苹果公司不会在没有至少一年的通知的情况下取消对自己的框架的支持。

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

XCTest周围的社区越来越多,随着更多关于在UI测试中使用它的信息越来越多,以及越来越多的人感觉能够采用它。用于UI测试的框架的很多部分已经用于单元测试多年,所以在添加UI测试支持之前,已经有很多关于使用它的信息。

这两个框架都使用类似的概念 - XCUIApplication类似于Appium的Driver,它允许您访问屏幕上的内容。两种框架提供的功能级别可以说非常相似,因此它取决于您的优先级在哪里 - 具有可靠性(XCTest)或跨其他平台和语言可访问性(Appium)的可重用性。

+2

谢谢。这非常雄辩。 –

4

有些职业选手Appium和XCTest的&缺点:

赞成XCTest的:

  • 苹果自己的产品,以便不太可能有在Xcode中/的iOS新版本的推出兼容性问题浮现
  • 测试运行效率更高(更快和更少的随机错误)
  • 记录/回放功能可以使对象识别更容易这些更靠谱辨认物体
  • 更容易设置比Appium(尤其是iOS版之后10+)

赞成Appium的:

  • 跨越允许更多的代码重用Apple和Android自动化套件

  • 兼容语言的更多选择

  • 黄瓜前端代码兼容

还有其他优点的两种工具&缺点,但有使用这两个我觉得这是主要的(我个人认为)

+1

谢谢。我有一个后续问题。是否可以在XCTEST中编写基于浏览器的测试?我是否可以在Safari上运行测试? –