| Тестирование приложений, созданных ИИ: практические советы для тестировщиков |
| 04.03.2026 00:00 |
|
Как я начала тестировать приложения, созданные ИИ Привет, я Рафаэла Азеведо! Уже 17 лет я работаю инженером по разработке и тестированию и специализируюсь на QA, тест-автоматизации, Web3, DevOps, мониторинге и предупреждениях. Эффективность всегда была моей страстью, и поэтому я занялась автоматизацией тестирования. Это привело меня к экспериментам с ИИ-инструментами. И сейчас многие проекты, с которыми я работаю, создаются с помощью ИИ. Как тестировать ИИ-приложения: личный опытИИ-инструменты разработки бросают тестированию уникальные вызовы, особенно когда речь идёт о качестве кода, безопасности и масштабируемости. Большинство людей, использующих ИИ для написания кода, обнаруживают, что хоть инструменты и могут генерировать впечатляющие прототипы, сложность реальных систем всё равно требует значительного участия человека. На мой взгляд, это вывело QA и тестировщиков на передний план — они стали важнее, чем когда-либо. Когда ИИ-инструменты только появились, казалось, что это идеальное решение для эффективной разработки, способное производить качественный код с невероятной скоростью. Такие инструменты, как Lovable.dev, Replit, Manus, A0.dev и Firebase Studio, отлично подходят для быстрого прототипирования. Но код, который они создают, часто не выдерживает требований контекста, масштабируемости и интеграции с системой.
Отладка ИИ-кода — это болезненно. Например, один из наших проектов был посвящен созданию платформы для криптовалютных платежей, похожей на Stripe. ИИ-агент сгенерировал фронтенд-прототип за секунды, но полностью пропустил такие важные элементы, как база данных и бэкенд. Мы продолжали добавлять детали в промпт, надеясь получить более полный результат. Но даже с более сложными промптами код всё ещё не содержал протоколов аутентификации, маппинга данных и оптимизированной производительности под нагрузкой. Если вы не будете предельно кратки и точны, ИИ-агент просто создаст то, что кажется лучшим вариантом ему. Он замокает данные и выдаст результат максимально быстро, но не создаст хорошую структуру кода. Часто он просто размещает всё в одном огромном файле, включающем все компоненты и детали — и в итоге вас ждёт гигантская сложная работа по рефакторингу. Если вкратце, создавая приложение, нельзя давать ИИ-агенту слишком много творческой свободы. В нашем случае «готовый» продукт потребовал недель доработок, чтобы соответствовать рабочим стандартам. Вот часть кода и некоторые проблемы, с которыми мы столкнулись: Сложности интеграцииИИ-код часто не учитывает контекст существующих систем. Например, однажды мы работали над созданной ИИ панелью аналитики, которая не соответствовала существующему дата-пайплайну стартапа. Это привело к серьёзным доработкам во время интеграции. Продукт, созданный агентом, был настолько хаотичным, что иногда казалось, что проще было бы выбросить всё и переписать руками. Мы тратили много времени, просто пытаясь понять, что именно ИИ пытался построить. Представьте себе очень мотивированного младшего разработчика, который хочет сделать всё хорошо, но абсолютно не умеет планировать архитектуру, не понимает сложные структуры и лишён глубоких знаний. Вот это и есть ИИ-кодинг-ассистенты. Не поймите неправильно: агенты действительно помогали, и я выступаю за их использование. Но нужно понимать обратную сторону медали и правильно выстраивать ожидания. Проблемы с масштабируемостьюИИ-инструменты ориентированы на быстрый результат – часто за счет масштабируемости. Например, интеграция платёжного шлюза, созданная ИИ, не справилась с пиковыми нагрузками — её пришлось переписывать полностью. Поэтому нужно прямо и однозначно указывать агенту, что вы хотите масштабируемое решение. Контроль качества и отладкаТестирование ИИ-кода — по сути чистый «чёрный ящик», где вы судите по поведению, не имея уверенности в структуре. Нужно понять, почему код работает (или не работает) — это всегда непросто, особенно когда нет документации и отсутствуют хорошие практики. Например, юнит-тесты и интеграционные тесты, которые создал агент, были базовыми, неполными и содержали массу неверных предположений. Вероятно, наша ошибка была в недостаточно точных промптах. E2E-тесты были созданы с использованием Playwright. И снова: если промпт неточный — тесты будут слишком простыми. А запуск тестов в GitHub workflow стал отдельной болью. Агент не сделал даже элементарных вещей вроде синхронизации package-lock.json и package.json. Пришлось копировать тесты вручную и писать в Lovable — компанию, создавшую инструмент — чтобы они исправили проблему. Здесь человеческий фактор играет большую роль: иногда быстрее просто сразу поправить код вручную. Внезапный хардкод примерных данныхКак видно на скриншоте кода ниже, ИИ-агент сначала сгенерировал фронтенд, а затем бэкенд и функциональность были созданы в соответствии с последующими промптами.
Проблема была в том, что вначале большая часть кода была захардкожена, а потом создавались данные для тестов. Моки так плотно интегрированы в функции, что трудно понять, что именно замокано, а что — нет. Поэтому при тестировании приложения нам пришлось заранее проверять, какие данные замоканы. Это заняло много времени. Не полагайтесь на тесты, которые генерируют ваши ИИ-инструменты: живые тестировщики незаменимыВ эпоху кода, сгенерированного ИИ, роль тестировщиков и инженеров по качеству стала важнее, чем когда-либо. ИИ-инструменты быстро генерируют код, но обеспечение качества и надёжности этого кода требует человеческой экспертизы. ИИ-агенты делают массу предположений — часто неверных — и обычно создают лишь самые простые тесты. Как отмечает Филип Рик в своей статье, рост ИИ-инструментов не уменьшает потребность в тестировщиках — он её усиливает. Теперь тестировщики выступают в роли первой линии обороны против дефектов в продакшене. Их задачи включают:
Практические выводы для тестирования проектов, написанных с помощью ИИТщательно тестируйте: уделяйте особое внимание пограничным случаям, масштабируемости и точкам интеграции. Постоянно документируйте: следите, чтобы документация была актуальна относительно платформы. Будьте адаптивны: готовьтесь к непредвиденной отладке и задачам оптимизации, особенно в критичных для бизнеса системах. ИИ-инструменты – это новый рубеж в разработке программного обеспечения: они ускоряют процессы и решают рутинные задачи. Однако они далеко не универсальны. Обеспечение качества, масштабируемости и бесшовной интеграции требует квалифицированных команд и чётко определённых процессов. Для тестировщиков и инженеров по качеству это время — возможность переосмыслить свои роли. Приняв вызовы, связанные с ИИ-разработкой, мы можем стать незаменимыми партнёрами, гарантируя, что сгенерированный ИИ код ляжет в основу нашего успеха. Дополнительная информация
|