- BrainTools - https://www.braintools.ru -
Пишу, потому что на текущем проекте прямо сейчас живу эту боль [1]: всем включили Cursor «для скорости», а нормальных автотестов так и не завезли. Может, кто-то уже описывал этот кейс, но я не нашёл — поэтому делюсь своей ситуацией и тем, как это надо было делать с самого начала.
Руководство/CTO/кто-то сверху читает твиты про то, как «скорость разработки ×10 за счёт ИИ», проводит собрание и выдаёт директиву: «Теперь весь код пишем через Cursor или другие ИИ-ассистенты».
Первые 2-3 недели — эйфория. Таски закрываются в 2–3 раза быстрее. В Jira зелёный лес, графики вверх, все хлопают в ладоши, бизнес доволен.
3-5 неделя — первые тревожные звоночки. На регрессе всплывает куча багов в ранее стабильных местах. Начинают падать тесты.
6-8 неделя — тестировщики тонут, регресс растягивается с 2 дней до недели, прод-деплой откладывается, потому что «надо всё перепроверить вручную».
Почему так выходит?
Разрабы пишут юнит-тесты (и даже пишут их больше, чем раньше — Cursor генерит их пачками). Проблема не в юнитах. Проблема в том, что юниты проверяют только то, что Cursor только что написал, а не то, что он сломал по пути в соседних модулях, контрактах и интеграциях.
Cursor любит «поумничать» — переписать старый рабочий код «по-современному». Юнит-тесты на новую функцию зелёные, а интеграция с легаси-модулем или внешним сервисом падает.
Ревью больших диффов превращается в «ну выглядит нормально». Никто не готов тратить час на разбор 400–600 строк, из которых 80 % сгенерированы.
Интеграционные API-тесты и E2E никто не обновляет автоматически — их пишут люди, а людей на это не выделили.
В итоге всё, что раньше ловилось на уровне интеграции, теперь ловится только руками на финальном регрессе. И да, привет, баги в продакшене в пятницу вечером.
Юнит-тесты оставляем разработчикам и Cursor’у — это их зона ответственности. Пусть генерит сколько угодно, лишь бы из-за покрытия не падал пайп.
Всё остальное — AQA-уровень (API + E2E) — выносим в отдельный репозиторий и отдельный пайплайн. Почему отдельный:
не тормозим сборку основного кода
можем запускать на 50–100 агентах параллельно
можно отдельно считать статистику и видеть регрессы именно от новых фич
Структура покрытия, которая реально работает:
70–80 % — быстрые API-тесты (контракты, статусы, бизнес-логика)
20–30 % — дымовые E2E по UI только на критичные пользовательские пути
Всё это висит в CI/CD: на каждый MR и на main
Один упавший тест → красная сборка → деплоя нет
Правило «большие диффы без AQA-обновлений не мержим». Сделал Cursor 100+ строк изменений → обязан обновить или добавить API-тесты на изменённые эндпоинты. Не обновил → MR висит.
Метрика «регрессы от Cursor». Считаем количество багов, найденных на QA, по коммитам с диффом > 50 % сгенерированного кода. Когда цифра уходит в потолок — проводим ретроспективу и правим промпты/процессы.
Юниты ловят ошибки [2] внутри функции. API-тесты ловят, что функция сломала интеграцию. E2E ловят, что всё вместе упало на самом очевидном пути пользователя. Когда эти три уровня разделены и каждый живёт своей жизнью — скорость разработки действительно растёт, а количество багов будет падать.
Cursor и любые другие ИИ-ассистенты — шикарные инструменты. Они реально ×2–3 ускоряют написание кода. Но если не поставить вокруг них нормальные автотесты, ускорение превратится в самоубийство [3] на рассрочку.
Автор: BaroH
Источник [4]
Сайт-источник BrainTools: https://www.braintools.ru
Путь до страницы источника: https://www.braintools.ru/article/22496
URLs in this post:
[1] боль: http://www.braintools.ru/article/9901
[2] ошибки: http://www.braintools.ru/article/4192
[3] самоубийство: http://www.braintools.ru/article/8864
[4] Источник: https://habr.com/ru/articles/970986/?utm_source=habrahabr&utm_medium=rss&utm_campaign=970986
Нажмите здесь для печати.