4

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

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

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

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

期待输入。

非常感谢,

4

1 回答 1

3

我正在从这个 Calabash-iOS 组线程中跟进您的问题。不能告诉你太多 TeamCity 或 Selenium,我们正在使用 Bamboo 和 JIRA,我刚刚开始研究 Calabash 测试与 JIRA 的集成。

(A) 部分

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

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

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

cucumber -p smoke-test

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

(B) 部分

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

Atlassian CLI

Atlassian 的所有产品都有一套 CLI,这是他们市场上的链接。这是一套完整的工具,如果您不想下载所有工具,可以在市场上搜索 JIRA-only 包。

这些工具具有适用于类 UNIX 系统的.sh脚本和适用于 Windows 的.bat文件。这是jira 命令的文档,这里有一些示例。在 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 将与某个用户故事相关,或者您可以为一个用户故事有多个场景,甚至可以在多个用户故事之间共享一个场景。

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

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

这是一个例子

@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类的场景对象。该对象包含更新 JIRA 所需的所有信息。已经过去了?失败了?方法,更重要的是,所有的标签。

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运行操作一起使用,而不是解析 HTML。

附言

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

于 2013-10-05T06:33:09.047 回答