iOS XCUITest –黄瓜

在XCode中让iOS工程师对BDD感到兴奋。

免责声明:本主题与上下文有关,如何使用Cucumberish可以使iOS开发工程师或UI自动化测试团队受益。

本文旨在通过使用Cucumberish作为其本机iOS开发的一部分来使iOS工程师兴奋。 在介绍Cucumberish库之前,我想快速介绍一些初始要点。

  1. 什么是黄瓜/黄瓜/行为驱动开发(BDD)
  2. 黄瓜测试的结构
  3. 跨平台移动测试工具的一些注意事项

我是一名iOS工程师,并且一直在编写各种iOS自动化测试框架:UIAutomation(使用javascript),Calabash(使用ruby),Sen Testing(目标C),“ XCTest + Gherkin” cocoapods,以及目前的“ Cucumberish”。 我还找到了一种编写XCUITest来断言Google Analyics网络有效负载的方法。 这是一个非常有趣的主题,但是我将其保存在另一篇文章/演讲中……敬请期待。

1.什么是黄瓜/黄瓜/行为驱动的发展(BDD)

Cucumber是一种软件工具,用于使用Gherkin语言执行行为驱动的测试(BDD)。 Gherkin Language本身与平台无关,它为产品所有者和业务分析人员提供了结构化的模板,以通过用例描述业务需求。 它的主要特征是“ Given-When-Then”子句的存在。

行为驱动开发(BDD)

  • 与产品所有者和利益相关者合作以拟定可为客户带来价值的用例规范列表的过程。
  • 这些规范使用Ghenn-When-Then Gherkin语言写入“功能”文件。
  • 即使非工程师也很容易理解功能文件,这促进了整个组织的协作。
  • 可以使用BDD工具(例如黄瓜,阿皮,黄瓜,葫芦,硒)将其自动化。
  • 对于跨平台测试,功能文件是组织具有可在所有平台上使用的集中式规范的绝佳选择。 上面的BDD示例可以在Web和移动应用程序上使用。
  • 在敏捷开发过程中常见。

