Contributor
Как Agile-практики обеспечивают качество в разработке с поддержкой GenAI
opinion
9 апр. 2026 15 мин
ИИ позволяет писать код со сверхвысокой скоростью, но без Agile «страховочных сетей» — таких как парное программирование и автоматизированные тесты — вы лишь еще быстрее создаете технический долг.
Credit: Cherdchai101 / Shutterstock
Генеративный ИИ произвел революцию в сфере разработки программного обеспечения таким образом, что теперь разработчики могут писать код с беспрецедентной скоростью. Различные инструменты, такие как GitHub Copilot, Amazon CodeWhisperer и ChatGPT, стали обычной частью того, как инженеры выполняют свою работу в наши дни. Я испытал это на собственном опыте, в своей карьере — от руководства инженерными командами в Amazon до работы над крупномасштабными платформами для выставления счетов и обеспечения соответствия требованиям, — как огромный рост производительности, так и столь же большие риски, которые несет разработка с поддержкой GenAI.
С GenAI обещание роста производительности очень привлекательно. Разработчики, использующие ИИ-помощников для программирования, говорят о росте производительности на 15%–55%. Но чаще всего такая скорость сопровождается скрытыми опасностями. Например, ПО, созданное ИИ без хороших ограничителей, может открыть уязвимости безопасности, привести к техническому долгу и внести ошибки, которые трудно обнаружить с помощью традиционного code review. Согласно исследованию McKinsey, инструменты GenAI позволяют разработчикам работать продуктивнее на более высоком уровне, но также требуют переосмысления практик разработки ПО, чтобы сохранять качество и безопасность кода.
Ответ не в том, чтобы полностью отказаться от этих замечательных инструментов. На самом деле речь о том, чтобы сочетать их с надежными инженерными практиками, которым команды уже доверяют и которые уже используют. Более того, правильное применение традиционных Agile-методологий задает точные ориентиры, позволяющие получать пользу от GenAI и одновременно контролировать его риски. В этой статье я рассматриваю пять базовых Agile-методологий: test-driven development (TDD), behavior-driven development (BDD), acceptance test-driven development (ATDD), pair programming и continuous integration — вместе они дают защитные механизмы для разработки с GenAI, делая ее не только быстрее, но и качественнее.
Кризис качества кода при GenAI: реальные проблемы
Прежде чем перейти к решениям, стоит назвать проблему. Недостатки кода, сгенерированного ИИ, не являются теоретическими. Они проявляются в production-системах по всей индустрии:
- Уязвимости безопасности: В 2023 году исследователи из Стэнфорда выяснили, что разработчики, использующие ИИ-помощников, с большей вероятностью вносили в код уязвимости безопасности, особенно инъекционные уязвимости и небезопасные механизмы аутентификации. Исследование, опубликованное в IEEE Security & Privacy, показало, что GitHub Copilot примерно в 40% случаев предлагал уязвимый код в распространенных сценариях, критичных для безопасности. В одном крупном финансовом учреждении SQL-запрос, сгенерированный ИИ, обошел параметризацию, создав критическую уязвимость к инъекции, которую не обнаружили до пентеста.
- Придуманные зависимости: ИИ-модели иногда генерируют предложения для библиотек, функций или API, которых не существует. Группа из компании в сфере здравоохранения потратила три дня, пытаясь найти ошибку в проблеме компиляции их микросервиса, и лишь затем узнала, что ИИ предложил несуществующий метод AWS SDK. Код выглядел легитимным, прошел первый review, но сигнатура метода была полностью выдуманной.
- Незаметно неверная бизнес-логика: Хуже всего ошибки в бизнес-логике, которые на первый взгляд выглядят правильно, но содержат тонкие дефекты. Например, мы столкнулись с автоматически сгенерированной ИИ строкой расчета налога по позиции в счете, которая выглядела идеально, но при внимательной проверке выяснилось, что округление применялось на уровне каждой позиции, а не на уровне промежуточной суммы. Хотя поверхностный анализ логики показывал, что все верно, разница в порядке округления привела бы к тому, что итоговые суммы в счете не соответствовали бы юридическим требованиям для налоговой отчетности, что создало бы риски несоответствия и ошибки сверки по миллионам транзакций.
- Накопление технического долга: ИИ-инструменты ориентированы на создание работающего кода, а не поддерживаемого. Они часто рекомендуют очень вложенную условную логику, дублирование кода и чрезмерно сложные решения, когда доступны более простые альтернативы. Исследование Gartner предупредило, что без сильного управления ранние пользователи GenAI могут накопить расходы, сложность и технический долг.
- Проблемы соответствия требованиям и лицензирования: ИИ-модели, обученные на публичных репозиториях кода, иногда могут генерировать код, который по сути является копией кода с определенными несовместимыми лицензиями. Для строго регулируемых отраслей, таких как здравоохранение и финансы, подобные ситуации создают очень серьезные риски несоответствия требованиям. Например, фармацевтическая компания столкнулась с кодом, сгенерированным ИИ, который был очень похож на open-source ПО под лицензией GPL, и если бы компания опиралась на такую платформу, это создало бы для нее юридические риски.
Коренная причина: скорость без четкой спецификации
Эти проблемы возникают по одной и той же причине: ИИ генерирует код на основе увиденных им шаблонов, не понимая по-настоящему требований, контекста или того, корректен ли код. Он работает на вероятностях, например: «какой шаблон кода из подсказки наиболее вероятен», а не на корректности или пригодности для конкретного случая.
Традиционный code review, хотя и необходим, недостаточен для защиты от ошибок, возникающих в коде, созданном ИИ. Большинству людей трудно заметить тонкие ошибки в коде, который выглядит правдоподобно, а объем кода, созданного ИИ, легко может перегрузить возможности проверки. Нам нужны автоматизированные, систематические методы, которые проверяют корректность, а не только беглый визуальный осмотр.
Agile-практики как защитные механизмы для GenAI
Ответ можно найти в методах, которые существуют уже давно, еще до появления GenAI, и при этом отлично исправляют его недостатки. Каждый из этих методов дает свой тип страховочной сети:
1. Test-driven development (TDD): валидатор корректности
Цикл TDD — Red, Green, Refactor — дает наиболее прямую защиту от некорректного кода, сгенерированного ИИ. Пишя тесты первыми, вы создаете исполняемую спецификацию корректности еще до того, как ИИ сгенерирует какую-либо реализацию.
Как это работает с GenAI:
- Red: Напишите падающий тест, который точно описывает нужное поведение. Этот тест становится вашей спецификацией требований в исполняемом виде.
- Green: Попросите ИИ сгенерировать код, который заставит тест пройти. Теперь у ИИ есть четкая, однозначная цель.
- Refactor: Используйте ИИ, чтобы предлагать улучшения для работающего кода, при этом гарантируя, что тесты по-прежнему проходят.
Реальное влияние: Мы применяли очень строгий TDD вместе с разработкой с поддержкой GenAI. Прежде чем разработчики принимали любые предложения ИИ, они должны были писать подробные unit-тесты, описывающие все аспекты. Это позволило обнаружить критическую ошибку в расчете налога по строке счета: пока ИИ предлагал простое умножение, которое «выглядело» корректным, тест специально проверял юридические требования к округлению (округление на уровне промежуточной суммы, а не строки). Поскольку тест задавал эти требования к точности, первоначальный код ИИ сразу же провалился. Без TDD это расхождение дошло бы до production, вызвав серьезные риски соответствия требованиям и сбои сверки выручки.
Кроме того, TDD решает проблему галлюцинации зависимостей. Например, если ИИ предлагает метод или библиотеку, которых не существует, тест не сможет скомпилироваться или запуститься, тем самым давая мгновенную обратную связь вместо того, чтобы обнаруживать проблему через несколько дней.
2. Behavior-driven development (BDD): хранитель бизнес-логики
BDD расширяет TDD, фокусируясь на поведении системы с точки зрения пользователя через сценарии Given-When-Then. Это особенно мощно для разработки с поддержкой GenAI, потому что создает понятные человеку спецификации, которые соединяют бизнес-требования и код.
Сценарии BDD выполняют сгенерированным ИИ кодом две критически важные функции:
Во-первых, они дают ИИ контекстно насыщенные подсказки. Вместо просьбы «напиши функцию для расчета налога» вы даете полный сценарий: «Если клиент в Калифорнии покупает товар за 100 долларов, то налог должен быть 9,25 доллара». У ИИ больше контекста для генерации правильного кода.
Во-вторых, они создают исполняемые тесты бизнес-логики, которые помогают ловить тонкие ошибки, пропускаемые человеком. Сценарии пишутся на обычном языке владельцами продукта и экспертами предметной области, а затем автоматизируются с помощью таких фреймворков, как Cucumber или Cypress.
3. Acceptance test-driven development (ATDD): инструмент выравнивания ожиданий заинтересованных сторон
ATDD вовлекает клиентов и заинтересованные стороны на раннем этапе определения автоматизированных acceptance-тестов до начала разработки. Эта практика особенно важна при использовании GenAI, потому что она гарантирует, что ИИ решает правильную задачу, а не просто генерирует правдоподобный код.
Рабочий процесс ATDD с GenAI:
- Мастерская спецификации: владельцы продукта, разработчики и тестировщики совместно определяют критерии приемки в тестируемом формате. Это создает общее понимание того, что значит «готово».
- Автоматизация тестов: превратите критерии приемки в автоматизированные тесты до написания кода реализации. Эти тесты представляют определение успеха со стороны заказчика.
- Реализация с помощью ИИ: используйте GenAI для реализации функций, удовлетворяющих acceptance-тестам. Тесты не дают ИИ отклониться от реальных требований.
Реальное влияние: Для функции скидки на основе объема мы провели ATDD-семинары, чтобы определить конкретное требование: «Купи 10, получи скидку 10%» должно применяться только к подходящим позициям, а не ко всему счету целиком. Это стало нашими автоматизированными acceptance-тестами. Когда разработчики использовали GenAI для реализации логики, ИИ предложил простую глобальную функцию скидки, которая вычитала 10% из итогового баланса — распространенный шаблон кода для розничной торговли, но неверный для наших B2B-договорных правил. Поскольку ATDD-тест проверял скидку на уровне строки, «идеально выглядящий» код ИИ сразу же провалился. Это предотвратило логическую ошибку, которая привела бы к значительному перерасчету скидок и потере выручки по тысячам оптовых заказов.
4. Pair programming: модель сотрудничества человека и ИИ
Традиционное парное программирование предполагает, что два разработчика работают вместе: часто один пишет тесты, а другой — реализацию. С GenAI эта модель превращается в мощное трехстороннее сотрудничество: Разработчик A пишет тесты, Разработчик B проверяет код, сгенерированный ИИ, а ИИ выступает в роли быстрого помощника по реализации.
Расширенный рабочий процесс парного программирования:
- Роль навигатора: один разработчик сосредоточен на написании полных тестов и продумывании крайних случаев, последствий для безопасности и соответствия архитектуре. Его не отвлекают детали реализации.
- Роль водителя: другой разработчик работает с ИИ над генерацией кода реализации, критически оценивая каждое предложение. Он выступает фильтром качества для результатов ИИ.
- ИИ-помощник: генерирует предложения по реализации на основе тестов и контекста, ускоряя процесс программирования, в то время как человеческая пара обеспечивает качество.
Реальное влияние: Недавнее исследование GitClear показало, что показатели качества кода снижались, когда разработчики использовали ИИ-инструменты изолированно, но улучшались при использовании в контексте парного программирования. Мы рекомендуем парное программирование для любой разработки с поддержкой ИИ для критически важных систем. Навигатор замечает проблемы безопасности и архитектурные несоответствия, которые может упустить водитель, сосредоточенный на выводе ИИ. Мы видели снижение количества ошибок после развертывания на 60% по сравнению с одиночной разработкой с поддержкой ИИ.
5. Continuous integration (CI): автоматизированная страховочная сеть
Continuous integration запускает автоматизированные наборы тестов каждый раз при слиянии кода. При разработке с поддержкой GenAI это становится еще важнее. CI обеспечивает последнюю страховочную сеть, которая ловит проблемы до того, как они попадут в production.
Расширенный CI-пайплайн для кода GenAI:
- Полное выполнение тестов: запускайте все unit-тесты, интеграционные тесты, BDD-сценарии и acceptance-тесты на каждом коммите. Код, сгенерированный ИИ, должен проходить весь набор.
- Статический анализ: добавьте дополнительные инструменты статического анализа, которые проверяют типичные проблемы кода, сгенерированного ИИ, такие как уязвимости безопасности, метрики сложности кода и соответствие лицензий.
- Бенчмарки производительности: автоматизированные тесты производительности ловят код, сгенерированный ИИ, который работает корректно, но плохо масштабируется.
Реальное влияние: Наш CI-пайплайн настроен со специализированными проверками, призванными выявлять уникальные риски кодирования с помощью ИИ. Для платформы выставления счетов мы интегрировали автоматизированные валидаторы бизнес-правил, которые специально проверяют такую логику, как округление налога и применение скидок.
Синергетический эффект: практики, работающие вместе
Настоящая сила проявляется, когда эти практики работают вместе. Каждая создает свой уровень защиты:
- TDD гарантирует, что код корректно работает для заданных входных данных.
- BDD гарантирует, что он реализует правильное бизнес-поведение.
- ATDD гарантирует, что он соответствует ожиданиям заинтересованных сторон.
- Парное программирование гарантирует человеческий контроль и критическое мышление.
- CI гарантирует, что все эти проверки запускаются автоматически и последовательно.
Рассмотрим типичную пользовательскую историю для e-commerce-платформы: «Как покупатель, я хочу применять коды скидок, чтобы экономить на покупках».
Без Agile-практик разработчик мог бы дать ИИ такой запрос: «Напиши функцию для применения кодов скидок к корзинам покупок». ИИ генерирует правдоподобный код, разработчик быстро его просматривает, и все уходит в релиз. Скрытые проблемы могут включать: уязвимости, связанные с комбинированием скидок, ошибки округления с плавающей точкой, отсутствие проверки срока действия или SQL-инъекцию в поиске кода скидки.
С Agile-практиками:
- ATDD: владелец продукта, разработчик и тестировщик определяют критерии приемки: «Если есть действующий код скидки 10%, то при применении к корзине на 100 долларов итог должен составлять 90 долларов».
- BDD: бизнес-аналитик пишет сценарии, покрывающие крайние случаи: просроченные коды, недействительные коды, максимальные лимиты скидок, правила комбинирования.
- TDD: пара разработчиков сначала пишет unit-тесты, включая тесты безопасности на инъекционные атаки, тесты точности десятичных вычислений и тесты для всех крайних случаев.
- Парное программирование: один разработчик пишет тесты, другой работает с ИИ над реализацией, оба критически проверяют сгенерированный код.
- CI: все тесты автоматически запускаются при коммите, плюс статический анализ на проблемы безопасности, бенчмарки производительности и проверки соответствия.
Этот многоуровневый подход выявляет проблемы на разных стадиях: тесты ловят функциональные ошибки, парное программирование — архитектурные несоответствия, CI — регрессии и проблемы безопасности.
Рекомендации по внедрению
На основе нашего опыта внедрения этих практик в нескольких командах, вот практические рекомендации для организаций, которые внедряют инструменты разработки с GenAI:
- Начните с TDD как с основы: сделайте разработку через тесты обязательной при использовании помощи ИИ. Одна эта практика предотвращает большинство проблем кода, сгенерированного ИИ. Инвестируйте в обучение разработчиков TDD, если они еще не владеют им на достаточном уровне.
- Улучшите процессы code review: традиционные чек-листы code review нужно обновить с учетом кода, созданного ИИ. Добавьте конкретные критерии проверки: обрабатывает ли код крайние случаи? Есть ли очевидные уязвимости безопасности? Соответствует ли он нашим архитектурным шаблонам? Подходит ли сложность для данной задачи?
- Инвестируйте в инфраструктуру тестирования: сильные CI-пайплайны становятся еще важнее. Убедитесь, что ваш пайплайн может быстро запускать полные наборы тестов. Медленное выполнение тестов отбивает желание часто коммитить и снижает эффективность CI как страховочной сети.
- Создайте правила использования ИИ: документируйте, когда и как использовать помощь ИИ. Некоторые сценарии могут быть высокорисковыми (код, критичный к безопасности, финансовые расчеты) и требовать повышенной внимательности. Другие могут быть низкорисковыми (шаблонный код, стандартные CRUD-операции) и больше всего выигрывать от ускорения с помощью ИИ.
- Измеряйте и отслеживайте: следите за метриками, специфичными для разработки с ИИ, такими как частота дефектов в коде, созданном ИИ, по сравнению с кодом, написанным человеком, динамика покрытия тестами, время до production и проблемы после развертывания. Используйте данные для улучшения практик.
Заключение: скорость с безопасностью
Генеративный ИИ — это фундаментальное изменение в том, как мы пишем программное обеспечение, которое можно сравнить с появлением языков программирования высокого уровня или интегрированных сред разработки. Оно приносит реальные и огромные выгоды в производительности. Но скорость без качества — это не прогресс; это ускоренное накопление технического долга.
Прекрасно то, что нам не нужно придумывать новые методы, чтобы безопасно использовать GenAI. Agile-методы, которые применяются уже десятилетиями, такие как TDD, BDD, ATDD, Pair Programming и CI, — это именно те меры безопасности, которые нам нужны. В основе этих методов лежит качество за счет автоматизации, сотрудничества и непрерывной проверки. Они становятся еще эффективнее с помощью ИИ, потому что дают объективные автоматизированные проверки, не подверженные тем же шаблонным предубеждениям, что и люди, которые плохо подходят для проверки кода, сгенерированного ИИ.
Компании, которые используют инструменты GenAI, но сохраняют строгие практики разработки ПО, получат наилучшие результаты. Например, более быструю разработку без потери качества, снижение числа дефектов несмотря на рост скорости и устойчивый рост производительности, который не создает будущих проблем с сопровождением.
Будущее разработки ПО — это не только люди или ИИ. Это сотрудничество людей и ИИ в рамках устоявшейся системы обеспечения качества, защищенной проверенными фреймворками. Сочетание скорости ИИ и надежности Agile-методов позволяет нам делать разработку ПО одновременно по-настоящему эффективной и высококачественной в большом масштабе.
Эта статья опубликована в рамках Foundry Expert Contributor Network.Хотите присоединиться?
Agile DevelopmentArtificial IntelligenceDevelopment ApproachesGenerative AISoftware Development
Contributor
Ликхеш Брамханваде — менеджер по разработке ПО в Amazon, где он руководит командами, создающими крупномасштабные платформы для выставления счетов, обеспечения соответствия требованиям, облачных голосовых помощников, персонализации и клиентских сценариев на базе ИИ. У него более 21 года опыта в Amazon, Microsoft, Nordstrom и NTT DATA; он специализируется на cloud-native архитектурах, сервисах с низкой задержкой, рекламных системах и B2B-интеграциях. Ликхеш — Fellow IETE, старший член IEEE и активный участник технических сообществ в роли рецензента, спикера и наставника.
Отказ от ответственности: высказанные здесь взгляды являются личными и не представляют позицию Amazon.
Покажите еще
opinion
Как Agile-практики обеспечивают качество в разработке с поддержкой GenAI
By Ликхеш Брамханваде9 апр. 202615 mins
Agile DevelopmentDevelopment ApproachesGenerative AI

press release Sponsored by TechnologyWire
Minimus приветствует Yael Nardi на посту CBO для содействия стратегическому росту
By TechnologyWire9 апр. 20262 mins
Security

news
Visual Studio Code 1.115 introduces VS Code Agents app
By Paul KrillApr 8, 20263 mins
Development ToolsIntegrated Development EnvironmentsVisual Studio Code

video
Python’s new frozendict type
video
How to boost app performance with Python 3.15’s lazy import
video
How to run your own little local Claude Code (sort of!)
Mar 26, 20267 mins
Python
![]()
Материал — перевод статьи с английского.
Оригинал: How Agile practices ensure quality in GenAI-assisted development
