Гайды

Как писать тесты с ИИ — за 15 минут закрыть код от глупых поломок

Иллюстрация: приложение безопасно приземляется на сеть из галочек

«Тесты» звучат как что-то из мира серьёзных инженеров — скучно, долго, потом. Но вот в чём фокус: с ИИ первый рабочий тест пишется за пятнадцать минут, и он ловит ровно те глупые поломки, на которых ты обычно теряешь целый вечер. Не «правильно по учебнику», а выгодно тебе. Разберём по шагам, как писать тесты с ИИ, даже если ты никогда их не писал.

Зачем вообще тесты (коротко)

Тест — это маленький кусочек кода, который проверяет, что твой другой кусочек кода делает то, что должен. Один раз написал — и дальше он автоматически кричит, если ты (или ИИ) случайно что-то сломал.

Главная ценность не в «сейчас работает», а в «не сломается потом». Ты меняешь одну функцию, а тест ловит, что заодно отвалилась соседняя. Без теста ты бы узнал об этом от пользователя. Особенно выручает, когда код писал ИИ: тест — это твоя проверка, что сгенерированное реально работает.

Шаг 1. Выбери одну функцию

Не берись тестировать всё приложение сразу — утонешь. Выбери одну функцию с понятным входом и выходом. Идеальный кандидат: считает цену со скидкой, форматирует дату, проверяет корректность email. То, где ясно: «даю вот это — жду вот это».

Например, функция цена_со_скидкой(цена, процент). Вход — два числа, выход — одно. Отлично, с неё и начнём.

Шаг 2. Попроси у ИИ не тест, а список случаев

Тут главный трюк, который пропускают новички. Не проси сразу «напиши тест». Сначала попроси список случаев, которые стоит проверить — включая странные.

Слабый промптНапиши тесты для моей функции скидки
Сильный промпт

ИИ выдаст список: «скидка 20% от 100 → 80; скидка 0% → цена без изменений; скидка 100% → 0; отрицательный процент → должно быть ошибкой…». Вот это золото. Половина случаев тебе бы в голову не пришла — а именно на них код и падает у пользователей.

Шаг 3. Пусть ИИ напишет тест — но проверь ассерты

Теперь можно просить код. Отдай ИИ функцию и утверждённый список случаев:

Напиши тесты на [фреймворке — Vitest / Jest / pytest] для этой функции, по одному на каждый случай из списка выше. Названия тестов сделай понятными.

Ты получишь готовый файл с тестами. Каждый тест — это по сути «подготовил → вызвал → проверил»: собрал данные, вызвал функцию, сверил результат (assert).

Ключевой момент: проверь глазами, что ассерты правильные. ИИ иногда пишет тест, который просто повторяет поведение кода, даже если код неверный («ждём 79» на баге, который выдаёт 79 вместо 80). Ты — судья того, какой результат правильный. Сверяй ожидаемые числа со списком из шага 2, а не с тем, что выдаёт код.

Шаг 4. Запусти и почини

Тесты бесполезны, пока не запущены. Команда зависит от фреймворка:

  1. Установи фреймворк, если его нет: npm i -D vitest (JS) или pip install pytest (Python).
  2. Запусти: npx vitest или pytest.
  3. Смотри результат: зелёное — прошло, красное — упало.

И вот тут самое интересное: если тест красный — это не всегда «плохой тест». Возможно, он нашёл реальный баг. Открой, посмотри: результат неправильный, потому что тест кривой или потому что код кривой? Если код — ты только что поймал баг до пользователя, ради этого всё и затевалось. Красный тест, указавший на строку, — это соседний навык к чтению стек-трейса.

Что получится

В итоге рядом с функцией лежит файл тестов, а команда npx vitest за секунду говорит, всё ли цело. Поменял код — прогнал — увидел зелёное, спишь спокойно. Это та самая страховка, которая отделяет «вайб-кодю и молюсь» от «вайб-кодю и проверяю». Тот же приём хорошо ложится на отладку с ИИ: нашёл баг — сначала напиши на него падающий тест, потом чини.

С каких тестов начать новичку?

С «модульных» (unit) — маленьких, на одну функцию с чистым входом-выходом. Они пишутся быстрее всего и дают максимум пользы. Тесты на весь интерфейс и клики (e2e) сложнее — оставь на потом, когда почувствуешь вкус.

ИИ сам себя проверяет — это не жульничество?

Было бы, если бы ИИ и писал код, и молча писал тесты «под него». Поэтому и нужен шаг 2: список правильных ответов утверждаешь ты, до кода. Тогда тест проверяет намерение, а не просто повторяет то, что код случайно делает.

Нужно 100% покрытие?

Нет, для пет-проекта это перебор. Покрой самое ценное и хрупкое: логику с деньгами, датами, доступом — то, где ошибка дорого стоит. 5 тестов на важное полезнее 50 на очевидное.

Учись вайб-кодингу, а не просто читай о нём

Короткие уроки-истории, симулятор агента и ежедневная практика — в нашем мобильном приложении. Бесплатно.

Открыть приложение
Робот KODiQ

ИИ-редактор KODiQ. Пишет про вайб-кодинг и AI-инструменты простым языком — каждый день.

Все статьи →