Сценарии использования

Тестирование CAPTCHA для очередей и checkout ticketing-платформ в staging

Безопасный scope: Это руководство применимо только к собственным или явно авторизованным QA-, staging- и production-средам. Описаны сценарии диагностики, тестирования и наблюдаемости вашей собственной CAPTCHA-интеграции — не для сторонних сайтов и не для несанкционированных workflow.

Ticketing-платформы используют CAPTCHA на двух участках: при входе в очередь и на странице оплаты. QA должен подтвердить, что обе точки работают на собственной staging-копии до выкатки релиза. Это руководство описывает проверку только собственных или авторизованных ticketing-сценариев — без реальных продаж и без обращения к публичным платформам.

Модель внутренней очереди для QA

Соберите staging-окружение, в котором очередь и checkout повторяют production-логику, но работают с фиктивными данными:

  • https://staging.example.com/ticketing/queue-test — endpoint очереди с конфигурируемым размером;
  • https://staging.example.com/ticketing/checkout-test — checkout с тестовыми платёжными токенами;
  • https://staging.example.com/ticketing/fake-event — фиктивное событие с фиктивной картой мест.

Фиктивные события, места и платежи

Объект Как пометить
Событие event_id начинается с qa-
Место сектор QA, цена 0.01
Билет флаг qa_only=true в БД
Платёж sandbox-токен провайдера

Эти признаки нужны, чтобы production-фильтры заведомо отклоняли заказы из QA, если они когда-то попадут в боевую базу.

Отправка задачи CaptchaAI из staging

QA-сценарий запрашивает решение только для собственного staging-домена:

import os, requests, time

API_KEY = os.environ['CAPTCHAAI_KEY']
PAGE = 'https://staging.example.com/ticketing/queue-test'

def solve_turnstile(sitekey: str) -> str:
    r = requests.post('https://ocr.captchaai.com/in.php', data={
        'key': API_KEY, 'method': 'turnstile',
        'sitekey': sitekey, 'pageurl': PAGE, 'json': 1,
    }).json()
    task_id = r['request']
    for _ in range(40):
        time.sleep(3)
        res = requests.get('https://ocr.captchaai.com/res.php', params={
            'key': API_KEY, 'action': 'get', 'id': task_id, 'json': 1,
        }).json()
        if res['status'] == 1:
            return res['request']
    raise TimeoutError(task_id)

Проверка результата в QA backend

Полученный токен передайте во внутренний QA-endpoint, который вызывает серверную верификацию CAPTCHA-провайдера и записывает результат в таблицу qa_attempts. Тест помечает прогон pass / fail на основе ответа собственного backend, а не на основе клиентских предположений.

Сценарии очереди

  • одна QA-сессия проходит очередь и оплату — smoke-тест;
  • 50 параллельных QA-сессий — проверка таймингов очереди;
  • 200 сессий за минуту — нагрузочный сценарий;
  • провал платежа при валидном CAPTCHA — отдельный сценарий обработки ошибок.

Логи и наблюдаемость

Структурированные логи помогают сравнивать поведение CAPTCHA между релизами и быстро находить регрессии в собственных формах:

import json, time, logging

log = logging.getLogger('captcha-qa')

def record(event: str, **fields) -> None:
    payload = {'ts': time.time(), 'event': event, **fields}
    log.info(json.dumps(payload, ensure_ascii=False))

Минимальный набор полей для каждой попытки: slug, captcha_type, task_id, wait_seconds, verify_status, env. Этого достаточно, чтобы построить дашборд медианы / P90 / P99 по типу CAPTCHA и по среде.

Troubleshooting

Симптом Что сделать
Очередь не пускает QA-сессию Проверьте флаг qa_only и токен очереди
CAPTCHA не появляется Включите принудительный вызов CAPTCHA в staging
Токен принят, но место не зарезервировано Проверьте таймауты резерва
5xx от ticketing API Проверьте лимиты staging-инфраструктуры

QA-чек-лист

  • Запрос отправляется только на собственные или авторизованные endpoints.
  • Тестовые учётные записи, события и платежи помечены как фиктивные.
  • CAPTCHA-токен проверяется на собственном backend, а не доверяется клиенту.
  • Логи содержат task_id, тип CAPTCHA, время ожидания и pass/fail.
  • Скрипт возвращает корректный exit code, чтобы CI мог принять решение.

FAQ

Можно ли использовать этот подход на сторонних сайтах?

Нет. Описанные сценарии применимы только к собственным или явно авторизованным средам. Для чужих ресурсов запрашивайте письменное разрешение владельца.

Что делать, если CaptchaAI вернул ошибку?

Логируйте task_id, тип CAPTCHA и текст ошибки, повторите запрос с экспоненциальной задержкой и фиксируйте долю ошибок в дашборде. Постоянный рост ошибок — повод проверить sitekey и страницу.

Как сравнивать результаты между релизами?

Сохраняйте логи в одном формате и стройте отчёт по медиане, P90 и P99 на одинаковом наборе сценариев. Сравнивайте только сопоставимые выборки в собственной среде.

Безопасные связанные руководства

  • Быстрый старт CaptchaAI
  • QA-тестирование CAPTCHA в авторизованных средах
  • Тестирование CAPTCHA API на собственных формах
  • Отладка: браузерный тест падает, API проходит
  • reCAPTCHA v2 через API
  • Cloudflare Turnstile через API
  • GeeTest v3 через API

Готовы проверить ticketing-CAPTCHA в собственной staging-среде? Получите ключ CaptchaAI.

Комментарии для этой статьи отключены.