💬 Вопрос от QA сообщества:
Может кто-то поделиться своим опытом по рефакторингу тестового фреймворка с использованием шаблонов проектирования или по миграции с одного тестового фреймворка на другой? Как сделать это менее болезненно?
🛠 Кейс: рефакторинг существующего фреймворка
1. Создать POC (proof of concept)
🔹 Проверьте, что изменение работает
🔹 Определите, сколько времени уходит на исправление одного теста/класса/метода
2. Анализ POC
🔹 Оцените необходимость и объем изменений
🔹 Соберите статистику, факты и примеры для согласования изменений с командой, менеджментом, клиентом
3. Разбивка изменений
🔹 Если изменения большие, разбейте их на мелкие подзадачи
🔹 Вносите изменения постепенно
Пример: Переход с TestNG на AssertJ, используя SoftAssertions:
🔸 Покрыт один класс автотестами в рамках POC
🔸 Написана инструкция по использованию AssertJ
🔸 Проведено демо, команда согласилась использовать AssertJ
🔸 Договоренность переписывать автотесты на AssertJ при внесении изменений в тесты или при недостатке данных в отчетах
4. Внесение небольших изменений
🔹 Внесите сразу в рамках одной задачи, чтобы было легко отменить при необходимости
5. Обратная совместимость
🔹 Используйте feature flag для возможности включать/выключать новую фичу
🔹 Откатитесь на предыдущий функционал при необходимости
Пример: Добавление предварительной генерации тестовых данных:
🔸 Создайте переменную isTestDataGenerationEnabled со значением false по умолчанию
🔸 Запустите тесты с false, затем с true и сравните результаты
🔸 При появлении новых падений, связанных с новой функциональностью, верните флаг на false и исправьте фреймворк
🔸 После успешного покрытия всех кейсов, установите флаг на true по умолчанию или уберите его
🏗 Кейс: использование шаблонов проектирования
1. Определение проблемы
🔹 Определите, какие части вашего фреймворка требуют улучшения
🔹 Решите, какой шаблон проектирования подойдет для решения проблемы (например, Factory, Singleton, Strategy)
2. Создание POC
🔹 Реализуйте небольшой пример с использованием выбранного шаблона
🔹 Убедитесь, что новый подход решает проблему и не нарушает существующую функциональность
3. Внедрение шаблона
🔹 Постепенно рефакторьте существующий код, используя новый шаблон
🔹 Обучите команду работе с новым шаблоном, предоставив инструкции и примеры
Пример: Использование шаблона Factory для создания объектов тестовых данных:
🔸 Создайте фабрику, которая будет отвечать за создание и настройку объектов
🔸 Проведите демо для команды, объяснив преимущества и особенности нового подхода
🔸 Постепенно заменяйте старый способ создания объектов на новый, используя фабрику
📅 В следующий раз я напишу про переход с одного фреймворка на другой на примере своего опыта.