Ответ
Поддержка автотестов занимала примерно 20-30% рабочего времени. Основные затраты распределялись следующим образом:
- Адаптация тестов под изменения в UI/API (10-15%) — обновление локаторов и шагов тестов после рефакторинга фронтенда или изменений в контрактах API.
- Исправление флаки-тестов (5-10%) — анализ и стабилизация тестов, которые периодически падают из-за таймаутов, состояний гонки или проблем с тестовым окружением.
- Обновление тестовых данных и конфигураций (5%) — поддержка актуальности данных, моков и конфигов для разных сред (dev, staging).
Пример частого кейса — изменение локатора:
// Было — хрупкий локатор, привязанный к id элемента
@FindBy(id = "old-button")
WebElement submitBtn;
// Стало — стабильный локатор на data-атрибут после рефакторинга фронта
@FindBy(css = "[data-testid='submit-button']")
WebElement submitBtn;
Лучшие практики для минимизации времени на поддержку:
- Использовать
data-testidили другие стабильные селекторы, согласованные с фронтенд-разработчиками. - Выносить тестовые данные и конфигурации во внешние файлы (YAML, JSON, properties).
- Регулярно проводить ревью флаки-тестов и либо исправлять их, либо выносить в отдельную, менее строгую к выполнению, группу.
- Инвестировать в создание стабильного тестового окружения и качественных моков для зависимостей.
Ответ 18+ 🔞
Да ты посмотри, какой цирк-то развели! Поддержка автотестов, говоришь? Ну это ж пиздец, а не работа — целых 20-30% рабочего времени, как будто у нас его овердохуища! Сидишь, блядь, как обезьяна с гранатой, только вместо гранаты — эти ёбаные падающие тесты.
Смотри, куда время-то уходит, в рот меня чих-пых:
- Адаптация под изменения в UI/API (10-15%) — это когда фронтендеры или апишники, такие хитрожопые, всё перелопатили, а тебе, лоху, сидеть и латать свои локаторы и шаги. Чувствуешь себя, блядь, мартышкой, которая за всеми убирает.
- Исправление флаки-тестов (5-10%) — вот это, сука, отдельная песня! Тест то работает, то не работает. Ты его запускаешь — он зелёный. Запускаешь в пайплайне — он тебе красный, как пионерский галстук. И сидишь, гадаешь: то ли таймаут, то ли гонка состояний, то ли тестовое окружение опять накрылось медным тазом. Волнение ебать!
- Обновление тестовых данных и конфигов (5%) — кажется, мелочь, а нет! Забудешь один мок поправить или конфиг для staging-среды — и всё, пидары налетели, пайплайн горит синим пламенем.
Вот тебе живой пример, от которого мозг вытекает:
// Было — привязались к какому-то идиотскому id, который фронтендеры потом хуй знает зачем поменяли.
@FindBy(id = "old-button")
WebElement submitBtn;
// Стало — после их рефакторинга сидишь и вписываешь data-атрибут, который они, будем надеяться, не тронут.
@FindBy(css = "[data-testid='submit-button']")
WebElement submitBtn;
А чтобы не сойти с ума и не тратить 30% жизни, есть пара годных советов, ёпта:
- Договаривайся на берегу про
data-testid. Кричи фронтендерам: «Мужики, давайте, как взрослые, договоримся! Кидайте мне стабильные селекторы, а то я вам всем впендюрю тесты, которые сломаются от чиха!». Доверия ебать ноль, но пробовать надо. - Выноси всю хуйню наружу. Тестовые данные, конфиги, URL — всё это в отдельные YAML, JSON или properties-файлы. Чтобы менять в одном месте, а не бегать по всему коду, как угорелый.
- Устраивай охоту на флаки. Раз в неделю/месяц садись и смотри: какие тесты периодически пизданулись? Либо чини их, либо, если совсем безнадёжные, выноси в отдельную, «грязную» группу, которую можно запускать, но не блокировать релиз. Терпения ноль ебать на их починку иногда.
- Инвестируй в стабильное окружение. Лучше потратить время один раз, чтобы поднять нормальные моки для API и сделать предсказуемое тестовое окружение, чем каждый день тушить пожары из-за того, что база упала или внешний сервис недоступен. Это, блядь, как фундамент — если он кривой, то и дом развалится.