Привет, Хабр! Меня зовут Евгений Токарев, я руководитель группы автоматизированного тестирования в Innostage. Хочу поделиться нашим опытом выбора новой TMS и миграции достаточно большого количества тест-кейсов практически одной кнопкой.
Поехали!

Так случилось, что TMS TestLink, которой долгое время пользовались тестировщики в нашей компании, морально устарела, была довольно медленной и неудобной, в отличие от десятков более новых систем. Поэтому мы стали искать что-нибудь другое - более современное, полезное, удобное и быстрое.
Чем не устраивает TestLink:
У TestLink ужасное юзабилити. Имеются проблемы при администрировании. Дизайн и удобство настолько «на любителя» (дизайн и технологии 2006-го года), что некоторые проекты ведут документацию где угодно, но только не в нем (кто-то в Confluence, кто-то в Google Docs, кто-то в Excel).
Сложная или невозможная интеграция с Jira.
Проблемы с версионностью тестов. Нет инструмента сравнения версий (построчный diff).
Нет никакого функционала для работы с автотестами.
С помощью TestLink нельзя управлять нагрузкой на сотрудников, в то время как в большинстве современных TMS такая возможность есть.
Проблемы, которые должна решать новая TMS:
Единое место хранения тестовой документации для всех проектов.
Нужна связь между имеющимися автотестами и тест кейсами.
Нужна для понимания, что мы можем не проходить вручную и что покрыто автотестами.
Должна быть возможность распределения нагрузки на тестировщиков.
Было проанализировано множество TMS, которые предлагает рынок:

Из них выбрано 5 для более пристального изучения:

Также было опрошено множество друзей и коллег: кто что пробовал, кто чем пользуется, кто о чем слышал и т.д.
И в итоге победил TestIt!
Прежде чем идти к руководству с просьбой купить нам лицензию на TestIt, было решено развернуть пробную версию, потрогать всё ручками, и, самое главное, узнать - как бы лучше, быстрее и безболезненнее мигрировать почти 21000 тест кейсов из TestLink.
Прямой интеграции между TestLink и TestIt не существует, поэтому начали искать свое или стороннее решение.
Писались скрипты на питоне, разворачивались локальные версии TestRail (туда потенциально можно было перекинуть сценарии из TestLink, а потом уже из TestRail в TestIt).
Параллельно было найдено JS-приложение для миграции из TestLink в TestIt, которое кто-то писал под себя несколько лет назад, но мы не знали работает ли оно и что конкретно делает.
Со временем удалось переписать это приложение, чтобы оно начало делать хоть что-то, и мы начали получать непонятные ошибки со стороны БД TestIt (прошу прощения за качество скриншотов, в лучшем качестве не осталось):



Был задан вопрос поддержке TestIt, и, в результате долгого и плотного общения с ними, удалось перенастроить докер-контейнеры и избавиться от части ошибок.
После этого выяснилось, что это JS-приложение шлет очень много одновременных запросов и из-за особенностей PostgreSQL мы ловим дедлоки. Пришлось снова переписать часть приложения, чтобы оно отправляло запросы последовательно, а не асинхронно.
Теперь JS-приложение начало работать как ожидалось. Оно устанавливало связь с TestLink, брало из него все папки и тест-кейсы для нужного проекта, конвертировало внутри себя в подходящий для TestIt формат, и создавало/заполняло папки и тест-кейсы уже в TestIt.
Но не очень правильно и не очень красиво! Выяснилось, что секции с Описанием тест-кейса, предусловия и постусловия не мигрируют вообще, а действия и результаты шагов мигрируют с неправильной нумерацией:

В итоге, немного поколдовав над приложением, удалось реализовать миграцию пред- и постусловий, и Описания, но результат все еще был далёк от совершенства...
Описание тащило за собой кучу ненужного:

А пред- и постусловия выглядели так же отвратительно, как шаги и результаты шагов (с неправильной нумерацией).
После небольшого сеанса магии, удалось избавиться от ненужных HTML-тегов в поле с Описанием, и оно стало выглядеть так:

А потом и вот так:

С этим закончили.
Осталось разобраться с неправильной нумерацией в пред-, постусловиях и шагах.
Было, напоминаю, вот так:

Потом стало красивее, без цифр вообще, но тоже не идеально:

Потом сплошным текстом без каких бы то ни было разделений:

И, в итоге, вот так:

Успешно мигрировав целый проект из 418-ти тест-кейсов мы окончательно поверили в себя и решили притормозить с исследованиями миграции.
Собрав по интернету кучу полезной информации про TestIt, просмотрев тонну обучающих видео, написав несколько презентаций и, собственно, презентовав их, мы успешно договорились с руководством о покупке лицензии на TestIt.
Через несколько месяцев согласований на всех уровнях компании, лицензионный TestIt наконец-то был развернут. И пришло время мигрировать нашу 21 тысячу тест-кейсов по-настоящему, назад пути не было…
Я сдул пыль с моего выстраданного скрипта миграции, немного поковырялся в нем, чтобы освежить в памяти, как и с какими параметрами его запускать, и, вздохнув и помолясь, начал миграцию.
Вначале я вручную создал все проекты в TestIt (можно было сделать это питоновским скриптом, написанным ранее, но автор скрипта был в отпуске, и показалось, что руками будет быстрее, чем писать ему, ждать ответа, уточнять что-то и так далее
