0

现在我们正在从 Jira 服务器迁移到 Jira 云。我们将 Zephyr 用于测试用例。目前我们有 1843,它们必须作为其他票证迁移到 Jira 云。我们不需要迁移所有的测试周期和所有的测试执行历史,我们只需要测试用例就可以在未来的测试周期中使用它。

本文包含对同一问题的答案 https://support.getzephyr.com/hc/en-us/community/posts/205799785-How-to-migrate-from-JIRA-Server-to-JIRA-Cloud

但实用程序对我来说无法正常工作,按下开始导入按钮后没有任何反应。如何使用 Zephyr 中的测试步骤将测试用例从服务器 Jira 迁移到云?

4

1 回答 1

0

最后,我从问题中提到的文章中找到了如何通过工具自动导入所有 1843 个测试用例的解决方案。

  1. 我们的测试用例像往常一样迁移到云 Jira。他们没有测试步骤,但有所有其他信息,如描述、标签和其他与 Jira 字段相关的信息。此外,我将展示如何在没有步骤的情况下将所有步骤迁移到迁移的测试用例。

  2. 转到您的 Jira 并将您需要的测试用例导出到 Excel 文件。可以从此屏幕完成 https://zephyrdocs.atlassian.net/wiki/spaces/ZTD/pages/12386325/Search+Test+Executions

  3. https://bitbucket.org/zfjdeveloper/zfj-importer/downloads/下载 .jar 文件

  4. 在 cmd 中通过命令 java -jar zfj-importer-utility-0.40.jar 运行这个 jar 文件我尝试通过双击运行 jar 文件,应用程序打开,但是在配置并按下按钮 Start Import 之后没有任何反应。只有从 cmd 打开后一切正常。另外,在 cmd 中,您可以查看进度和错误详细信息,这将有助于您进行调试。

  5. 按照文档https://bitbucket.org/zfjdeveloper/zfj-importer/wiki/Home配置实用程序

  6. 在这一点上,我虽然按下开始导入后一切都会完美,但不是。在控制台中我发现了很多错误,他们的原因是测试步骤中有很多换行符。假设您在步骤字段中有一个步骤,在测试数据字段中有一行,但在执行结果字段中您有带换行符的文本,比如说 4 行。对于这种情况,excel 执行结果字段将是 4 个不同的列,步骤字段和测试数据作为一个合并列。并且根据效用规则,没有步骤就不可能有结果。(如果您在步骤字段和测试数据中有换行符,则可能会出现此类问题)。 3 个单元格,一步有结果 下面我将展示我如何处理它。

  7. 我决定编写 Excel 函数,该函数将一步从未合并的行中获取行,将它们连接起来并提供导入。请原谅我的 VBA,我以前从未使用过它。我写的所有东西都可以用更好的方式和一个脚本重写,但它对我有用,我不想在这个问题上花更多时间,所以放手吧。下面你可以找到4个excel函数。其中3个非常相似,不同之处仅在于一个字母。最后一个脚本用于删除连接的空行,如果没有它,将创建值为“null”的步骤。

Public Const lastTableRow = 3872

Function ConvertSteps()
    Dim callerRow As Long
    Dim isValueInStepId As Boolean
    Dim isNoValueInNextStepId As Boolean
    Dim result As String
    Dim baseColumnLetter As String
    Dim stepIdColumnLetter As String

    callerRow = Application.Caller.row
    baseColumnLetter = "S"
    stepIdColumnLetter = "Q"

    Debug.Print "processed row is: " & callerRow

    isValueInStepId = (Range(stepIdColumnLetter & callerRow).Value <> "")
    isNoValueInNextStepId = (Range(stepIdColumnLetter & (callerRow + 1)).Value = "")

    If isValueInStepId And isNoValueInNextStepId Then
        Dim i As Integer
        i = 1

        result = Range(baseColumnLetter & callerRow).Value

        Do While Range(stepIdColumnLetter & (callerRow + i)).Value = "" And (callerRow + i) <= lastTableRow
            result = result & "     " & Range(baseColumnLetter & (callerRow + i)).Value

            i = i + 1
        Loop

        ConvertSteps = result
    Else
        If Range(baseColumnLetter & (callerRow)).Value = "" Then
            ConvertSteps = ""
        Else
            ConvertSteps = Range(baseColumnLetter & (callerRow)).Value
        End If
    End If
End Function

