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

Перспективные направления

Интерес к использованию ИИ в тестировании активизировался в последние два года на фоне бурного развития генеративных нейросетей. Можно выделить несколько направлений, где их применение наиболее перспективно:

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

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

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

В самом идеальном варианте можно было бы обойтись и вовсе без тестировщиков и разработчиков. Архитектор давал бы ИИ техническое задание, а тот сам бы разрабатывал программное решение, покрывал его тестами и подсказывал, как улучшить процесс CI/CD. К сожалению или счастью, пока это невозможно. Даже при задействовании ИИ в исправлении автотестов все равно требуется вмешательство эксперта, чтобы проанализировать сбои и чаще всего внести правки в код.

Возможные сложности

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

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

Затраты на тестирование в разработке ПО обычно составляют около 10-15% бюджета. Однако рассчитывать на такую же экономию при использовании ИИ было бы неверно, так как само его внедрение тоже требует вложений. Нужно учитывать стоимость ИИ-инструмента в виде подписки на облачное решение или расходы на покупку и обслуживание оборудования, если ИИ используется локально. В результате может оказаться, что привлечение людей проще и экономически выгоднее.

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

Чего ожидать в будущем?

В перспективе 5-10 лет искусственный интеллект может полноценно взять на себя широкий спектр задач по тестированию — генерацию типовых автотестов, проверку требований на корректность и связность, а также обеспечение полного покрытия требований автотестами с интеграцией их в CI/CD-процессы и т. д.

В более далекой перспективе можно представить, что ИИ сможет писать ПО полностью автономно, а тестированием займется другой ИИ-инструмент. Это приведет к своеобразной «гонке» между инструментами — чей ИИ лучше создает продукт, а чей эффективнее его тестирует.

Что же ждет самих тестировщиков? В ближайшие годы для успешной конкуренции с ИИ им потребуется широкий набор знаний и навыков: понимание основ объектно-ориентированного программирования, Data Science и ИИ, умение выбирать и применять инструменты машинного обучения и крупные языковые модели, а также готовить качественные датасеты для обучения ИИ.

Денис Воденеев, директор отделения автоматизированного тестирования IBS