Приветствую вас, друзья! Меня зовут Иван Сидоренко и последние несколько лет я занимаюсь автоматизацией тестирования. Меня, как и многих моих коллег, заинтересовала возможность использования нейросетей в своих рабочих задачах. В последнее время вышло множество материалов, посвященных использованию нейросетей, и я хотел бы поделиться своим опытом работы с ними. В частности, я хотел бы рассказать о своем опыте работы с Chat GPT — инструментом, который я выбрал для своих экспериментов.
Я начал работать с Chat GPT c марта 2023 года, основная часть моих запросов пришлась на использование телеграм-бота на базе версии 3.5. Не буду давать рекламу этому боту, так как вы с легкостью найдете множество аналогов в том же телеграме, тем более, что со временем в него начали добавлять рекламу, которой раньше не было. Также мне довелось работать с другими ботами и сервисами на базе Chat GPT, но не заметил особой разницы в их работе. Думаю, это связано с тем, что они все они работали на старой версии нейросети, для себя я отмел варианты с использованием покупки номера телефона и использования впн, т. к. такой вариант вижу для себя избыточным. Если вы вдруг знаете удобные сервисы, позволяющие работать с последней версией модели, пожалуйста, поделитесь ими в комментариях.
В этой статье я хочу описать кейсы, которые могли бы помочь в работе тестировщику, постараюсь не сильно пересекаться с материалами, которые я видел в интернете. Итак, приступим.
Создание регулярных выражений
Регулярные выражения – это, наверное, одна из самых нелюбимых технологий всех айтишников. Писать самому сложно, разбираться в чужих – еще сложнее. Создание регулярных выражений может быть необходимо как автоматизатору тестирования, так и ручному тестировщику для проверки корректной работы полей ввода. Сам я лично при необходимости работать с ними сразу иду гуглить. Поэтому, когда я узнал о сервисе, позволяющему генерировать «регулярки» с помощью описания – пришел в полный восторг. К сожалению, этот сервис не проработал долго и спустя некоторое время закрылся. Недолго горюя о такой потере, я решил отправить аналогичные запросы в выбранный телеграм-бот. Результат удовлетворил меня более чем, да еще и нет никаких ограничений на количество запросов.
Можете сгенерировать только регулярное выражение без генерации какого-либо кода. Как я понял, без указания языка нейросеть будет работать по умолчанию с английским.
Запрос: «Напиши регулярное выражение для формата "Название города, начинается с большой буквы, может быть один дефис"».
Можете сгенерировать код с регулярным выражением. Например, попросить написать код для проверки введенного email.
Запрос: «Напиши код на языке java, который проверяет, что введенный пользователем email-адрес имеет правильный формат».
Формирование материалов для подготовки к собеседованию
У многих айти специалистов за годы работы может скопиться большое количество шпаргалок для подготовки к собеседованиям. Я тоже много раз начинал заниматься этой работой, но, к сожалению, мне никак не удается набрать вменяемый список материалов. К каждому собеседованию приходиться штудировать технические статьи и смотреть соответствующие видео, а это занимает большое количество времени. А если необходима только определенная информация, то в статьях нужно искать отдельные конкретные абзацы, что тоже отнимает время и силы. Отчасти эту проблему мне помог решить бот с нейросетью. Ответы Сhat GPT в таком контексте показались мне не совсем полными, но с задачей уровня: «вспомнить основные пункты из задаваемого запроса», он вполне справляется. Поэтому, прежде чем готовиться к собеседованиям с помощью нейросети, я настоятельно рекомендую полностью разобраться в теме. Для себя же я выношу понравившиеся ответы в отдельный телеграм-канал и просматриваю их перед собеседованиями. Такой подход я могу рекомендовать широкому кругу специалистов, т.к. он помогает уменьшить время для подготовки к собеседованию.
Вот, например, запрос про виды сравнений в java, понятно, что такой ответ далек от полного, но освежить память он вполне позволяет.
Запрос: «Виды сравнений в Java».
Или вот определение полиморфизма, особенно мне понравился последний абзац ответа.
Запрос: «Расскажи, что такое полиморфизм в ООП на примере языка Java, нужно точное определение и определение, которое поймет ребенок».
Также понравился ответ на классический вопрос про http и https. Кратко и по делу.
Запрос: «Почему нельзя всегда использовать https вместо http?».
Преобразование данных
У этого пункта получилось достаточно абстрактное название, так как в него я включаю множество кейсов. Например, есть таблица и из нее надо достать определенные данные и сформировать строку или взять таблицу из БД и преобразовать её в Java Pojo класс. Как вы понимаете, этот пункт для меня остается самым интересным, поскольку позволяет сэкономить кучу времени на рутине. К сожалению, для себя я нашел только два интересных кейса по работе с данными.
Предположим, вам перед запуском автотеста необходимо отключить часть определенных заглушек в базе данных. Вместо того, чтобы самостоятельно ручками копировать нужные имена заглушек в нужные методы, можно попросить Chat GPT сделать это за вас.
Запрос: «У тебя есть пример вызова метода в Java dbClient.updateFeatureFlag("stub_name1", false); Тебе дан список значений, необходимо сформировать столько же вызовов методов, как в примере выше, но первым аргументом передается значение из списка. Список значений:
Как-то раз мне понадобилось сформировать pojo объект на основании таблицы из базы данных. Гугл помог мне выяснить, что для Intellij IDEA уже существуют удобные плагины для выполнения такой работы. К несчастью для меня, такой плагин будет работать только с ultimate версией идеи. И тут мне помог бот с нейросетью. Для примера я сократил количество полей в таблице из базы данных, но в моем практическом случае это было более 30 полей.
Запрос: На основании этих данных из базы данных сформируй Java Pojo класс. Используй lombok и аннотацию @Column. Слева указан тип данных, справа поле:
uuid product_id
uuid status_id
integer sum
integer term
uuid currency_id
Поиск элементов в Json
У коллег в аналогичных статьях я видел примеры использования Chat GPT для поиска элементов на странице. Я же хотел бы разобрать кейс с поиском элементов в json. Такой механизм частно нужен, когда необходимо писать простые тесты с использованием RestAssured для проверок определенных полей из ответа, писать каждый раз такой путь в сложных json может быть затратно по времени.
Чтобы разобрать такой пример, давайте попросим нейросеть сгенерировать тестовую json, в которой и будем искать заданное значение.
Запрос: «Сгенерируй сложный json в котором будет 7 уровней вложенности, объекты и массивы».
Теперь будем искать заданные объект в этом json.
Запрос: «Задана json, напиши json path до первого объекта "name" в массиве "level6"».
Решение проблем с git
Для многих следующий пример может показаться несерьезным, но для меня такая возможность использования нейросети является серьезным подспорьем. Мне в рамках моей работы нечасто приходилось решать какие-либо проблемы при работе с git’ом. Если в одиночку работаешь в отдельном репозитории с автотестами, то вероятность возникновения проблем с системой управления версиями минимальна. Но критические ситуации иногда случаются, и мне к ним очень сложно привыкнуть, когда 95 процентов твоей деятельности занимает использование трех-четырех команд. В таких случаях я резко теряю контроль над происходящим и судорожно начинаю описывать свою проблему гуглу. Потом также нервно пытаюсь найти в предложенных статьях нужное мне решение. Беру первый попавшийся вариант, ввожу одну команду, другую и все, дальше не выбраться. Либо ручками пытаюсь сохранить нужную мне информацию, либо призываю на помощь более опытных разработчиков.
И тут мне помог чат-бот с нейросетью. Проблема была в том, что я сделал неправильный “pull” в ветку. Нейросеть выдала отличный ответ и я смог по шагам решить свою проблему.
Запрос: «Как отменить git pull в ветку безопасно».
Что не понравилось
Задавая вопросы нейросети, я заметил, что она очень плохо формирует ссылки на какие-либо материалы. Например, я просил сформировать список из сайтов для изучения kafka, которые она могла бы рекомендовать. В результате я получил 8 ссылок, пять из них оказались не рабочими, а оставшиеся три мне показались сайтами с не самыми лучшими материалами.
Также я хочу обратить особое внимание, что нейросеть не всегда дает хорошие и правильные ответы, всегда рекомендую перепроверять за ней, если речь идет о принципиальных вещах. Для демонстрации несовершенства современных сетей можно посмотреть заставку этой статьи. Так выглядит ответ от нейросети Кандинский на запрос «На фоне заснеженных гор отображается значок Chat GPT».
Заключение
В целом более чем доволен опытом работы с Chat Gpt. Я не затронул в своей статье такие кейсы использования нейросети, как: разработка тест-кейсов, создание запросов sql, написание кода, решение проблем при отладке автотестов, создание запросов RestAssured, так как мне показалось, что по этим темам создано уже достаточно материалов. Из понравившегося могу порекомендовать похожую статью на хабре, выходившую раньше, а также видео Артема Русова про возможности использования Chat GPT тестировщиком. В любом случае я продолжаю свое изучение нейросетей, надеюсь, эта статья оказалась вам полезной.
НЛО прилетело и оставило здесь промокод для читателей нашего блога:
-15% на заказ любого VDS (кроме тарифа Прогрев) — HABRFIRSTVDS.
lazy_val
Все ровно то же самое можно получить, задав точно такие же вопросы в поисковой строке Google (или Bing, или Yandex, или любого другого более или менее нормального поисковика).
Единственное отличие - не надо тыкать в первую ссылку в выдаче. Хотя и этот процесс можно автоматизировать.
Пока никакого added value от Chat GPT в данном контексте не усматривается.