Function ConvertTestData()
    Dim callerRow As Long
    Dim isValueInStepId As Boolean
    Dim isNoValueInNextStepId As Boolean
    Dim result As String
    Dim baseColumnLetter As String
    Dim stepIdColumnLetter As String

    callerRow = Application.Caller.row
    baseColumnLetter = "T"
    stepIdColumnLetter = "Q"

    Debug.Print "processed row is: " & callerRow

    isValueInStepId = (Range(stepIdColumnLetter & callerRow).Value <> "")
    isNoValueInNextStepId = (Range(stepIdColumnLetter & (callerRow + 1)).Value = "")

    If isValueInStepId And isNoValueInNextStepId Then
        Dim i As Integer
        i = 1

        result = Range(baseColumnLetter & callerRow).Value

        Do While Range(stepIdColumnLetter & (callerRow + i)).Value = "" And (callerRow + i) <= lastTableRow
            result = result & "     " & Range(baseColumnLetter & (callerRow + i)).Value

            i = i + 1
        Loop

        ConvertTestData = result
    Else
        If Range(baseColumnLetter & (callerRow)).Value = "" Then
            ConvertTestData = ""
        Else
            ConvertTestData = Range(baseColumnLetter & (callerRow)).Value
        End If
    End If
End Function

Function ConvertResult()
    Dim callerRow As Long
    Dim isValueInStepId As Boolean
    Dim isNoValueInNextStepId As Boolean
    Dim result As String
    Dim baseColumnLetter As String
    Dim stepIdColumnLetter As String

    callerRow = Application.Caller.row
    baseColumnLetter = "U"
    stepIdColumnLetter = "Q"

    Debug.Print "processed row is: " & callerRow

    isValueInStepId = (Range(stepIdColumnLetter & callerRow).Value <> "")
    isNoValueInNextStepId = (Range(stepIdColumnLetter & (callerRow + 1)).Value = "")

    If isValueInStepId And isNoValueInNextStepId Then
        Dim i As Integer
        i = 1

        result = Range(baseColumnLetter & callerRow).Value

        Do While Range(stepIdColumnLetter & (callerRow + i)).Value = "" And (callerRow + i) <= lastTableRow
            result = result & "     " & Range(baseColumnLetter & (callerRow + i)).Value

            i = i + 1
        Loop

        ConvertResult = result
    Else
        If Range(baseColumnLetter & (callerRow)).Value = "" Then
            ConvertResult = ""
        Else
            ConvertResult = Range(baseColumnLetter & (callerRow)).Value
        End If
    End If
End Function

Public Sub DeleteBlankRows()
    Dim SourceRange As Range
    Dim EntireRow As Range

    Set SourceRange = Range("Q1", "Q" & lastTableRow)

    If Not (SourceRange Is Nothing) Then
        Application.ScreenUpdating = False

        For i = SourceRange.Rows.Count To 1 Step -1

            Set EntireRow = SourceRange.Cells(i, 1).EntireRow

            Debug.Print SourceRange.Cells(i, 1).Value

            If SourceRange.Cells(i, 1).Value = 0 Then
                EntireRow.Delete
            End If
        Next

        Application.ScreenUpdating = True
    End If
End Sub
  1. 让我们打开 Excel 文件并将其保存为 .xlsm 格式以应用自定义函数。

  2. 将函数导入 Excel

  3. 在 Excel 中带有测试用例步骤的变量 lastTableRow 最后一行的代码集的顶部。

  4. 现在我们需要 3 个新列来保存传输的步骤、测试数据和结果字段。为此,我们可以使用最后一列的注释,复制并粘贴两次。现在我们有 3 个空列 W、X、Y 用于我们的目的。

  5. 对于 W 列中的所有行,应用公式 =ConvertSteps() 来聚合步骤(可能需要一些时间)

  6. 对于 X 列中的所有行,应用公式 =ConvertTestData() 来聚合测试数据(可能需要一些时间)

  7. 对于 Y 列中的所有行,应用公式 =ConvertResult() 来汇总结果(可能需要一些时间) 在此处输入图像描述

  8. 现在我们必须将新列中的值从公式转换为它们的字符串值。为此,请选择所有表并按 Ctrl+C。然后按右键并选择过去的值。

  9. 运行 DeleteBlankRows 宏来删除我们不需要导入的所有行。

  10. 以 .xml 格式保存文件。

  11. 在 Utility 中选择此文件,然后按 Start Import

  12. 在 cmd 中,您可以看到一些错误。在我的情况下,当没有步骤描述但有预期的结果时,它们会受到影响。如果它们很少像我的情况一样,那么在 Execel 文件中手动更改它会更容易。如果它们很多,您可以在自定义函数中处理这种情况。 在此处输入图像描述

就是这样,这个解决方案帮助我导入了 1800 多个测试用例。我已经将它们部分导出了 500 个,对我来说导入所有测试用例大约需要 3 个小时。

于 2019-03-11T09:12:21.207 回答