Как перенести тестовые примеры MTM из TFS 2013 в VSTS?

#visual-studio #tfs #azure-devops #microsoft-test-manager #mtm

#visual-studio #tfs #azure-devops #microsoft-test-manager #mtm

Вопрос:

У нас есть наследие из тысяч ручных тестовых примеров, созданных в Microsoft Test Manager в нашей локальной TFS 2013.

Мы пытаемся перенести их в VSTS, и это оказалось непросто.


Я.

Насколько я вижу, на данный момент официального инструмента миграции от Microsoft нет, хотя они работают над одним для полной миграции данных


II.

Мы попробовали несколько сторонних инструментов:

  • Версия без OpsHub имеет ограничение в 2500, которое мы превышаем, и мы не можем оправдать стоимость коммерческой версии в 5000 долларов
  • Инструменты интеграции TFS — похоже, вообще не переносят тестовые примеры (документация по ссылке подтверждает это)
  • MTMCopyTool — похоже, не переносит этапы тестовых примеров, оставляет их пустыми

III.

Мы также пробовали экспортировать-импортировать запрос TFS VSTS в Excel. Который, похоже, тоже экспортирует шаги, но все они объединены в одном поле, между ними нет даже символа новой строки, что делает его довольно запутанным.


IV.

Мы также пытались использовать инструмент третьей части для экспорта-импорта через Excel:

  • для экспорта: https://tfstestcaseexporttoexcel.codeplex.com / — кажется, экспортирует все нормально, включая Шаги! Не уверен, как импортировать этот файл в VSTS
  • для импорта: Test Case Migrator Plus просто вылетает на моей машине, хотя исходный код доступен, поэтому, возможно, я попробую поиграть с ним

Комментарии:

1. Единственный инструмент полной миграции принимает клиенты предварительного просмотра. Возможно, вам потребуется связаться со службой поддержки или партнером ALM, чтобы помочь вам попасть в список.

2. На данный момент я бы не стал пробовать ничего другого.

3. Вы решаете эту проблему с помощью ответа aforcina?

Ответ №1:

Для одноразовой миграции я могу предложить несколько вариантов:

  1. Из центра тестирования в локальном веб-доступе создайте план тестирования, включающий все тестовые примеры, а затем переключитесь на представление таблицы на главной панели. Там вы можете выбрать и скопировать все тестовые примеры (включая шаги, ожидаемые результаты и другие поля тестового примера) и вставить их в эквивалентное представление в проекте VSTS.

  2. Создайте сценарий powershell, который получает все тестовые примеры из локальной TFS и копирует их в VSTS. Ниже вы можете найти фрагмент. Предостережение: я не тестировал его подробно, поэтому применяются обычные оговорки. Пожалуйста, добавьте дополнительные поля, которые вы, возможно, захотите скопировать.

     $VerbosePreference = "Continue"
    
    $tfsSource="the collection url that you want to copy form (eg. http://yourserver/tfs/yourcollection)";
    $tpSource="the team project containing the test cases you want to copy form";
    
    $tfsDest="the collection url that you want to copy to (eg. https://youraccount.visualstudio.com/DefaultCollection");
    $tpDest="the team project containing the test cases you want to copy to";
    
    
    [Reflection.Assembly]::LoadWithPartialName(‘Microsoft.TeamFoundation.Client’)
    [Reflection.Assembly]::LoadWithPartialName(‘Microsoft.TeamFoundation.TestManagement.Client’)
    [Reflection.Assembly]::LoadFile("C:Program Files (x86)Microsoft Visual Studio 12.0Common7IDEPrivateAssembliesNewtonsoft.Json.dll")
    
    $sourceTpc = [Microsoft.TeamFoundation.Client.TfsTeamProjectCollectionFactory]::GetTeamProjectCollection($tfsSource)
    $sourceTcm = $sourceTpc.GetService([Microsoft.TeamFoundation.TestManagement.Client.ITestManagementService])
    $sourceProject = $sourceTcm.GetTeamProject($tpSource);
    $sourceTestCases = $sourceProject.TestCases.Query(“SELECT * FROM WorkItem”);
    
    $destTpc= [Microsoft.TeamFoundation.Client.TfsTeamProjectCollectionFactory]::GetTeamProjectCollection($tfsDest)
    $destTcm = $destTpc.GetService([Microsoft.TeamFoundation.TestManagement.Client.ITestManagementService])
    $destProject = $destTcm.GetTeamProject($tpDest);
    
    
    foreach ($tc in $sourceTestCases)
    {
        Write-Verbose ("Copying Test Case {0} - {1}" -f $tc.Id, $tc.Title)
        $destTestCase= $destProject.TestCases.Create();
        $destTestCase.Title = $tc.Title;
        $destTestCase.Priority = $tc.Priority;
    
        foreach ($step in $tc.Actions)
        {
            $destStep= $destTestCase.CreateTestStep();
    
            $destStep.Title= $step.Title
            $destStep.TestStepType= $step.TestStepType
            $destStep.Description= $step.Description
            $destStep.ExpectedResult=  $step.ExpectedResu<
            $destTestCase.Actions.Add($destStep);
        }
        $destTestCase.Save();
    }
      

Комментарии:

1. Спасибо за идеи. Попробовал 1-й, и, похоже, он ограничивает сетку только 20 тестовыми примерами, есть ли какой-нибудь способ показать все?

2. Мне удалось скопировать / вставить 25, поэтому может быть ограничение на общий размер буфера обмена. Я не нашел документации по этому ограничению, оно выглядит как внутреннее ограничение. Итак, если вы пойдете по этому пути, вам следует выполнить многократное копирование / вставку… Я чувствую вашу боль…

3. Я добавил фрагмент кода powershell в ответ выше.

4. Скрипт работает, все еще играю с ним. Просто быстрый вопрос — есть ли необходимость в Newtonsoft.Json.dll что вы загружаете?

5. Да, по-видимому, NewtonSoft. Json необходим для новых API-интерфейсов TFS, потому что метод сохранения завершится ошибкой, если вы его не загрузите. Я протестировал свой скрипт при переносе из локальной TFS 2015.3 в свою личную учетную запись VSTS.