T-QA / Практика на приложении
QA-песочница
Магазин кофе и чая
Выберите навык, откройте свою версию магазина и проверьте её. Ответы и история попыток сохраняются в кабинете.
Войдите, чтобы создать личную попытку и сохранить ответ. Задания можно читать без входа.
Тест-анализ
Доставка: сначала договоримся
Найти неоднозначные требования до выполнения проверок.
Требования
- REQ-A: доставка бесплатна от 2000 ₽.
- REQ-B: клубная скидка уменьшает стоимость заказа на 6%.
- REQ-C: доставка рассчитывается по сумме заказа. Порядок расчёта не описан.
Задание
Найдите неоднозначность. Приведите пример, где два прочтения дают разный результат, и вопрос владельцу продукта. Для этого задания требования выше специально отличаются от однозначного контракта магазина.
Критерии проверки
Своя попытка
Мои попытки
Работа с попыткой
Сброс очищает корзину, заказы, оплаты и события только этой попытки. Сохранённые ответы остаются. Закрытие освобождает место для новой попытки.
Подключить локальные автотесты
Тесты запускаются на вашем компьютере. Токен даёт доступ только к этой попытке. Храните его в переменной окружения, не добавляйте в Git.
Задайте QA_RUN_TOKEN скопированным значением. API принимает Authorization: Bearer. В браузере используется ваша сессия.
Токен показывается только при выпуске. После перезагрузки его можно заменить. Новый токен сразу отзывает прежний.
Запросы API
Все пути ниже начинаются с /api/qa-sandbox/runs/{QA_RUN_ID}. Суммы указаны в копейках.
GET / данные попытки
PUT /cart {"sku":"…","quantity":1}
POST /checkout {"idempotency_key":"order-1"}
POST /payment-callback {"order_id":"…","event_id":"payment-1"}
GET /events журнал событий
POST /sql {"query":"SELECT * FROM orders"}SQL: данные своей попытки
Запрос читает текущее сохранённое состояние PostgreSQL. Доступен SELECT, JOIN, WHERE, GROUP BY и ORDER BY; максимум 100 строк. Один запрос, без точки с запятой. Изменение данных через SQL недоступно.
Таблицы и поля
Журнал событий
События записаны в БД этой попытки. Kafka здесь не используется. Request ID связывает событие с HTTP-запросом.
Повтор уведомления об оплате
Создайте заказ в магазине. Для повторной доставки уведомления используйте те же order_id и event_id. Оплата учебная.
Версии компонентов
Ваш ответ
Создайте или откройте попытку этого задания, чтобы сохранить ответ.