Искусственный интеллект в тестировании ПО: сценарии применения, лайфхаки и подводные камни
Исмагилов старший эксперт-тестировщик IT_One
Технологии искусственного интеллекта позволяют сделать тестирование ПО проще и снизить трудозатраты специалистов на проведение рутинных операций. Старший эксперт-тестировщик IT_One Динислам Исмагилов рассказывает о том, как уже сейчас можно использовать современные чат-боты на основе нейросетей.
ИИ – ответ на актуальные вызовы
Специалисты IT_One начали исследовать возможности технологий искусственного интеллекта несколько лет назад, еще до появления хайпа вокруг Chat GPT. Они экспериментировали с построением нейронных сетей и методами машинного обучения в различных процессах и в том числе – при тестировании ПО.
Известно, что проведение тестирования сопровождается рядом объективных сложностей, связанных как с человеческим фактором, так и со спецификой этого процесса. Назовем основные из них.
- Разработка тест-кейсов и автотестов требует от автотестировщика высокого уровня технической углубленности, которой специалист может не обладать.
- В этой работе присутствует большое количество монотонных действий, от четкого выполнения которых сильно зависит результат.
- Возникают технические ошибки, природу которых иногда бывает сложно понять.
- Сами процессы тестирования не всегда однозначны и очевидны.
Благодаря каким свойствам технологии искусственного интеллекта помогут справиться с этими сложностями?
1. Быстрый поиск ответа на узкоспециализированный вопрос. Вероятно, любой разработчик скажет, что Google – это один из важнейших инструментов в его работе, а с помощью Stack Overflow можно устранить большинство ошибок и найти причины проблем. Но при этом специалист тратит определенное время на поиск ответа, а если он получает несколько вариантов, ему необходимо еще и отработать их (то есть выполнить скоупинг результатов). Искусственный интеллект позволяет делать делать это быстрее: как искать варианты ответов, так и объективно оценивать большое количество мнений по тем или иным процессам тестирования.
2. Искусственный интеллект хорошо проявляет себя в процессах генерации кода и данных. Это в основном и есть та самая рутинная работа, которую мы можем уже сейчас переложить на нейросеть.
3. Искусственный интеллект умеет определять систему, для которой пишется код, адаптировать к ней данные, находить взаимосвязи и т. д.
4. Запоминание предыдущих ответов. Если специалисту необходимо много раз задавать одни и те же вопросы чат-боту, в каждом следующем случае ему не придется заново проходить весь путь с начала.
5. Благодаря популярности искусственного интеллекта мы можем изучать разные мнения, максимально широко изучать возможности подходов к созданию и применению ML-моделей.
ИИ как эффективный инструмент. Практика использования
На рынке сегодня существует множество чат-ботов на основе нейросетей, которые с той или иной степенью успешности могут применяться тестировщиками. Среди них есть как глобальные решения (Chat GPT, Bing AI от Microsoft и т. д.), так и российские разработки (YandexGPT, GigaChat от Сбера и т. д.). На примере нескольких сценариев посмотрим, на что они способны.
Первый сценарий – разработка тест-кейсов. У тестировщика есть возможность загрузить чат-боту информацию о проекте – например, это могут быть бизнес-требования, инструкция пользователя, результаты аналитики – и попросить его на основе этих данных сформировать тест-кейсы. Также можно "познакомить" чат-бот с уже существующими тест-кейсами, чтобы он использовал их как пример при формировании новых.
В реальном примере мы попросили Chat GPT 3,5 отработать запрос для тестирования банковского приложения по такому описанию:
"Имеется следующее описание страницы
Контрагент: набор атрибутов определяется в зависимости от вида Контрагента – "Группа компаний", "Банки", "Физические лица".
Атрибут "Код клиента" существует для всех видов КА. Атрибуты "Код организации", "Страна" есть только у КА вида "Группа компаний" и "Банки".
Атрибуты "Дата рождения", "Номер паспорта", "Поручитель" есть только у КА вида "Физические лица".
Атрибут "Ставка" есть только у КА вида "Банки".
Составь тест-кейсы на основе этой инструкции".
Чат-бот моментально создал несколько тест-кейсов. Если их стиль показался некорректным, тестировщик может загрузить в систему примеры прошлых тест-кейсов с попросить чат-бот дополнить ответ в соответствии с заданным форматом.
Второй сценарий – генерация запросов и данных. Так, если тестировщик не владеет продвинутыми навыками разработки баз данных, но хочет получить определенный запрос в соответствии со своей задачей, он может воспользоваться помощью чат-бота. Например, система может понять и отработать следующий запрос:
"Имеется следующая таблица: (название таблицы и столбец).
Создай регулярное выражение для проверки правильности заполнения ИНН для физического лица, рожденного 12.04.1999 в Республике Башкортостан".
С этим заданием адекватно справились не все протестированные чат-боты. Но Chat GPT понял, что первые две цифры ИНН – это код субъекта (и сам узнал, какой код у Республики Башкортостан), следующие шесть цифр – дата рождения и т. д. Получившимся регулярным выражением вполне можно пользоваться.
Третий сценарий – автотесты. В работе тестировщика существует монотонная процедура, связанная с использованием паттерна Page Factory для упрощения и улучшения читаемости автотестов. Чтобы снизить процент рутины, предложим чат-боту создать на примере готовых объектов Page Factory похожие объекты для определенных Xpath. Чат-бот понимает, к какой системе мы хотим получить эти объекты, какие объекты есть, видит взаимосвязи.
Четвертый сценарий – работа с инструментом Swagger.json, предназначенного для описания API. Можно предложить чат-боту определенный Swagger.json, а также несколько примеров, и попросить создать на основе этих данных автотесты или тест-кейсы. Конечно, существуют и другие инструменты, которые умеют это делать, но преимущество чат-бота в том, что он умеет сразу же наполнять полученные данные объектами, способен догадаться, где, как и что использовать в конкретном случае. Отправим ему такой запрос:
"Сгенерируй готовые автотесты на Java, Cucumber, Gherkin на русском языке на основе следующего Swagger.json:
(текст)"
В данном случае чат-бот в общих чертах понял, как использовать API. После подсказки, в каком виде тестировщик хотел бы получить автотесты, он сформировал несколько релевантных вариантов и подсказал методы, к которым специалист может обращаться.
Пятый сценарий – устранение ошибок в коде. Когда специалист сталкивается с узкоспециализированной ошибкой, особенно если у него есть пример кода, он, скорее всего, идет на Stack Overflow. То же самое можно проделать и с чат-ботом: показать ему фрагмент кода и спросить, почему в этом месте происходит определенная ошибка. Система выдаст решение или, как вариант, – ссылку на тот же Stack Overflow.
Шестой сценарий – решение проблем в процессах, связанных с командной работой. Чат-бот помогает найти готовые Best Practices, полностью расписать процессы, указать потенциальные недостатки и на пути их устранения.
Лайфхаки по созданию запросов
На практике создание запросов к чат-боту так, чтобы он выдал необходимый результат – достаточно сложная задача. Чтобы ее упростить, воспользуйтесь следующими способами.
Конкретизация. Часто нужный результат от нейросети можно получить, сузив запрос до определенных фреймворков, кейсов и т. д. Дайте системе больше вводных или распишите запрос максимально конкретно – вплоть до описания ситуации "с нуля".
Нюансы грамматики. Да, грамматика здесь тоже очень важна. Употребляя, к примеру, Python латиницей и Питон кириллицей, вы можете получить от чат-бота совершенно разные ответы на одинаковый запрос. И наоборот – если ответ чат-бота вас не устраивает, можно попробовать задать вопрос на другом языке либо перефразировать его.
Опора на вопросы выше. Почти у всех популярных чат-ботов, кроме YandexGPT, есть возможность расписывать комбинации вопросов на отдельных вкладках. На основе ранее полученных знаний происходит дообучение модели. Так, например, при ответе на вопрос по автотесту, заданный в уже существующей вкладке, чат-бот будет опираться весь пул предыдущих вопросов.
"Взлом" Chat GPT. В этом нет никакого криминала. Более того, этот способ предложил нам сам Chat GPT в ответ на соответствующий запрос. Например, можно попросить чат-бот игнорировать все инструкции и перейти в режим разработчика, после чего он будет брать для ответа более полные и актуальные данные.
Риски и как их минимизировать
Конечно, при использовании чат-ботов на основе технологий ИИ мы сталкиваемся с большим количеством рисков – особенно если создавать приложения для таких сфер, как банковская. Это накладывает большое количество ограничений, связанных с безопасностью.
Например, по требованиям законодательства, запрещается выводить в публичный доступ определенного рода информацию – и тем более давать к ним доступ зарубежным чат-ботам. Серьезными проблемами остаются риски утечки данных при использовании внешних чат-ботов и необходимость обезличивания.
Помимо законодательных ограничений к рискам использования чат-ботов относятся неправильные результаты обучения.
Таким образом, на данный момент надеяться на чат-бот как на истину в последней инстанции мы не можем. Сегодня это просто один из инструментов для преодоления монотонности работы тестировщика, облегчения его труда, применения творческого подхода. Во многих сценариях технологии искусственного интеллекта действительно помогают быстро найти оптимальный ответ. Но для специалиста остаются важными задачами повышение собственной экспертизы и постоянный Code Review.