Выбор ответа Senior Тест-кейсы для API обновлено

Гонка при списании

Вопрос

Как проверить, что промокод на одно использование нельзя применить дважды?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Отправить 20 одинаковых запросов параллельно и проверить в БД одно применение. Последовательный повтор ловит только отсутствие проверки.

Варианты ответа

  1. Применить промокод, затем повторить тот же запрос последовательно и ждать 409
  2. Проверить, что в интерфейсе кнопка блокируется после первого клика
  3. Отправить 20 одинаковых запросов параллельно и проверить в БД одно применениеправильный ответ
  4. Посмотреть в коде, есть ли проверка «уже использован» перед записью

Разбор

Последовательный повтор ловит только отсутствие проверки. Классический баг: проверка «уже использован?» и запись идут без блокировки или уникального ограничения, и параллельные запросы проскакивают между ними (race condition, TOCTOU). Интерфейс тут не защита, запросы можно отправить напрямую. Инструменты: параллельный запуск в скрипте, Turbo Intruder, k6 с несколькими VU.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.

Термины по теме