Миграция тест-кейсов Zephyr с сервера Jira на облако Jira - PullRequest
0 голосов
/ 11 марта 2019

Сейчас мы находимся в процессе миграции с сервера Jira в облако Jira. Мы используем зефир для тестовых случаев. На данный момент у нас есть 1843, и они должны быть перенесены как другие билеты в облако Jira. Нам не нужно переносить все тестовые циклы и всю историю выполнения тестов, нам нужны только тестовые случаи, чтобы использовать их в будущих тестовых циклах.

Эта статья содержит ответ на тот же вопрос https://support.getzephyr.com/hc/en-us/community/posts/205799785-How-to-migrate-from-JIRA-Server-to-JIRA-Cloud

но утилита у меня не работает, после нажатия кнопки «Начать импорт» ничего не происходит. Как перенести тестовые случаи с сервера Jira в облако с помощью Test Steps в Zephyr?

1 Ответ

0 голосов
/ 11 марта 2019

Наконец-то я нашел решение, как автоматически импортировать все 1843 тестовых случая через инструмент из статьи, упомянутой в вопросе.

  1. Наши тесты были перенесены в облако Jira как обычные билеты. У них нет тестовых шагов, но есть вся другая информация, такая как описание, метки и другая информация, относящаяся к полям Jira. Далее я покажу, как перенести все шаги в перенесенные тестовые случаи без шагов.

  2. Перейдите к Jira и экспортируйте тестовые случаи, которые вам нужны в файл Excel. Это можно сделать с этого экрана https://zephyrdocs.atlassian.net/wiki/spaces/ZTD/pages/12386325/Search+Test+Executions

  3. Загрузите файл .jar из https://bitbucket.org/zfjdeveloper/zfj-importer/downloads/

  4. В cmd запустите этот файл jar с помощью команды java -jar zfj-importer-utility-0.40.jar Я попытался запустить jar-файл двойным щелчком, приложение открывается, но после настройки и нажатия кнопки Start Import ничего не происходит. Только после открытия из cmd все работает. Плюс в cmd вы можете увидеть информацию о прогрессе и ошибках, которая поможет вам в отладке.

  5. Настройка утилиты, как в документации https://bitbucket.org/zfjdeveloper/zfj-importer/wiki/Home

  6. На данный момент я думал, что после нажатия Start Import все будет отлично, но нет. В консоли я обнаружил много ошибок, их причиной было много разрывов строк внутри шагов теста. Допустим, у вас есть один шаг с одной строкой в ​​поле Шаг, одна строка В поле «Тестовые данные», но в поле «Результат выполнения» у вас есть текст с переносами строк, скажем, 4 строки. Для этого случая в Excel в поле Результат выполнения будет 4 разных столбца, поле шага и данные теста в виде одного объединенного столбца. А на основе правил полезности невозможно получить результат без шага. (такая проблема может быть, если у вас есть разрыв строки в поле Step и Test Data). 3 cells with result for one step Ниже я покажу, как я справляюсь с этим.

  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. в верхней части кода, установленного в последней строке переменной lastTableRow с шагом Test Case в вашем Excel.

  4. Теперь нам нужно 3 новых столбца, чтобы сохранить перенесенные поля Step, Test Data и Result. Для этого мы можем использовать последний столбец Комментарии, скопировать и вставить его два раза. Теперь у нас есть 3 пустых столбца W, X, Y для нашей цели.

  5. Для всех строк в столбце W примените формулу = ConvertSteps (), чтобы объединить шаги (это может занять некоторое время)

  6. Для всех строк в столбце X примените формулу = ConvertTestData (), чтобы объединить тестовые данные (это может занять некоторое время)

  7. Для всех строк в столбце Y примените формулу = ConvertResult (), чтобы объединить результаты (это может занять некоторое время) enter image description here

  8. Теперь мы должны преобразовать значения в новых столбцах из формулы в их строковое значение. Для этого выделите всю таблицу и нажмите Ctrl + C. Затем нажмите правую кнопку и выберите прошлые значения.

  9. Запустите макросы DeleteBlankRows, чтобы удалить все строки, которые нам не нужно импортировать.

  10. Сохранить файл в формате .xml.

  11. Выберите этот файл в утилите и нажмите Начать импорт

  12. В cmd вы можете увидеть несколько ошибок. В моем случае они были переведены в ситуацию, когда нет описания шага, но есть ожидаемый результат. Если они встречаются довольно редко, как в моем случае, проще изменить их вручную в файле Execel. Если их много, вы можете обработать этот случай в пользовательской функции.enter image description here

Вот и все, это решение помогло мне импортировать 1800+ тестовых случаев.Я экспортировал их частично, на 500, и мне требуется около 3 часов, чтобы импортировать все тестовые случаи.

...