ChatGPT: новый инструмент в борьбе с багами. Как можно использовать AI для повышения качества тестирования

Kate

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

Преимущества применения ChatGPT в тестировании ПО:

  1. Автоматизация генерации тестовых данных: ChatGPT может использоваться для генерации различных тестовых данных, таких как исходные данные и ожидаемые результаты, что может значительно ускорить процесс тестирования.
  2. Повышение качества тестирования: ChatGPT может использоваться для генерации более реалистичных и сложных тестовых случаев, которые могут помочь выявить более широкий спектр ошибок и проблем в ПО.
  3. Сокращение времени тестирования: ChatGPT может ускорить процесс создания тестовых случаев и тестирования, что позволяет сократить время, затрачиваемое на ручное тестирование.
Недостатки применения ChatGPT в тестировании ПО:

  1. Ограниченность обучения: ChatGPT может быть обучен только на основе доступных данных, что может ограничить его возможности в создании более сложных тестовых случаев.
  2. Необходимость дополнительной проверки: ChatGPT может генерировать тестовые случаи, которые не всегда являются корректными и точными, поэтому требуется дополнительная проверка и ручное тестирование.
  3. Высокая сложность: ChatGPT - это достаточно сложная технология, что может потребовать дополнительных усилий для ее внедрения в процесс тестирования ПО.
Ниже приведены возможные примеры использования технологии в работе.

1. Тест-кейсы​

Я попросил ChatGPT написать тест-кейсы на форму авторизации, любимая задача на любом собеседовании QA. Конечно, ему понадобились условные требования для составления кейсов.

Запрос:

9b92fdbf63bd5c72b9676d57cf176148.png
Ответ
1b8c9d1b6add3d4088d2d972e4756d39.png

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

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

2. Матрица компетенций​

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

3. Виды тестирования​

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

4. Как определить какие кейсы нужно автоматизировать?​

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

5. Выбор мобильных устройств​

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

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

P.S. подобную информацию лучше пока что перепроверять хотя бы точечно.

6. Поиск локаторов на странице​

Я не хочу тратить много времени на написание теста, поиск и описание локаторов можно делегировать нейросети:
Запрос:
"Я скину тебе сайт, найди на его главной странице все элементы содержащие "Security", "Sign Up", а также поисковую строку и кнопки с ссылками на соц. сети внизу страницы и напиши мне уникальные локаторы этих элементов в формате XPATH
https://github.com/"
Ответ
a75af17096868c60467627a937eb67f5.png

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

7. SQL запрос​

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

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)
587afdf6facf40c85f0506214a66d508.png

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


 
Сверху