#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:
Для одноразовой миграции я могу предложить несколько вариантов:
-
Из центра тестирования в локальном веб-доступе создайте план тестирования, включающий все тестовые примеры, а затем переключитесь на представление таблицы на главной панели. Там вы можете выбрать и скопировать все тестовые примеры (включая шаги, ожидаемые результаты и другие поля тестового примера) и вставить их в эквивалентное представление в проекте VSTS.
-
Создайте сценарий 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.