现在,我们正在从Jira服务器迁移到Jira云的过程中。 我们将Zephyr用于测试用例。 目前,我们有1843个,必须像其他门票一样迁移到Jira cloud。 我们不需要迁移所有测试周期和测试执行的所有历史记录,我们只需要测试用例就可以在以后的测试周期中使用它。
本文包含有关同一问题的答案 https://support.getzephyr.com/hc/en-us/community/posts/205799785-How-to-migrate-from-JIRA-Server-to-JIRA-Cloud
但是该实用程序对我而言无法正常工作,在按“开始导入”按钮后,什么也没有发生。 如何通过Zephyr中的“测试步骤”将测试用例从服务器Jira迁移到云?
答案 0 :(得分:0)
最后,我从问题中提到的文章中找到了如何通过工具自动导入所有1843个测试用例的解决方案。
我们的测试用例像往常一样被迁移到Jira云中。它们没有测试步骤,但是具有所有其他信息,例如“描述”,“标签”以及与Jira字段相关的其他信息。此外,我将展示如何将所有步骤迁移到没有步骤的已迁移测试用例。
转到您的Jira并导出到Excel文件所需的测试用例。可以在此屏幕上完成 https://zephyrdocs.atlassian.net/wiki/spaces/ZTD/pages/12386325/Search+Test+Executions
从 https://bitbucket.org/zfjdeveloper/zfj-importer/downloads/
在cmd中通过命令java -jar zfj-importer-utility-0.40.jar运行此jar文件 我试图通过双击运行jar文件,打开了应用程序,但是在配置并按下“开始导入”按钮后,什么也没发生。 只有从cmd打开后,一切正常。 另外,在cmd中,您可以查看进度和错误详细信息,这将有助于您进行调试。
配置实用程序,如文档https://bitbucket.org/zfjdeveloper/zfj-importer/wiki/Home
在这一点上,我虽然在按下Start Import之后一切都将是完美的,但是没有。 在控制台中,我发现了很多错误,其原因是测试步骤中有很多换行符。 假设您有一个步骤,在“步骤”字段中有一行,在“测试数据”字段中有一行,但是在“执行结果”字段中,您有带换行符的文本,比如说四行。对于这种情况,在excel中,执行结果字段将是4个不同的列,将“步骤”字段和“测试数据”作为一个合并的列。 而且根据效用规则,如果没有步骤就不可能有结果。 (如果您在“步骤”字段和“测试数据”中有换行符,则可能出现此问题)。 下面,我将说明如何处理。
我决定编写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
让我们打开Excel文件并将其保存为.xlsm格式以应用自定义功能。
将功能导入Excel
在变量lastTableRow中设置的代码顶部,最后一行在Excel中带有“测试用例”步骤。
现在,我们需要3个新列来保存已传输的“步骤”,“测试数据”和“结果”字段。为此,我们可以使用最后一栏的注释,将其复制并粘贴两次。现在我们有3个空列W,X,Y供我们使用。
对于W列中的所有行,应用公式= ConvertSteps()汇总步骤(可能需要一些时间)
对于X列中的所有行,应用公式= ConvertTestData()汇总测试数据(可能需要一些时间)
现在,我们必须将新列中的值从公式转换为它们的字符串值。为此,请选择所有表格,然后按Ctrl + C。然后按右键并选择过去的值。
运行DeleteBlankRows宏以删除我们不需要导入的所有行。
以.xml格式保存文件。
在“实用程序”中选择此文件,然后按“开始导入”
在cmd中,您会看到一些错误。在我的情况下,将它们重新设置为没有步骤描述但可以预期的结果。如果像我这样很少使用它们,则更容易在Execel文件中手动更改它。如果它们很多,则可以在自定义函数中处理这种情况。
就这样,此解决方案帮助我导入了1800多个测试用例。 我已经部分导出了它们,到了500,对于我来说,导入所有测试用例大约需要3个小时。