# Vibe Coding

**Vibe Coding** — подход к разработке, при котором разработчик описывает желаемое поведение системы на естественном языке, а AI генерирует весь код. Разработчик оценивает результат визуально, итерирует новыми промптами и не обязательно понимает каждую строку сгенерированного кода.

Термин ввёл исследователь и сооснователь OpenAI Андрей Карпатий (Andrej Karpathy) в феврале 2025 года в посте на X (Twitter):

> «There's a new kind of coding I call "vibe coding", where you fully give in to the vibes, embrace exponentials, and forget that the code even exists.»

***

## Как работает Vibe Coding

### Типичный цикл

```
Идея на естественном языке
        ↓
AI генерирует код
        ↓
Разработчик запускает и смотрит на результат
        ↓
«Работает? — Хорошо» / «Не работает? — Промпт снова»
        ↓
Итерация
```

Разработчик взаимодействует с AI через серию промптов, каждый из которых уточняет, расширяет или исправляет поведение системы. Код при этом воспринимается как побочный артефакт — главное, что продукт делает то, что нужно.

### Инструменты

| Инструмент          | Особенности                                        |
| ------------------- | -------------------------------------------------- |
| Cursor              | Встроенный чат, редактирует файлы напрямую         |
| Claude Code         | Агентный режим, работает с кодовой базой через CLI |
| GitHub Copilot Chat | Интеграция в IDE, генерация по комментариям        |
| v0 (Vercel)         | Специализирован на UI-компонентах                  |
| Bolt                | Полный стек прямо в браузере                       |
| Replit AI           | Cloud IDE с AI-ассистентом                         |

***

## Когда Vibe Coding оправдан

* **Прототипирование и MVP**: от идеи до демо за несколько часов
* **Одноразовые скрипты**: парсинг, конвертация данных, автоматизация разовых задач
* **Исследование технологий**: быстро проверить, как работает API или библиотека
* **Non-production утилиты**: внутренние дашборды, инструменты команды

{% hint style="warning" %}
Vibe Coding — не замена профессиональной разработке для production-систем. Код, который «работает на первый взгляд», может содержать критические ошибки в граничных условиях.
{% endhint %}

***

## Риски и проблемы для QA

### 1. Отсутствие покрытия edge cases

AI оптимизирует код под «happy path» — сценарий, который описал разработчик в промпте. Граничные условия, нетипичные входные данные и исключительные ситуации часто остаются без обработки.

**Пример**: разработчик просит AI создать форму регистрации. AI генерирует валидацию email и пароля, но не обрабатывает: очень длинные строки, Unicode-символы в имени, одновременные запросы, сетевые ошибки при сабмите.

### 2. Непрозрачность кода

Разработчик затрудняется объяснить логику реализации — он не писал её. Это создаёт проблемы для QA:

* Сложно определить тестируемые границы
* Нет понимания, какие ветки кода существуют
* Bug report может не найти ответственного разработчика

### 3. Быстрое накопление технического долга

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

### 4. Регрессия при итерациях

Новый промпт («добавь авторизацию») может сломать ранее работавшую функциональность. Разработчик видит, что новая фича работает, но не проверяет, что сломалось.

{% hint style="danger" %}
При Vibe Coding регрессионное тестирование критично как никогда. Каждая итерация промпта — потенциальная точка регрессии.
{% endhint %}

### 5. Проблемы безопасности

AI обучен на публичном коде, который включает устаревшие и небезопасные паттерны. Vibe Coding-генерация часто воспроизводит:

* SQL-инъекции при работе с БД
* XSS при вставке пользовательского ввода в DOM
* Хранение секретов в коде
* Отсутствие авторизации на API-эндпоинтах

### 6. Отсутствие документации

Vibe Coding редко сопровождается комментариями, JSDoc, типизацией или README. QA получает код без контекста.

***

## Стратегия тестирования при Vibe Coding

### Приоритеты тест-дизайна

| Область               | Почему критична                     |
| --------------------- | ----------------------------------- |
| Граничные значения    | AI редко обрабатывает их корректно  |
| Обработка ошибок      | Часто отсутствует или поверхностна  |
| Авторизация и доступ  | Типичная слепая зона AI-кода        |
| Конкурентность        | AI не думает о race conditions      |
| Большие объёмы данных | Производительность не тестировалась |

### Чеклист для QA при приёмке Vibe Coding результата

* [ ] Проверены все граничные условия входных данных (пустые строки, null, максимальные длины)
* [ ] Протестированы сценарии с невалидными данными
* [ ] Проверена обработка сетевых ошибок и таймаутов
* [ ] Проведено базовое security-тестирование (OWASP Top 10)
* [ ] Проверены сценарии с разными правами доступа
* [ ] Запущены существующие регрессионные тесты
* [ ] Проверена корректность работы после перезагрузки страницы/приложения

### Автоматизация как страховка

Для продуктов с активным Vibe Coding необходимо иметь автоматизированный регрессионный набор, который запускается после каждой сессии генерации. Без него каждый новый промпт — неконтролируемый риск.

***

## Vibe Coding vs традиционная разработка

| Параметр                     | Традиционная разработка | Vibe Coding               |
| ---------------------------- | ----------------------- | ------------------------- |
| Скорость до MVP              | Недели — месяцы         | Часы — дни                |
| Понимание кода разработчиком | Полное                  | Частичное или отсутствует |
| Предсказуемость поведения    | Высокая                 | Низкая без тестов         |
| Поддерживаемость             | Высокая                 | Низкая                    |
| Роль QA                      | Стандартная             | Критически важна          |
| Покрытие edge cases          | Зависит от разработчика | Как правило, слабое       |
| Технический долг             | Управляем               | Растёт быстро             |

***

## Позиция QA в команде с Vibe Coding

Vibe Coding повышает значимость QA-специалиста. Там, где разработчик больше не является «экспертом кода», QA становится главным гарантом качества. Без систематического тестирования Vibe Coding-продукты регулярно выходят в production с критическими дефектами.

**Рекомендуемые практики для QA-команды:**

1. **Shift-left участие**: включаться в обсуждение промптов до генерации кода — помогать формулировать требования так, чтобы AI учёл edge cases
2. **Промпт-ревью**: оценивать промпты как требования — если промпт неполный, код будет неполным
3. **Обязательный smoke-тест после каждой сессии** генерации
4. **Поддержание регрессионного набора** в актуальном состоянии

***

## Источники

* [Andrej Karpathy — Vibe Coding (X, February 2025)](https://x.com/karpathy/status/1886192184808149435) — оригинальный пост, вводящий термин
* [Simon Willison — Thoughts on Vibe Coding](https://simonwillison.net/) — критический анализ подхода
* [OWASP Top 10](https://owasp.org/www-project-top-ten/) — риски безопасности, актуальные для AI-сгенерированного кода


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://vladislaveremeev.gitbook.io/qa_bible/ai-v-testirovanii/vibe-coding.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
