Всем привет! Я QA Engineer и недавно открыл для себя ChatGPT и хочу открыть этот мир другим тестировщикам. Эта статья не руководство к применению и каких-то суперлайфхаков здесь не будет. Цель этой статьи в том, чтобы показать огромные возможности нейросетей в помощи нам, тестировщикам, в работе. Надеюсь что кто-то, прочитав это, хоть немного сможет облегчить себе составление тест-кейсов, написание документации или написание автотестов. Примеров с написанием кода здесь по минимуму, так как таких материалов уже много. Небольшая вводная:
Преимущества применения ChatGPT в тестировании ПО:
-
Автоматизация генерации тестовых данных: ChatGPT может использоваться для генерации различных тестовых данных, таких как исходные данные и ожидаемые результаты, что может значительно ускорить процесс тестирования.
-
Повышение качества тестирования: ChatGPT может использоваться для генерации более реалистичных и сложных тестовых случаев, которые могут помочь выявить более широкий спектр ошибок и проблем в ПО.
-
Сокращение времени тестирования: ChatGPT может ускорить процесс создания тестовых случаев и тестирования, что позволяет сократить время, затрачиваемое на ручное тестирование.
Недостатки применения ChatGPT в тестировании ПО:
-
Ограниченность обучения: ChatGPT может быть обучен только на основе доступных данных, что может ограничить его возможности в создании более сложных тестовых случаев.
-
Необходимость дополнительной проверки: ChatGPT может генерировать тестовые случаи, которые не всегда являются корректными и точными, поэтому требуется дополнительная проверка и ручное тестирование.
-
Высокая сложность: ChatGPT — это достаточно сложная технология, что может потребовать дополнительных усилий для ее внедрения в процесс тестирования ПО.
Ниже приведены возможные примеры использования технологии в работе.
1. Тест-кейсы
Я попросил ChatGPT написать тест-кейсы на форму авторизации, любимая задача на любом собеседовании QA. Конечно, ему понадобились условные требования для составления кейсов.
Запрос:

Ответ

Первых 10 кейсов вполне хватит для проверки валидации, как я считаю, но я решил его помучать и попросил еще.
Ответ

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

2. Матрица компетенций
У нас маленький стартап и нет готовых матриц компетенций на позиции, а я хочу повышения и мне нужно знать к чему стремиться, чтобы объективно себя оценивать. А еще я могу взять эту матрицу и стать автором грейдов у себя в компании 🙂
Запрос: «Составь матрицу компетенций для Manual Senior QA Engineer»
Ответ

3. Виды тестирования
Я пишу документацию и хочу описать виды тестирования, чтобы показать всей команде чем мы вообще занимаемся.
Запрос:
-
В чем цель нагрузочного тестирования?
-
Каким методом проводить нагрузочное тестирование?
-
Как определить что нагрузочное тестирование проведено успешно?
Ответ

4. Как определить какие кейсы нужно автоматизировать?
Тоже, кстати, вопрос с собеседований:
Запрос: “Я пришел на новый проект. Как определить, какие тесты должны быть автоматизированы?”
Ответ

5. Выбор мобильных устройств
Допустим у нас есть какая-то метрика девайсов и нам нужно передать задачу в закупку, выбрав нужные модели оптимально, рассмотрим пример:
Запрос: «У нас есть список из 10 смартфонов которыми пользуются пользователи нашего сайта, напиши на каких разрешениях и операционных системах нам нужно тестировать сайт чтобы убедиться что у них все будет работать, а также цены этих смартфонов»:
-
Xiaomi Redmi 9C
-
Samsung Galaxy A12
-
OPPO A17
-
Realme 8
-
Xiaomi Redmi Note 11 Pro
-
POCO X4 Pro
-
Realme GT Master Edition
-
Infinix HOT 12i
-
iPhone 11
-
iPhone 5s»
Ответ

Можно также попросить его самому определить устройства.
Запрос: «Напиши список из 10 самых популярных смартфонов в интернете, напиши на каких разрешениях и операционных системах нам нужно тестировать сайт чтобы убедиться что у них все будет работать, а также цены этих смартфонов»:
Ответ

P.S. подобную информацию лучше пока что перепроверять хотя бы точечно.
6. Поиск локаторов на странице
Я не хочу тратить много времени на написание теста, поиск и описание локаторов можно делегировать нейросети:
Запрос:
«Я скину тебе сайт, найди на его главной странице все элементы содержащие «Security», «Sign Up», а также поисковую строку и кнопки с ссылками на соц. сети внизу страницы и напиши мне уникальные локаторы этих элементов в формате XPATH
Ответ

Конечно, не все локаторы он нашел безупречно, но с чем-то справился и попробовать, в общем то, стоит:
Проверка локаторов

7. SQL запрос
В SQL я не силен, но нужно срочно составить запрос и достать нужную информацию:
Запрос:
«Даны две таблицы В первой есть колонки: id, age, name Во второй id, salary, vacation_days Составь запрос который выведет name у которого наибольший age и его vacation_days»
Ответ с пояснениями

8. API запрос на Requests
По-моему, с этим он справился лучше всего. Конечно весь проект такими тестами не покроешь, но по сути нагенерил себе кода, а потом дорабатываешь руками, почему нет:
Запрос:
«Напиши пожалуйста код на Python + Requests который отправляет GET запрос на URL https://reqres.in/api/users?page=2 и проверяет статус код плюс валидность схемы JSON»
Ответ с комментариями
import requests import jsonschema url = 'https://reqres.in/api/users?page=2' # отправляем GET запрос на URL response = requests.get(url) # проверяем статус код if response.status_code == 200: print('Статус код:', response.status_code) else: print('Ошибка! Статус код:', response.status_code) # проверяем валидность схемы JSON schema = { "type": "object", "properties": { "page": {"type": "integer"}, "per_page": {"type": "integer"}, "total": {"type": "integer"}, "total_pages": {"type": "integer"}, "data": { "type": "array", "items": { "type": "object", "properties": { "id": {"type": "integer"}, "email": {"type": "string"}, "first_name": {"type": "string"}, "last_name": {"type": "string"}, "avatar": {"type": "string"} }, "required": ["id", "email", "first_name", "last_name", "avatar"] } } }, "required": ["page", "per_page", "total", "total_pages", "data"] } try: jsonschema.validate(response.json(), schema) print('Схема JSON валидна!') except jsonschema.exceptions.ValidationError as err: print('Ошибка валидации схемы JSON:', err)

Такие дела. Это лишь малая часть того что можно придумать. Я уверен что уже в этом году будут выходить нейросети, специализированные на тестировании ПО, какие функции они будут выполнять можно только представить. Возможно кто-то из прочитавших эту статью здесь вдохновится и сделает свой собственный продукт. Если бы я в университете знал что матрицы и матанализ могут мне понадобиться для написания своей нейросети то определенно учился бы лучше.
Кстати, в написании этой статьи мне также помогли нейросети ChatGPT, Notion AI и MidJourney.
ссылка на оригинал статьи https://habr.com/ru/post/720454/
Добавить комментарий