Почему баги вайб-кодинга группируются

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

Именно поэтому сбои предсказуемы. Они всегда на границах описания.

Четыре группы багов — в том порядке, в каком они дают о себе знать

  • Сохранение данных. Экран обновляется, база данных — нет. Перезагрузка выявляет это мгновенно. Перезагружайте страницу после каждой записи, прежде чем чему-либо верить.

  • Пустые состояния и состояния ошибок. Ноль результатов, упавший запрос, отклонённый ввод. Ничего этого не было в вашем промпте. Проверьте каждый случай намеренно. Они ломаются чаще, чем основной сценарий.

  • Второй аккаунт. Владение, права доступа и видимость выведены из той единственной сессии, в которой приложение и создавалось. Войдите под другим пользователем раньше, чем это сделает кто-то ещё.

Четвёртая группа тоньше: вчерашние функции. Каждая новая инструкция может незаметно сломать то, что уже работало, и старое поведение никто не проверяет, потому что разговор ушёл дальше.

Проверка, которая масштабируется вместе с промптингом

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

Настройка передаёт это в руки агента, поэтому проверка идёт рядом с разработкой, а не превращается в отдельную рутину.

Ничего из этого не требует терминала. Создайте проект в панели TestSprite, опишите проверку обычным языком и укажите на своё приложение. Разработчики в вашей команде при желании могут делать то же самое из командной строки — это описано в репозитории CLI.

Десять минут, которые находят большую часть багов

  • Зарегистрируйтесь, выйдите, войдите снова. Самый частый полный отказ — и первое, что делает настоящий пользователь.

  • Создайте запись, перезагрузите страницу, убедитесь, что она осталась. Сразу закрывает группу с сохранением данных.

  • Отправьте заведомо некорректные данные. Вы проверяете, что операция явно завершается ошибкой, а не проходит молча как успешная.

  • Пройдите основной сценарий под совершенно новым аккаунтом. Закрывает группу с правами доступа.

Ни одна из этих проверок не требует чтения кода, а вместе они находят большую часть того, что иначе нашёл бы посторонний человек.

Почему один и тот же баг возвращается

Самая частая претензия к такому способу разработки — не в том, что что-то ломается, а в том, что исправление одного снова и снова ломает другое. Это не ошибка модели. Это отсутствие записи.

Каждая инструкция трактуется только относительно текущего состояния кода — и больше ничего. Нет списка поведений, которые уже обязаны продолжать работать, поэтому агент никак не может узнать, что запрошенное изменение противоречит тому, что вы зафиксировали в прошлый вторник. С его точки зрения противоречия нет, потому что прошлого вторника в комнате нет.

Записанные проверки и есть эта запись. Они не делают агента умнее — они делают ваш замысел устойчивым. На практике это значит, что третий и четвёртый заход правок перестают ломать первые два, и именно с этого момента такая разработка начинает ощущаться надёжной, а не изматывающей.

Прежде чем это выйдет в реальную среду

Как только приложением начнут пользоваться другие люди, проверки должны запускаться на каждое изменение, а не тогда, когда вы о них вспомните.

  • GitHub App — это вебхук, который вы настраиваете в панели TestSprite. Он слушает событие деплоя, которое ваш пайплайн и так генерирует, поэтому в репозитории ничего менять не нужно.

  • GitHub Actions встраивает этот шаг в ваш собственный workflow и настраивается из терминала.

Пусть проверки запускаются сами

TestSprite — это способ перестать выполнять описанные здесь десять минут проверок вручную. Вы один раз описываете каждый сценарий обычным языком, а TestSprite прогоняет их по вашему приложению после каждого изменения.

Это напрямую снимает то, что больше всего раздражает людей в такой разработке. Записанные проверки — это запись того, что уже обязано продолжать работать, поэтому новая инструкция сверяется с ними, а не трактуется в отрыве от всего. Цикл, в котором исправление одного ломает другое, перестаёт быть нормой.

Здесь не нужен ни терминал, ни файл с тестами. Создайте проект в панели, укажите своё приложение и опишите четыре проверки выше. Разработчики в вашей команде при желании могут делать то же самое из командной строки.

Вайб-кодинг просто рискованнее?

Он меняет то, где находится риск. Меньше риска опечатки, больше риска непроверенного предположения. Ответ на это — не возвращаться к чтению каждой строки, а систематически проверять поведение.

Почему исправление одного ломает другое?

Потому что каждая инструкция трактуется в контексте текущего кода, а не сверяется с записью о том, что уже обязано было продолжать работать. Записанные проверки и дают такую запись.

Нужно ли писать тесты?

Не в виде кода. Опишите сценарий обычным языком, сохраните его и настройте автоматический запуск после каждого изменения.

Как понять, что проверка настоящая?

Намеренно что-нибудь сломайте и убедитесь, что проверка падает. Проверка, которая никогда не падает, ничего не защищает, а убедиться в этом — минутное дело.

Когда начинать проверять?

До того, как вы кому-нибудь это покажете. Проверка, написанная сейчас, стоит нескольких минут; после того как баг найдёт кто-то другой, цена будет куда выше.

Коротко

Проверяйте четыре группы багов, а не код.

Баги вайб-кодинга собираются вокруг сохранения данных, пустых состояний, вторых аккаунтов и функций, сделанных вчера. Десять минут закрывают большую их часть, а записанные проверки — это то, что не даёт им вернуться, пока вы продолжаете писать промпты.