Содержание
Утро: планирование тестирования
Первое, что ты делаешь утром — смотришь задачи в спринте. Вместо того чтобы самому расписывать план тестирования, дай это Claude (как настроить контекст — в первой части серии).
Вот user story из Jira:
"Как пользователь интернет-магазина, я хочу фильтровать товары по цене,
чтобы быстро находить товары в моём бюджете.
Acceptance criteria:
- Ползунок с min и max ценой
- Поля для ручного ввода цены
- Фильтрация без перезагрузки страницы
- Сброс фильтра кнопкой 'Очистить'"
Составь план тестирования для этой задачи.
Включи: что проверяем, приоритет, примерное время.
Claude вернёт структурированный план: сначала smoke-тест (ползунок работает), потом функциональные проверки, потом граничные случаи, потом UI.
Если задач несколько — спроси что тестировать первым:
В спринте 4 задачи:
1. Фильтр товаров по цене
2. Изменение аватара в профиле
3. Исправление бага с двойной оплатой
4. Новая страница "О нас"
Расставь приоритет тестирования. Учитывай: риск для бизнеса,
сложность, затронутые модули.
Тест-кейсы из требований
Главная ежедневная задача. Ты получаешь описание фичи — тебе нужны тест-кейсы.
Из user story
Я тестирую форму регистрации в мобильном приложении банка.
Платформа: iOS и Android.
Поля: имя, фамилия, телефон, email, пароль, подтверждение пароля.
Есть чекбокс "Согласие с условиями" (обязательный).
После регистрации — SMS-подтверждение.
Напиши тест-кейсы в формате таблицы:
ID | Тип | Название | Шаги | Ожидаемый результат | Приоритет
Типы: позитивный, негативный, граничный.
Включи минимум 15 тест-кейсов.
Claude выдаст таблицу. Вот фрагмент того, что ты получишь:
| ID | Тип | Название | Шаги | Ожидаемый результат | Приоритет |
|---|---|---|---|---|---|
| TC-01 | Позитивный | Успешная регистрация | 1. Заполнить все поля корректно 2. Отметить чекбокс 3. Нажать "Зарегистрироваться" | SMS-код отправлен, переход на экран подтверждения | High |
| TC-02 | Негативный | Пустое поле имени | 1. Оставить поле "Имя" пустым 2. Заполнить остальные поля 3. Нажать "Зарегистрироваться" | Ошибка "Введите имя" | High |
| TC-03 | Граничный | Пароль ровно 8 символов | 1. Ввести пароль из 8 символов (минимум) 2. Заполнить остальные | Регистрация проходит | Medium |
Из описания экрана
Если у тебя нет user story, но есть макет или описание экрана:
Описание экрана "Корзина":
- Список товаров с фото, названием, ценой, количеством
- Кнопки +/- для изменения количества
- Кнопка "Удалить" для каждого товара
- Промокод — поле ввода + кнопка "Применить"
- Итоговая сумма с учётом скидки
- Кнопка "Оформить заказ"
Напиши UI-тест-кейсы. Фокус: отображение, взаимодействие, состояния.
Для API (Postman)
Вот документация API-эндпоинта:
POST /api/orders
Headers: Authorization: Bearer {token}
Body: { "items": [...], "address_id": 123, "payment_method": "card" }
Ответы: 201 Created, 400 Bad Request, 401 Unauthorized, 422 Unprocessable
Напиши тест-кейсы для тестирования в Postman.
Для каждого: метод, URL, тело запроса, ожидаемый код и тело ответа.
Исследовательское тестирование
Когда ты исчерпал стандартные сценарии — попроси Claude подумать за тебя. Отдельные техники исследовательского тестирования с AI мы уже разбирали.
Я тестирую загрузку файлов в облачное хранилище.
Поддерживаемые форматы: jpg, png, pdf, docx.
Лимит: 50 МБ на файл, 10 файлов одновременно.
Придумай 15 нестандартных способов сломать эту фичу.
Чем креативнее — тем лучше.
Claude предложит:
- Файл с расширением .jpg, но внутри — exe
- Файл ровно 50 МБ, 50.01 МБ, 0 байт
- Имя файла из 255 символов
- Имя файла с пробелами, кириллицей, эмодзи
- Загрузить 10 файлов и во время загрузки — 11-й
- Загрузить и сразу удалить, не дожидаясь завершения
- Два одинаковых файла одновременно
- Потерять интернет во время загрузки
Персоны — ещё один мощный приём:
Я тестирую интернет-магазин одежды.
Представь что ты:
1. Пользователь с плохим зрением (шрифт увеличен до 200%)
2. Пользователь с медленным 3G интернетом
3. Пользователь с клавиатурой без мыши
4. Пользователь, который впервые покупает онлайн
Какие проблемы каждый из них может встретить?
Какие тест-кейсы нужны для каждого?
Баг-репорты
Ты нашёл баг. Вместо того чтобы 10 минут оформлять — дай Claude сырое описание.
Оформи баг-репорт для Jira:
Зашёл в профиль, нажал "Сменить аватар", выбрал фото с телефона,
фото загрузилось но отображается вверх ногами. Если обновить
страницу — показывается старый аватар. В консоли ошибка
"EXIF orientation not supported". Chrome 125, macOS.
Claude выдаст:
Заголовок: Аватар отображается с неправильной ориентацией при загрузке фото с EXIF-данными
Severity: Major
Шаги воспроизведения:
- Авторизоваться в системе
- Перейти в Профиль → Настройки
- Нажать "Сменить аватар"
- Выбрать фото, снятое на телефон (с EXIF orientation)
- Подтвердить загрузку
Ожидаемый результат: Аватар отображается с правильной ориентацией
Фактический результат: Аватар перевёрнут на 180°. После обновления страницы отображается старый аватар
Окружение: Chrome 125, macOS Sonoma
Доп. информация: В консоли ошибка EXIF orientation not supported. Предположительно, сервер не обрабатывает EXIF-данные при сохранении изображения.
Скопировал — вставил в Jira. Две минуты вместо десяти.
Тестовые данные
Email-адреса
Сгенерируй 20 email-адресов для тестирования поля email:
- 5 валидных (разные домены, длины)
- 5 невалидных (типичные ошибки)
- 5 граничных (максимальная длина, спецсимволы)
- 5 для проверки безопасности (XSS, SQL-инъекции)
Формат: email | тип | что проверяем
JSON для API
Сгенерируй 5 тел запросов для POST /api/users:
{ "name": "", "email": "", "age": 0, "role": "" }
1. Валидный запрос
2. Пустые обязательные поля
3. Возраст = -1, 0, 150, 999
4. Email с SQL-инъекцией
5. Name длиной 1000 символов
Формат: JSON + что проверяем.
SQL для тестовой БД
Напиши SQL-запросы для создания тестовых данных:
- 10 пользователей (разные роли: admin, user, moderator)
- 50 товаров (разные категории, цены от 0.01 до 999999.99)
- 20 заказов (разные статусы: new, paid, shipped, delivered, cancelled)
База данных: PostgreSQL. Таблицы: users, products, orders.
CSV для импорта
Создай CSV-файл с 15 строками для тестирования импорта пользователей.
Колонки: name, email, phone, role, status.
Включи:
- 5 корректных строк
- 2 с пустыми обязательными полями
- 2 с дублирующими email
- 2 с невалидным форматом телефона
- 2 с несуществующей ролью
- 2 со спецсимволами в имени
Работа с ошибками и логами
Что значит эта ошибка?
При тестировании получил ошибку:
HTTP 502 Bad Gateway
nginx/1.24.0
Что это значит? Где проблема? Что мне написать в баг-репорте?
Claude объяснит: 502 — сервер-посредник (nginx) не смог получить ответ от backend. Проблема не на стороне клиента, а на сервере. В баг-репорт: "Backend не отвечает, nginx возвращает 502".
Стектрейс
Объясни эту ошибку простым языком, как для тестировщика:
System.NullReferenceException: Object reference not set to an instance of an object.
at OrderService.CalculateTotal(Order order) in OrderService.cs:line 47
at OrderController.Checkout(CheckoutRequest request) in OrderController.cs:line 123
at Microsoft.AspNetCore.Mvc.Infrastructure.ActionMethodExecutor.Execute()
Claude скажет: "При оформлении заказа (Checkout) система пытается посчитать итог (CalculateTotal), но объект заказа пустой (null). Строка 47 в файле OrderService.cs. Скорее всего, заказ не был создан перед попыткой оплаты."
Теперь ты можешь написать баг-репорт с точным указанием: "NullReferenceException в OrderService.cs:47 при пустом заказе".
Плавающий баг
У меня баг, который воспроизводится примерно в 1 из 5 попыток:
- Добавляю товар в корзину
- Перехожу к оплате
- Иногда сумма показывается 0 руб
Какие могут быть причины? Как его стабильно воспроизвести?
Какую информацию собрать для разработчика?
Claude предложит: гонка условий (race condition), кеширование, асинхронный запрос не успевает, проблемы с сессией. Подскажет: попробовать быстрые переходы, открыть две вкладки, проверить Network-вкладку в DevTools.
В следующей части — готовые шаблоны промптов, подготовка к релизу и отчётность для менеджера.
Обсуждение
Пока нет комментариев. Будьте первым.