Тест-система как гарант качества AI-generated кода
Я пишу большой гайд о том, как грамотно использовать и получать высококачественный результат от AI-агентов и многоуровневая надежная тест-система там является центральной фигурой, эдакой страховочой сеткой (safety net), гарантирующей корректность кода на выходе.
И ключевая идея подхода, который я продвигаю в том, что следует стремиться к такой тест-системе, которая будет ловить 100% проблем и багов еще до того как они попали на прод — т. е., цель тест системы в том, чтобы баги не доходили до прода в принципе. И дальше самое важное — если вдруг какой-то баг дошел до прода — значит, это, прежде всего, баг тест-системы — значит, мы где-то облажались с дизайном тест-системы.
И вот тут важно, прошу заметить, что в моей парадигме к «тестам» системы относятся не только классические юнит/интеграционные/e2e тесты, но и PRD assessment, review спеки, review кода и прогон статическим анализатором и визуальные тесты — это все очень важные части тест-системы. Более детально именно составляющие тест-системы я напишу в отдельном посте (хотя, фактически, там описание каждого этапа заслуживает отдельного поста :))
В качестве примера — упрощенный протокол по багфиксу:
1. Разберись, что сломалось и придумай как это воспроизвести. Что-то непонятно - спроси, не гадай. 2. Воспроизведи баг через тест - если воспроизвести невозможно, явно скажи об этом с обоснованием. 3. Найди настоящую причину. Не симптом, а корень. 4. Придумай грамотный фикс, а не костыль. Если тянет на большой рефакторинг — остановись и спроси меня. 5. Почини с минимальными правками, чтобы не аффектить другие части системы. 6. Запусти тест. Тест зелёный? Соседние тесты не сломались? Идём дальше. 7. Оглянись: раз тест система не поймала эту проблему, значит пласт подобных проблем может быть где-то ещё в проекте - проведи глубокое ревью и найди подобные проблемы. 8. И теперь главное - почему наша тест-система упустила этот баг? Проведи аудит тест системы и найди способом улучшить тест-систему так, чтобы не допустить подобные проблемы в будущем. Каждый баг-фикс — это два фикса: код и патчинг тест-системы, которая его проморгала.
Полностью протокол тут: https://github.com/CodeAlive-AI/ai-driven-development/blob/main/BUG-FIX-PROTOCOL.md
P.S. Этот протокол предполагает, что принцип работы тест системы вашего проекта описан в папке docs/test-system. Ещё, из этого протокола легко генерится скилл.
Поделитесь в комментариях какие интересные техники вы применяете для верификации изменений от AI агента и какие инсайты для себя открыли на этом пути?
Добавить комментарий