Перевод статьи «5 Powerful ChatGPT prompts for QA».
Пока рано говорить о том, что ИИ заменит тестировщиков в ближайшем будущем. Но чтобы быть продуктивными в своей работе, нам нужно научиться писать промпты — запросы в ChatGPT.
Поэтому я начала изучать возможности ChatGPT и пробовать различные промпты, касающиеся QA-процессов, чтобы затем применять их в работе.
Хотя я не слишком полагаюсь на ответы ChatGPT, я нахожу его удобным для решения определенных задач. Система оказалась быстрой и помогла мне завершить несколько задач гораздо быстрее.
В этой статье я поделюсь некоторыми из моих проверенных промптов ChatGPT для QA, которые я сохранила в своем блокноте для регулярного использования.
Друзья, поддержите нас вступлением в наш телеграм канал QaRocks. Там много туториалов, задач по автоматизации и книг по QA.
Промпты ChatGPT для QA
Я считаю, что ChatGPT — не серебряная пуля для тестировщиков, поскольку тестирование ПО требует понимания контекста. ChatGPT может быть неспособен понять весь контекст и тонкости конкретного программного приложения или взаимодействия с ним.
Если полагаться только на ChatGPT при создании тест-кейсов и сценариев, можно упустить критически важные аспекты, которые сможет учесть только QA-специалист, обладающий знаниями в данной области. ИИ может стать вспомогательным инструментом, но человеческий опыт по-прежнему важен.
Учитывая вышесказанное, я использую ChatGPT для некоторых задач, где не требуется детальное знание моего программного обеспечения. Например, когда разработчик вносит изменения в код, скажем, разбивает длинный метод на более мелкие, ChatGPT можно использовать для тестирования изменений. Кроме того, в ChatGPT можно писать юнит-тесты для проверки этих изменений.
Аналогично, при тестировании адресной формы можно легко использовать ChatGPT для генерации тестовых данных.
Вот несколько задач QA, для которых я нахожу ChatGPT полезным и для которых я подготовила список промптов:
- Генерация тест-кейсов для проверки изменений кода
- Генерация тестовых данных
- Ревью кода для выявления потенциальных проблем
- Генерация кода для автоматизации тестирования
- Помощь в документировании
1. Промпт для генерации тест-кейсов
Представь, что ты опытный QA-специалист, хорошо разбираешься в программировании и знаком с лучшими практиками написания кода. Мне нужны примеры тест-кейсов для проверки изменений кода, внесенных в наше приложение разработчиком. Для создания тест-кейсов следуй приведенным ниже рекомендациям. Если что-то не ясно, уточни перед созданием тест-кейсов.
- Сгенерируй тест-кейсы, охватывающие как положительные, так и отрицательные сценарии. При необходимости сгенерируй несколько тест-кейсов, отличающихся тестовыми данными, чтобы охватить различные положительные и отрицательные сценарии.
- Сгенерируй тест-кейсы для проверки обработки ошибок (блок
catch) в измененном коде. Если в коде нет блокаcatch, то предложи случаи, которые должны быть обработаны в блокеcatch. - Предложи тест-кейсы, охватывающие нефункциональные аспекты. Например, конкурентность.
- Тест-кейсы должны быть релевантны данному коду и не должны основываться на твоих предположениях.
- Тест-кейсы должны быть в табличном формате.
Как использовать этот промпт
Используйте этот запрос к ChatGPT для создания подробных тест-кейсов для конкретного изменения кода. Получив ответ на подобный запрос, я могу обнаружить несколько потенциальных крайних случаев, что улучшит мое тестирование.
Давайте используем этот промпт для генерации тест-кейсов для проверки такого кода:
function calculateDiscount(bin) {
// Visa range (5111 - 5222)
const visaPattern = /^5[1-2]\d{2}/;
// MasterCard range (4111 - 4444)
const masterCardPattern = /^4[1-4]\d{2}/;
if (visaPattern.test(bin)) {
return 15.0; // Visa discount
} else if (masterCardPattern.test(bin)) {
return 10.0; // MasterCard discount
} else {
return 0.0; // No discount for other card types
}
}

