Связывание общих шагов с step-методами
Контекст:
Общие шаги в TestOps работают исключительно как сущности ручных тестов. Автоматизация при этом идёт своим параллельным путём: шаги в автотестах оформляются через помечание методов аннотацией @Step.
Это создаёт несколько проблем:
- Ручные тестировщики самостоятельно создают и актуализируют общие шаги: если сценарий общего шага изменился — изменения нужно вносить и в код, и вручную в TestOps.
- При автоматизации тест-кейса общие шаги подменяются текстом шагов автотеста, и получается, что проделанная работа ручного тестировщика теряется.
- Нет возможности использовать уже реализованные шаги автотестов как "блоки" при создании новых сценариев.
Требование:
Если дать системе возможность связывать шаги автотестов с Общими шагами в TestOps, это откроет новые возможности:
- Повторное использование уже реализованных шагов автотестов при сборке сценариев ручного тестирования.
- Отслеживание, какие Общие шаги уже автоматизированы.
- Упрощение генерации автотестов из ручных сценариев с привязкой к существующим @Step-методам (потенциально — как отдельная фича).
- Устранение дублирования кода и шагов.
Возможная реализация:
Предлагается ввести механизм внешнего JSON-маппинга (хранящегося внутри проекта автотестов), где будет указано соответствие между @Step-методами в коде и Общими шагами в TestOps:
```
{
"steps": {
"com.company.auth.AuthSteps.login": "step-0001",
"com.company.cart.CartSteps.addItemToCart": "step-0002"
}
}
```
Как это может работать:
На этапе написания кода:
Появляется возможность кликнуть по названию метода правой кнопкой мыши и через плагин:
- привязать существующий ID общего шага;
- либо запросить генерацию нового ID.
Результат — в JSON-файле появляется новая связка.
При рефакторинге step-метода (переименование, перенос и т.д.) — плагин отслеживает изменения и обновляет путь до метода в JSON, сохраняя ID.
На этапе запуска автоеста или коммита:
- Если есть неактуальные связи (ID ссылается на несуществующий метод), а отследить перемещение не удалось (например, при ручном вырезании-вставке) — плагин предложит вручную актуализировать связь перед завершением коммита.
- Если все ID ссылаются на актуальные методы — запускается проверка на наличие step-методов без ID. Для таких методов плагин автоматически генерирует ID и добавляет записи в JSON.
На этапе запуска автотеста:
- В отчёт Allure добавляется не только текст шага, но и его ID и другая мета-информация на основе JSON-файла.
После импорта отчёта в TestOps и при закрытии прогона:
- Производится апдейт Общих шагов на основе ID, аналогично тому, как сейчас работает обновление тест-кейсов по названию и другим мета-данным.
Преимущества такой реализации:
- Позволяет выстроить полноценную двустороннюю интеграцию между ручными и автоматизированными шагами.
- Устраняет необходимость вручную прописывать ID в аннотации, сохраняя чистоту кода.
- Не ломается при рефакторинге: вся связка управляется через IDE-интеграцию.
- Позволяет поддерживать единую структуру шагов как документацию, так и реализацию — особенно важно при масштабировании.