iOS自动化测试 - XCTest与Appium

Joh*_*ith 12 automated-tests ios xctest appium-ios

我正在寻找测试工程师和iOS开发人员对特定问题的意见.

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

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

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

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

Ole*_*tha 16

正如您已经发现的那样,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的Driver,它可以让您访问屏幕上的内容.两个框架提供的功能水平可以说非常相似,因此它取决于您的优先级所在 - 可靠性(XCTest)或跨其他平台的可重用性和语言可访问性(Appium).

  • 谢谢.这非常雄辩. (3认同)

Cha*_*man 10

Appium和XCTest的一些优点和缺点:

赞成XCTest:

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

赞成Appium:

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

  • 更多兼容语言的选择

  • 兼容Cucumber前端代码

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

  • 谢谢。我确实有一个后续问题。是否可以在XCTEST中编写基于浏览器的测试?我可以在Safari上运行的测试? (2认同)