Привет, Хабр! Меня зовут Евгений Токарев, я руководитель группы автоматизированного тестирования в Innostage. Хочу поделиться нашим опытом выбора новой TMS и миграции достаточно большого количества тест-кейсов практически одной кнопкой.
Поехали!
![](https://habrastorage.org/getpro/habr/upload_files/c54/91e/2a6/c5491e2a6a13862a57bc057f7e0562b0.png)
Так случилось, что TMS TestLink, которой долгое время пользовались тестировщики в нашей компании, морально устарела, была довольно медленной и неудобной, в отличие от десятков более новых систем. Поэтому мы стали искать что-нибудь другое - более современное, полезное, удобное и быстрое.
Чем не устраивал TestLink:
У TestLink ужасное юзабилити. Имеются проблемы при администрировании. Дизайн и удобство настолько «на любителя» (дизайн и технологии 2006-го года), что некоторые проекты ведут документацию где угодно, но только не в нем (кто-то в Confluence, кто-то в Google Docs, кто-то в Excel).
Сложная или невозможная интеграция с Jira.
Проблемы с версионностью тестов. Нет инструмента сравнения версий (построчный diff).
Нет никакого функционала для работы с автотестами.
С помощью TestLink нельзя управлять нагрузкой на сотрудников, в то время как в большинстве современных TMS такая возможность есть.
Проблемы, которые должна решать новая TMS:
Единое место хранения тестовой документации для всех проектов.
Нужна связь между имеющимися автотестами и тест кейсами. Нужна для понимания, что мы можем не проходить вручную и что покрыто автотестами.
Должна быть возможность распределения нагрузки на тестировщиков.
Было проанализировано множество TMS, которые предлагает рынок:
![](https://habrastorage.org/getpro/habr/upload_files/d80/5f6/ba8/d805f6ba875676c338ad867f046fd334.png)
Из них выбрано 5 для более пристального изучения:
![](https://habrastorage.org/getpro/habr/upload_files/42e/a25/e8e/42ea25e8e511042e1d1d455635d1a1fb.png)
Также было опрошено множество друзей и коллег: кто что пробовал, кто чем пользуется, кто о чем слышал и т.д.
И в итоге победил TestIt!
Прежде чем идти к руководству с просьбой купить нам лицензию на TestIt, было решено развернуть пробную версию, потрогать всё ручками, и, самое главное, узнать - как бы лучше, быстрее и безболезненнее мигрировать почти 21000 тест кейсов из TestLink.
Прямой интеграции между TestLink и TestIt не существует, поэтому начали искать свое или стороннее решение.
Писались скрипты на питоне, разворачивались локальные версии TestRail (туда потенциально можно было перекинуть сценарии из TestLink, а потом уже из TestRail в TestIt).
Параллельно было найдено JS-приложение для миграции из TestLink в TestIt, которое кто-то писал под себя несколько лет назад, но мы не знали работает ли оно и что конкретно делает.
Со временем удалось переписать это приложение, чтобы оно начало делать хоть что-то, и мы начали получать непонятные ошибки со стороны БД TestIt (прошу прощения за качество скриншотов, в лучшем качестве не осталось):
![](https://habrastorage.org/getpro/habr/upload_files/47b/a58/bf0/47ba58bf0e330590a76f91e00b293aed.png)
![](https://habrastorage.org/getpro/habr/upload_files/97d/5cc/a98/97d5cca984efbe724002027495560a7e.png)
![](https://habrastorage.org/getpro/habr/upload_files/e2e/828/442/e2e82844229f32c028fae71261156f82.png)
Был задан вопрос поддержке TestIt, и, в результате долгого и плотного общения с ними, удалось перенастроить докер-контейнеры и избавиться от части ошибок.
После этого выяснилось, что это JS-приложение шлет очень много одновременных запросов и из-за особенностей PostgreSQL мы ловим дедлоки. Пришлось снова переписать часть приложения, чтобы оно отправляло запросы последовательно, а не асинхронно.
Теперь JS-приложение начало работать как ожидалось. Оно устанавливало связь с TestLink, брало из него все папки и тест-кейсы для нужного проекта, конвертировало внутри себя в подходящий для TestIt формат, и создавало/заполняло папки и тест-кейсы уже в TestIt.
Но не очень правильно и не очень красиво! Выяснилось, что секции с Описанием тест-кейса, предусловия и постусловия не мигрируют вообще, а действия и результаты шагов мигрируют с неправильной нумерацией:
![](https://habrastorage.org/getpro/habr/upload_files/4ce/c8f/d86/4cec8fd86a29c5f2b50057112926a46d.png)
В итоге, немного поколдовав над приложением, удалось реализовать миграцию пред- и постусловий, и Описания, но результат все еще был далёк от совершенства...
Описание тащило за собой кучу ненужного:
![](https://habrastorage.org/getpro/habr/upload_files/d4d/8bf/14c/d4d8bf14cc19447a2960a315fe2be0e8.png)
А пред- и постусловия выглядели так же отвратительно, как шаги и результаты шагов (с неправильной нумерацией).
После небольшого сеанса магии, удалось избавиться от ненужных HTML-тегов в поле с Описанием, и оно стало выглядеть так:
![](https://habrastorage.org/getpro/habr/upload_files/4a3/7a0/b21/4a37a0b21305710b1df0edadf57af554.png)
А потом и вот так:
![](https://habrastorage.org/getpro/habr/upload_files/15d/601/e40/15d601e4020f05c50679ef0866b71071.png)
С этим закончили.
Осталось разобраться с неправильной нумерацией в пред-, постусловиях и шагах.
Было, напоминаю, вот так:
![](https://habrastorage.org/getpro/habr/upload_files/e00/e0c/a0b/e00e0ca0b6e2b413d74bf1e83014de29.png)
Потом стало красивее, без цифр вообще, но тоже не идеально:
![](https://habrastorage.org/getpro/habr/upload_files/2d4/9c4/8d8/2d49c48d88ecc0706d03497a3175a882.png)
Потом сплошным текстом без каких бы то ни было разделений:
![](https://habrastorage.org/getpro/habr/upload_files/fe7/733/26d/fe773326d26048fcfea23fdd68b70967.png)
И, в итоге, вот так:
![](https://habrastorage.org/getpro/habr/upload_files/cfb/6da/27b/cfb6da27b7ccba0ddfc7cbab8464f6eb.png)
Успешно мигрировав целый проект из 418-ти тест-кейсов мы окончательно поверили в себя и решили притормозить с исследованиями миграции.
Собрав по интернету кучу полезной информации про TestIt, просмотрев тонну обучающих видео, написав несколько презентаций и, собственно, презентовав их, мы успешно договорились с руководством о покупке лицензии на TestIt.
Через несколько месяцев согласований на всех уровнях компании, лицензионный TestIt наконец-то был развернут. И пришло время мигрировать нашу 21 тысячу тест-кейсов по-настоящему, назад пути не было…
Я сдул пыль с моего выстраданного скрипта миграции, немного поковырялся в нем, чтобы освежить в памяти, как и с какими параметрами его запускать, и, вздохнув и помолясь, начал миграцию.
Вначале я вручную создал все проекты в TestIt (можно было сделать это питоновским скриптом, написанным ранее, но автор скрипта был в отпуске, и показалось, что руками будет быстрее, чем писать ему, ждать ответа, уточнять что-то и так далее?)
Затем были взяты ID всех проектов из TestLink и свежесозданных проектов из TestIt и занесены в табличку.
Также было взято общее количество тест-кейсов из TestLink по каждому проекту, чтобы в последствии сравнивать, не потерялось ли чего, и посчитать общий процент успешно мигрировавших тест-кейсов.
Забегая вперед, эта табличка впоследствии стала выглядеть так:
![](https://habrastorage.org/getpro/habr/upload_files/cfd/ace/ead/cfdaceead5ee2efdd435b3b31bcbb4a3.png)
Решено было начинать миграцию с самых маленьких проектов, чтобы мигрировать по максимуму с самого начала, а не застрять на каком-нибудь огромном проекте и сидеть без какого-либо осязаемого результата?
Первые 13 проектов мигрировали без сучка без задоринки. Я еле успевал менять ID проектов во входных параметрах скрипта. Но с 14-м проектом, у которого на скрине выше всего 34%, что-то пошло не так.
С первого раза удалось мигрировать 307 тест-кейсов из 313-ти, но такой результат мне не понравился (еще бы, ведь до этого все проекты мигрировали со стопроцентным успехом), и я решил перезапустить скрипт. А зря. Что-то где-то поломалось, и сколько еще раз я не пытался перезапустить скрипт, больше 107-ми тест-кейсов мигрировать так и не удалось. Их впоследствии вручную перенесли из системы в систему тестировщики.
Следующие три проекта снова мигрировали без проблем со стопроцентным успехом.
Затем начались проекты с количеством тест-кейсов 1000+. Какие-то успешно мигрировали с первого раза на 100%, какие-то со второго, какие-то с пятого, а у каких-то, несмотря ни на что, не удалось получить процент успешной миграции выше 99. Что тоже, в принципе, неплохо.
Проблемы начались с проектами, у которых количество тест кейсов было >2000. Наш скрипт работал с умопомрачительной скоростью, ддосил и TestLink и TestIt, и, в итоге, соединение отваливалось то с одной, то с другой стороны.
В этот момент мимо проходили два матерых архитектора, поинтересовались, отчего я ору на весь офис, и вызвались помочь. За полдня мы втроем переписали скрипт практически полностью, в нем не осталось ни одной изначальной строчки. Но задача была решена - запросы начали отправляться более разумно, и проблема разрыва связи с TestLink и TestIt ушла. Спасибо, Андрей и Вася?
Последние 4 проекта с самым большим количеством тест-кейсов мигрировали с достаточно высоким процентом.
В итоге, мы успешно перекинули из TestLink в TestIt 20530 тест-кейсов из 20990, причем 200+ из немигрировавших были ненужными дубликатами. Так что общий процент успешно мигрировавших тест кейсов стал равен 97%.
Ну а счастливые тестировщики приступили к работе в новой системе?