【问题标题】:Test Automation - TeamCity + Calabash + JIRA + SpiraTest测试自动化 - TeamCity + Calabash + JIRA + SpiraTest
【发布时间】:2014-11-22 02:24:16
【问题描述】:

我是 TeamCity/Spiratest 的新手,并且有以下要求: (a) 我们必须让 TeamCity 运行 Calabash 测试和 (b) 如果出现故障,则必须通过将屏幕截图记录到 JIRA 来获取缺陷 (c) 最后更新 SpiraTest(我们的测试管理工具)中的通过/失败状态

我遇到了另一个话题:Test Automation: TeamCity with Selenium and SOAPUI and Calabash;但不能在那里问;所以,在这里发布一个新主题。

(A) 您能否详细说明和指导如何配置 TeamCity 以运行 calabash-ios 测试?

(B) 如果您知道如何将结果与测试管理工具 SpiraTest 集成并在 JIRA 中记录失败测试的缺陷;这将是一个很大的帮助。

期待输入。

非常感谢,

【问题讨论】:

    标签: teamcity jira calabash spiratest


    【解决方案1】:

    我正在通过this Calabash-iOS group thread 跟进您的问题。 无法告诉您太多 TeamCity 或 Selenium,我们正在使用 Bamboo 和 JIRA,而我刚刚开始研究将 Calabash 测试与 JIRA 集成。

    (A)部分

    TeamCity、Bamboo 或 Jenkins 之间应该没有太大区别。它们都支持运行自定义 shell 脚本。你需要在你的 CI 盒子上安装 Ruby 和所有需要的 gem(黄瓜、葫芦黄瓜和其他)。 这是我们用于测试的 Bamboo CI 计划示例

    • 结帐 iOS 应用代码
    • 将葫芦框架添加到应用程序(使用calabash-ios设置的shell脚本)
    • 构建 calabash 测试目标(使用 xcodebuild 的 shell 脚本)
    • 签出 Cucumber 测试代码(我们将其保存在单独的 repo 中)
    • 对 iOS 应用测试目标运行 cucumber 测试

    最后一部分是一个简单的shell脚本,类似

    cucumber -p smoke-test
    

    这将运行冒烟测试配置文件并以 HTML 格式创建测试报告。 然后你可以使用 Cucumber Test Report 插件。我确定 Jenkins 和 Bamboo 有一个,所以 TeamCity 应该有一个,或者干脆选择 HTML 并将其作为测试结果发布。

    (B)部分

    我刚开始研究,这里有一些发现。

    Atlassian CLI

    Atlassian 为其所有产品提供一组 CLI,here's the link on their marketplace。 这是一套完整的工具,如果您不想全部下载,可以在市场上搜索仅 JIRA 包。

    这些工具具有适用于类 UNIX 系统的 .sh 脚本和适用于 Windows 的 .bat 文件。 这里是documentation for jira command,这里是some examples。 在您的 CI 盒上安装工具,更新所有路径,您将能够在 CI 任务甚至 Cucumber 步骤和场景挂钩中使用 Atlassian 命令。

    对于 Mac OS X,有几个用于 atlassianjira cli 的自定义 homebrew tap,但每个都以不同的方式安装工具,而且两者都已过时并安装旧版本的 cli。

    另外,还有一个名为 jira-ruby 的 Ruby gem,你必须在 Mac OS X 上安装 atlassian-plugin-sdk homebrew tap。我还没有尝试使用这个 gem,但它看起来很有前途。

    使用标签和场景挂钩

    这就是我现在正在尝试做的事情。

    使用 JIRA,您肯定会遇到项目的用户故事、错误和其他类型的问题。 通常 Cucumber Scenario 将与某个 User Story 相关,或者您可以为一个 User Story 设置多个场景,甚至可以在多个 User Stories 之间共享一个场景。

    我们还有一些场景是针对 JIRA 中特定错误的回归测试。

    无论如何,您可以使用标签将 Calabash/Cucumber 场景链接到 JIRA 问题和项目。 使用项目名称标记每个功能,例如 @JIRA-PROJECT-,还使用 ​​JIRA 问题名称标记场景 @JIRA-ISSUE-.

    这是一个例子

    @JIRA-PROJECT-X
    Feature: Some Feature for project X
      Feature Description
    
    @JIRA-ISSUE-X-123
    Scenario: Some Scenario for User Story or Bug X-111
      <steps>
    

    然后使用After Scenario Hooks。 当钩子被执行时,你有Scenario classscenario 对象。 该对象包含更新 JIRA 所需的所有信息。 它有 passed?failed? 方法,更重要的是,所有的标签。

    puts scenario.source_tag_names.join(", ")
    # => @JIRA-ISSUE-X-123, @JIRA-PROJECT-X
    

    现在您可以从标签中找出 JIRA 项目和所有相关问题,并为每个问题创建测试会话。测试会话只是具有适当父级的“测试”类型的另一个问题。请参见下面的粗略示例,需要对其进行修改以针对与场景相关的每个问题创建测试会话。

    After do |scenario|
      project = scenario.source_tag_names.find { |t| t.start_with?("@JIRA-PROJECT") }.gsub("@JIRA-PROJECT-", "")
      issue = scenario.source_tag_names.find { |t| t.start_with?("@JIRA-ISSUE") }.gsub("@JIRA-ISSUE-", "")
      summary = "<Test Summary, passed or failed, etc..."
    
      # use proper jira executable name depending on your installation
      system("jira.sh -s <jira-server> -u <jira-user> -p <jira-password> -a createIssue --project #{project} --type test --summary '#{summary}' --parent #{issue}")
      # the same can be done using jira-ruby gem
    end
    

    测试完成后更新 JIRA

    另一种方法是让 Calabash 先运行它的过程,然后解析 HTML 报告并用单个批次的测试结果更新 JIRA。 JIRA CLI 有一个特殊的操作,称为 run(还有 runFromCsv 等)。

    您可以使用场景挂钩将 JIRA 操作写入文件,并在测试完成后将此文件与 JIRA CLI run 操作一起使用,而不是解析 HTML。

    附言

    由于我是第一次这样做(整个 Calabash 和 JIRA 集成),我不能确定这是做事的正确方式。 JIRA 有一些插件,称为Behave,可能就是您需要的。不过,我不知道它是否与 Calabash 搭配得很好。

    【讨论】:

      猜你喜欢
      • 2013-09-10
      • 2016-06-14
      • 1970-01-01
      • 2012-07-19
      • 2012-09-27
      • 2011-01-31
      • 2015-07-14
      • 1970-01-01
      • 2010-10-19
      相关资源
      最近更新 更多