2. Промпт для ревью кода
Представь, что ты QA-специалист (тестировщик ПО). Ты должен проверить корректность кода, который я тебе передам. При этом придерживайся следующих инструкций.
Цель: проверить корректность предоставленного кода. Определи потенциальные крайние случаи, обработай исключительные сценарии и убедись, что код соответствует заданным требованиям. Дополнительно предложи мне список тест-кейсов к этому коду.
Вот указания по проверке кода:
- Понимание кода. Дай очень высокоуровневое объяснение кода и его назначения.
- Валидация входных данных. Протестируй код с различными валидными и невалидными строками, символами юникода и т.д., чтобы проверить ожидаемое поведение программы. Выдели входные данные, которые могут не обрабатываться кодом должным образом.
- Граничные случаи. Протестируй код с минимальным и максимальным значением инпута и соответствующими переменными.
- Обработка исключений. Намеренно вызови исключения и ошибки, чтобы проверить эффективность обработки исключений.
- Проверь, нет ли в коде нефункциональных проблем, например утечки памяти. Оцени, подходит ли код для многопоточности.
- Соображения безопасности. Проверь основные аспекты безопасности и выдели потенциальные уязвимости, такие как SQL-инъекции, межсайтовый скриптинг и т.д.
Дополнительно:
- Внеси предложения по улучшению переданного кода, сообщи о возможных ограничениях, связанных с ним.
- Предоставь общую оценку кода, его читабельности и легкости поддержки.
- Предложи различные тест-кейсы, охватывающие и крайние случаи, которые нужно выполнить для детальной оценки изменения кода.
Вот мой код: <Вставить_код>.
Когда использовать этот промпт
Я использую этот промпт, когда от ChatGPT мне нужны предложения по улучшению кода, измененного разработчиком. С помощью этого запроса я пытаюсь оценить качество кода и узнать, можно ли что-то улучшить. Кроме того, такой запрос может помочь в обнаружении проблем, например, с безопасностью.
3. Промпт для создания тестовых данных
Мне нужно создать полный набор тестовых данных для тщательной оценки устойчивости и функциональности поля ввода. Должны быть проверки чувствительности к регистру: инпуты как с прописными, так и со строчными символами (например, «TestInput» и «testinput»). Также должны быть пробельные символы в начале и в конце ввода, чтобы оценить, как система обрабатывает пробелы вокруг вводимых данных (например, » Input123__»). Протестируй поле ввода с сочетанием разных классов символов, включая алфавитно-цифровые и специальные символы (например, «Input@123»). Проверь исключительно цифровой ввод (например, «123456») и исключительно буквенный (например, «AlphaString»). Оцени поведение системы при вводе данных максимальной и минимальной допустимой длины. Проверь реакцию поля ввода на пустой ввод и оцени, как оно обрабатывает дубликаты. Протестируй «сложные» символы и строки, типа Powerلُلُصّبُلُلصّبُررً ॣ ॣh ॣ ॣ ॣ冗), символы Юникода и латиницы, чтобы оценить безопасность и интернационализацию системы. Проверь крайние случаи, такие как null-символы и потенциальные попытки инъекций (например, «<script>alert(‘XSS’)</script>»).
Сгенерируй тестовые данные для этого поля ввода <поле-ввода> в табличном формате.
Когда использовать этот промпт
Ответ от ChatGPT на приведенный выше промпт:
| Тест-кейс | Ввод | Описание |
|---|---|---|
| 1 | test@example.com | Основной валидный формат электронного адреса |
| 2 | Test@Example.com | Проверка чувствительности к регистру (верхний регистр) |
| 3 | tEsT@eXaMpLe.CoM | Проверка чувствительности к регистру (смешанный регистр) |
| 4 | user123@domain.com | Буквенно-цифровые символы |
| 5 | user.123@domain.com | Буквенно-цифровые символы с точкой |
| 6 | user@123domain.com | Буквенно-цифровые символы в домене |
| 7 | user@domain.123 | Буквенно-цифровые символы в домене верхнего уровня |
| 8 | __input@example.com | Пробелы в начале строки |
| 9 | input@example.com__ | Пробелы в конце строки |
| 10 | 543543 | Только цифровые символы |
| 11 | AlphaString | Только буквенные символы |
| 12 | special@characters! | Специальные символы |
| 13 | 123456 | Ввод только цифр с минимально допустимой длиной |
| 14 | A | Ввод только букв, с минимально допустимой длиной |
| 15 | verylongemailaddress1234567890@domain.com | Максимально допустимая длина |
| 16 | Пустая строка | |
| 17 | test@example.comtest@example.com | Дубликат |
| 18 | Powerلُلُصّبُلُلصّبُررً ॣ ॣh ॣ ॣ冗 | Строка с символами юникода |
| 19 | <script>alert(‘XSS’)</script> | Попытка потенциальной инъекции (XSS) |
| 20 | user@exåmple.com | Латинские буквы с диакритическими знаками |
| 21 | user@exámple.com | Символы Юникода с диакритическими знаками |
| 22 | user@domain..com | Две точки в домене |
| 23 | user@domaincom | Отсутствие точки в домене |
| 24 | user@domain.c | Одиночный символ в домене верхнего уровня |
| 25 | user@domain.com. | Точка в конце домена |
4. Промпт для генерации кода автотеста
Этот промпт ChatGPT я использовала, чтобы сгенерировать код для получения даты в будущем на основе текущей. Я делюсь им, чтобы продемонстрировать уровень детализации.
Напиши на языке Java функцию для генерации будущей даты на основе текущей. Функция должна принимать входной параметр ‘NumberOfDays’ (N), представляющий количество дней, которое нужно добавить к сегодняшней дате. На выходе должна получиться строка даты, отформатированная как YYYY-DD-MM. Реализуй функцию для точного вычисления будущей даты путем добавления указанного количества дней к текущей дате. Убедись, что функция должным образом обрабатывает крайние случаи и придерживается заданного формата даты.
5. Промпт для создания документации
Этот промпт я опять же привожу в качестве примера того, как написать подробный запрос для получения максимально полезного ответа от ChatGPT. Ваш промпт может отличаться, но важно сохранять подобный уровень детализации. Чтобы повысить релевантность ответа, явно прописывайте каждый элемент ваших ожиданий.
Мне нужна помощь в создании таблицы Excel, которой я собираюсь поделиться с другими командами. Наша команда управляет сайтом магазина, и недавно мы ввели фичу, которая предлагает скидки в зависимости от стоимости корзины. Чтобы тщательно протестировать эту фичу, необходимо сотрудничество между командами для проведения сквозного тестирования. Цель документа — систематическая запись тест-кейсов, выполненных разными командами, их результатов, найденных дефектов и важных артефактов, таких как скриншоты. Нужен формат электронных таблиц, позволяющий легко обмениваться информацией между командами. Цель — создать упорядоченный удобный документ для отслеживания процесса тестирования и его результатов.
