测试自动化 - TeamCity + Calabash + JIRA + SpiraTest

时间:2013-10-01 14:35:55

标签: teamcity jira calabash spiratest

我是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中记录失败测试的缺陷;这将是一个很大的帮助。

期待投入。

非常感谢,

1 个答案:

答案 0 :(得分:3)

我正在跟进this Calabash-iOS group thread的问题。 不能告诉你很多TeamCity或Selenium,我们正在使用Bamboo和JIRA,我刚开始考虑将Calabash测试与JIRA集成。

(A)部分

TeamCity,Bamboo或Jenkins之间不应有任何重大差异。它们都支持运行自定义shell脚本。你需要在你的CI盒子上安装Ruby以及所需的所有宝石(黄瓜,葫芦黄瓜和其他宝石)。 以下是我们用于测试的Bamboo CI计划的示例

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

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

cucumber -p smoke-test

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

(B)部分

我刚开始研究,这是一些调查结果。

Atlassian CLI

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

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

对于Mac OS X,atlassianjira cli有几个自定义自制软件点击,但每个都以不同方式安装工具,两者都已过时并安装旧版本的cli。

此外,还有一个名为jira-ruby的Ruby宝石,你必须在Mac OS X上安装atlassian-plugin-sdk homebrew tap。我还没有尝试使用这个宝石,但看起来很有希望。< / p>

使用标签和场景钩子

这是我现在要做的事情。

使用JIRA,您确定会为项目提供这些用户故事,错误和其他类型的问题。 通常,黄瓜场景将与某个用户故事相关,或者您可以为一个用户素材创建多个场景,或者甚至在多个用户故事之间共享一个场景。

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

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

这是一个例子

@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 class场景对象。 此对象包含更新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对此进行了特殊处理,称为运行(也是 runFromCsv 等)。

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

P.S。

由于我是第一次这样做(整个Calabash&amp; JIRA集成),我不能确定这是正确的做事方式。 JIRA有一些名为Behave的插件,可能就是你所需要的。不过,我不知道它是否适合与Calabash合作。