2.黄瓜测试的结构

  • 黄瓜测试套件包含一组功能文件。 它们每个都有一个“ .feature”扩展名。
  • 功能文件包含一个或多个描述软件特定功能的方案。 使用多行用Gherkin编写的“步骤”来编写方案。
  • 步骤定义是一小段代码 ,上面附加了一个模式 。 该模式用于将步骤定义链接到所有匹配的步骤,并且代码是Cucumber看到小黄瓜步骤时将执行的代码 。 [https://cucumber.io/docs/reference#step-definitions]
  • 一旦定义了步骤,就可以继续为每个步骤编写测试/断言实现 。 请注意,如果使用适当的正则表达式格式,则可以使您的步骤对于测试套件更可重用。

3.关于跨平台移动测试工具的一些说明
在移动领域,市场上有一些工具试图通过引入单独的测试运行器来简化跨平台测试的复杂性。 iOS中使用的最受欢迎的是Calabash和Appium。

在我看来,以上问题是工程团队需要投资的额外开销。实现跨平台功能的另一种想法是,仅跨平台绑定通用功能文件,并允许灵活地选择最合适的测试运行器进行开发效率。 对于iOS开发,理想的情况是我们可以在XCode中执行Gherkin BDD功能文件,并且其步骤定义/实现可以用Swift编写。

哦,是的,还有一个更理想的标准:通过Cocoapods安装!

iOS自动化– XCUITest + Gherkin +存根沙箱– iOS Dev Scout – Engineers.SG
演讲者:肯尼思·潘(Kenneth Poon)活动页面:https://www.meetup.com/Singapore-iOS-Dev-Scout-Meetup/events/232246634/由… Engineers.sg 制作

之前,我在2016年就XCUITest + Gherkin进行了演讲,介绍了XCUITest的基础知识以及如何使用“ XCTest-Gherkin” cocoapod使用Gherkin语言描述BDD测试。 但是,直接使用功能文件时,此库不足。 实际上,README.md文件指出其Gherkin解析器当前尚未准备就绪。

介绍黄瓜

艾哈迈德阿里/黄瓜
Cucumberish是用于行为驱动开发的测试自动化框架。 它的灵感来自惊人的写作方式…… github.com

Cucumberish是一个cocoapod库,可让您在Xcode中运行Cucumber测试。 这是在UI测试中其出色功能的摘要。

  • 通过cocoapods安装。 那有多容易。
  • 允许在XCode中执行BDD功能文件。 它具有全面的文件解析器,使工程师可以使用标记以及数据表。
  • 执行速度与典型的XCUnit / XCUITest一样快。
  • 允许工程师利用XCUITest框架。 没有服务器将被注入您的应用程序
  • 创建一个用于运行测试的XCUITest目标,然后利用多个XCSchemes选择要执行的测试子集。
  • 在功能文件本身的实际行上突出显示断言失败。
  • 最好的部分是,您可以使用Swift(甚至是Objective-C)来实现它。

我们来设置

1.通过Cocoapods安装黄瓜

5.使用给定,何时,然后Objective-C全局方法(步骤2处的图像附件)编写步骤定义。 这些方法注册步骤,以便在测试执行期间评估方案步骤。 有关更多信息,您可能需要查看窗格中的Cucumberish / CCIStepsManager.m文件。

6.您还可以标记功能/场景,以便可以通过方案运行测试的子集。 只需使用’@’表示法并将标签名称作为参数传递给您选择的方案

您可以参考第2点中突出显示的代码,以了解如何解析XCScheme参数以利用黄瓜标记。

7.现在运行Cmd + U,看看Cucumberish发挥了魔力!

它是如何工作的?

  • 当执行“ Cucumberish.executeFeatures ”时,将为位于指定目录中的每个“ .feature ”文件创建一个XCTestCase类。
  • 功能文件中的每个方案都将被解析并转换为相应XCTestCase的测试功能。
  • 每个方案步骤将调用相应的步骤定义(以及先前已定义的步骤定义)。

方案失败时会发生什么

  • 当方案失败时,Cucumberish会将失败的步骤作为错误直接突出显示在功能文件上。

有关迁移到黄瓜的个人提示

  • 如果您使用任何外部第三方测试工具,请检查该工具是否支持使用Gherkin功能文件,并将您的测试用例转换为BDD格式的规范。
  • 使用Cocoapods在您的iOS App工作区中设置Cucumberish。
  • 使用标签和XCScheme可以将测试缓慢添加并迁移到Xcode中的XCUITest目标。

动手/演示/演讲

1.随意尝试我的以Cucumberish为特色的WeatherCucumber项目: https : //github.com/depoon/WeatherCucumber

2.肯尼斯·潘在2018年3月发表的XCUITest +黄瓜演讲(基于此中篇文章)

XCUITest +黄瓜:在Xcode中执行BDD功能文件– iOS Dev Scout – Engineers.SG
演讲者:肯尼斯·潘(Kenneth Poon)这是肯尼斯(Kenneth)在2016年进行的一次演讲(XCUITest + Gherkins)的后续活动。 具备… Engineers.sg 的基础

3.作者艾哈迈德·阿里(Ahmed Ali)在2016年发表的笨拙言论

黄瓜– iOS / Mac OS X风格| 技能专区| 2016年4月14日
加油! 2016年–针对测试人员,开发人员和产品所有者的渐进式BDD会议。 艾哈迈德·阿里(Ahmed Ali):什么时候…… skillmatter.com

结尾

我希望本文能为您提供有关如何使用现有测试套件并将其迁移到Cucumberish的见解。 黄瓜帮助了我的组织,我利用了BDD流程和测试流程。

如果您需要帮助进行设置或使用任何笨拙的工具 ,请随时通过de_poon@hotmail.com给我发送电子邮件。