Генеративный ИИ (GenAI) привлекает много внимания как помощник в кодировании, но разработка тестов и проверка кода — вот где он действительно силен, пишет на портале The New Stack Дэвид Брукс, старший вице-президент компании Copado.

Корпоративные ИТ-команды с трудом поспевают за потребностями бизнеса. От них постоянно требуют делать больше при меньших затратах. Поэтому важно выявить и преодолеть узкие места, с которыми они сталкиваются. Чаще всего проблема заключается в неспособности автоматизировать больше процессов.

Медиа пестрят статьями о том, как «вторые пилоты» («копилоты») на базе искусственного интеллекта повысят производительность, но успех в DevOps зависит не только от инструментов, но и от людей и процессов. Как правило, большинство пользователей здесь отстают, потому что у них нет времени сосредоточиться на улучшении процессов и обучении своих сотрудников правильному использованию новых инструментов.

Быстрее и безопаснее

Оркестрирование процессов CI/CD — один из аспектов повышения эффективности DevOps, но автоматизация тестирования должна быть на первом месте. Почему?

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

По данным исследования Forrester «Q2 2023 Digital Process Automation Survey», 57% разработчиков во всем мире иногда или всегда пропускают написание модульных тестов для своего кода. А 27% организаций даже не проводят формальных обзоров кода. Нет времени! Нужно успеть сдать!

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

Итак, как же автоматизировать тестирование, если у вас не хватает ресурсов для этого?

Копилоты хорошо известны и приняты многими разработчиками, независимо от того, одобрили ли их компании их использование. Тенденция, которая не так заметна, — использование GenAI для разработки тестов и проверки кода.

Разработка тестов

С помощью GenAI можно создавать как модульные, так и функциональные тесты.

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

Для функциональных тестов код не обязательно должен существовать до создания теста. Та же история пользователя, которая определяет функцию, может быть использована для создания функционального теста «счастливого пути». Это называется генерацией тестов на основе намерений.

Такой подход поддерживает концепцию «сдвига влево», предоставляя разработчику тест для подтверждения того, что его код работает. Отрицательные результаты по-прежнему очень важны, и хотя ИИ может помочь в этом, эксперт в предметной области (SME) сегодня лучше подготовлен для выявления критических ситуаций. Следите за развитием событий в этой области в ближайшее время.

Ключом к хорошим модульным и функциональным тестам является обеспечение полноты и грамотного написания истории пользователя. Поскольку ИИ генерирует все больше решений, пользовательская история будет требовать больше информации, чем раньше. Хорошая новость заключается в том, что ИИ можно использовать и для обогащения пользовательских историй.

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

Рецензирование кода

ИИ также может помочь в проверке кода. Разработчики могут попросить ИИ провести их по коду и даже задать конкретные вопросы об используемых библиотеках и API. Если какой-то участок кода не соответствует требованиям, разработчику не обязательно просить переписать его целиком; он может попросить переписать конкретный участок или класс, чтобы устранить предполагаемый пробел. Такой способ взаимодействия с ИИ станет необходимым навыком в будущем.

Аналогичным образом обстоит дело с модульными тестами. Разработчик должен просмотреть тест, чтобы убедиться в достаточности как положительных, так и отрицательных результатов, и запросить обновление или расширение, если это необходимо. И снова разработчику придется научиться запрашивать внесение необходимых изменений. Это приобретенный навык, который необходимо практиковать.

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

Польза для бизнес-пользователей

Даже бизнес-пользователи могут получить пользу от ИИ в части приемочных тестов и расширения библиотеки автоматизации тестирования. Они являются SME при использовании приложений, но не являются инженерами по тестированию. В то же время появляются новые инструменты. Уже сейчас ИИ-агенты могут изучать, как бизнес-пользователи изучают функциональность приложения, создавать автоматизированные тесты на основе своей сессии и даже отправлять дефекты непосредственно разработчикам с подробным описанием того, как воспроизвести ошибку. В будущем ИИ-агенты смогут изучать, как SME подходят к приложению, и добиваться лучшего понимания. В конечном итоге ИИ будет создавать тесты первого прохождения для SME.

Заключение

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