Ко всем статьям

Тестирование бонусов в казино: как игроки ломают промо — и как QA ловит это до прода

  • qa
  • gambling
  • bonuses
  • promotions
  • abuse

В любом обычном продукте пользователи находят баги случайно. Бонусная система казино — исключение: здесь баги ищут целенаправленно, методично и ради денег. Ошибка в промо-механике — это не тикет в саппорт, а схема, которая завтра окажется в закрытом Telegram-чате, а через неделю превратится в системный убыток. Я работаю QA Lead в гемблинг-платформе — казино, беттинг, крипто-выплаты — и бонусный модуль стабильно держит первое место по цене пропущенного бага.

Бонус-абьюз — это использование промо-механик казино способом, который даёт игроку гарантированную или почти гарантированную выгоду вопреки замыслу оператора. Основные формы: мультиаккаунтинг ради повторного получения велком-бонусов, отыгрыш вейджера ставками с минимальным риском, эксплуатация ошибок в конфигурации вклада игр и лимитов, злоупотребление отменой транзакций. От честной игры абьюз отличается одним: игрок убирает случайность из уравнения — математическое ожидание становится положительным для него и отрицательным для казино.


Как игроки ломают бонусные системы: реальные схемы

Все схемы ниже я видел вживую — либо в проде, либо пойманными на стенде за неделю до релиза.

Мультиаккаунтинг на велком-бонусы

Самая массовая схема. Велком-бонус выдаётся «один раз на игрока», но игрок для системы — это email, телефон, устройство, IP и платёжный метод. Абьюзер регистрирует десятки аккаунтов: почта с плюс-алиасами (user+1@, user+2@), виртуальные номера, антидетект-браузер, несколько карт одного кошелька.

QA здесь проверяет не «выдался ли бонус», а границы дедупликации: считает ли система user+1@gmail.com и user@gmail.com одним человеком, срабатывает ли сверка по fingerprint устройства и по платёжному инструменту. У нас однажды дедупликация по карте сравнивала токены, которые платёжный провайдер выдавал разными на каждую привязку одной и той же карты. Проверка выглядела рабочей — и не ловила никого.

Отдельный тест-кейс: повторная регистрация после самоисключения или блокировки. Если заблокированный за абьюз игрок может завести новый аккаунт с тем же платёжным методом и снова получить велком-пакет — вся антифрод-цепочка декоративная.

Low-risk отыгрыш: красное и чёрное одновременно

Классика жанра. Вейджер требует поставить x40 от суммы бонуса — но нигде не сказано, что ставки должны быть рискованными. Игрок открывает рулетку и ставит одновременно на красное и чёрное. Проигрыш почти нулевой (страдает только на зеро), а счётчик отыгрыша крутится с обеих ставок.

Зрелые платформы закрывают это через вклад игр: столы дают 5–10% в вейджер или вовсе 0%. Тогда абьюз мигрирует на слоты с минимальной дисперсией, где на дистанции теряешь только house edge. Поэтому проверять надо не факт существования таблицы вкладов, а то, что она реально применяется к каждой игре каталога, — что подводит к следующей схеме.

Игры с нулевым вкладом, которые всё равно учитываются

Самый частый производственный баг из этой серии. В админке у рулетки вклад 0%, но при подключении нового провайдера игра приехала с другим внешним ID и категорией — матчинг не сработал, система не нашла игру в конфиге и применила дефолт: 100%.

Fallback «игра не найдена в таблице — считаем полный вклад» — это подарок абьюзерам; безопасный дефолт — 0%. Ловится это только прогоном по реальному каталогу: берём игры каждого провайдера из каждой категории, делаем ставку с активным бонусом и сверяем прогресс вейджера с ожидаемым вкладом.

Отмена вывода как бесплатный переотыгрыш

Игрок отыграл бонус, создал заявку на вывод — и отменил её. У нас была версия системы, где возвращённые из отменённого вывода средства засчитывались как новый депозит. А на депозит автоматически выдавался релоад-бонус. Цикл: депозит → отыгрыш → заявка на вывод → отмена → «депозит» → новый бонус. Ни копейки своих денег после первого шага.

Отдельно проверяем сам статус денег в pending-выводе: можно ли ими играть, учитываются ли такие ставки в вейджер, что происходит с активным бонусом при создании и отмене заявки.

Конвертация валют с округлением в пользу игрока

Кросс-валютные бонусы: бонус номинирован в EUR, игрок играет в BTC или KZT. Каждая операция — конвертация, каждая конвертация — округление. Если округление стабильно смотрит в сторону игрока, на микроставках разница набегает: тысячи минимальных ставок скриптом через API, каждая приносит долю цента сверху. Руками бессмысленно — автоматизированно окупается.

Второй кейс тут же: курс на момент активации бонуса против курса на момент конверсии выигрыша. На волатильной крипте разница ощутимая, и момент конверсии выбирает игрок. QA проверяет, что курс фиксируется в одной точке жизненного цикла и все последующие расчёты — лимиты, вейджер, конверсия — используют его же, а округление всегда смотрит в сторону казино.


Чеклист тестирования бонусов: что проверяет QA

Это выжимка нашего регрессионного чеклиста бонусного модуля — по разделам.

Вейджер и вклад игр

Вейджер (wagering requirement) — множитель, определяющий, сколько нужно поставить, чтобы бонус стал выводимым: бонус 100 € с вейджером x40 — это 4 000 € ставок. Проверяем точность расчёта прогресса (включая дробные ставки), вклад каждого типа игр — слоты 100%, столы 5–10% или 0%, live-игры по конфигу, — дефолт для игры, отсутствующей в таблице, и раунды, начатые до активации бонуса.

Лимиты: макс-ставка, макс-выигрыш, макс-конверсия

Три лимита, каждый ломается по-своему. Макс-ставка с активным бонусом (типично 5 €): проверяем не кнопку в UI, а прямой API-запрос со ставкой выше лимита — система обязана отклонить его или срезать до лимита, но не молча засчитать в вейджер. Макс-выигрыш с бонусных средств: куда девается превышение. Макс-конверсия — сколько бонусных денег может стать реальными: особенно на стыке валют, где лимит в EUR должен корректно пересчитываться в валюту аккаунта.

Жизненный цикл бонуса

Активация → отыгрыш → конверсия, экспирация или отмена. Проверяем каждую дугу: экспирация ровно в срок — включая таймзону, потому что «до 23:59» в UTC и в таймзоне игрока — это разные бонусы; судьба бонусных средств в открытом игровом раунде в момент экспирации; отмена игроком на середине отыгрыша — бонусные деньги сгорают, реальные остаются, и система не путает, какие есть какие; отмена оператором; депозит и вывод при активном бонусе.

Порядок списания — отдельная строка чеклиста: что тратится первым, реальные деньги или бонусные, и совпадает ли фактическое поведение с тем, что написано в terms. Расхождение здесь — не только баг, но и повод для жалобы регулятору.

Фриспины

Фриспины — отдельный контур: выигрыш с них обычно падает бонусными деньгами со своим вейджером. Проверяем: фриспины, выданные на конкретную игру, нельзя потратить в другой — в том числе прямым API-вызовом; номинал спина соответствует конфигу; недокрученные фриспины при экспирации сгорают корректно; выигрыш попадает в бонусный кошелёк, а не в основной.

Комбинации бонусов

Стакинг — где живут самые дорогие баги. Два активных бонуса: в чей вейджер идёт ставка? Проверяем приоритет и очередность отыгрыша, запрет несовместимых комбинаций из конфига, поведение при активации второго бонуса поверх первого. Кейс из практики: ставка засчитывалась в прогресс обоих активных бонусов одновременно — эффективный вейджер уменьшался вдвое.

Параллельные запросы

Всё, что я писал про race condition при выводе средств, в бонусах верно вдвойне: два параллельных запроса на активацию одного промокода, одновременные отмена бонуса и ставка, конверсия бонуса в два потока. И главное правило раздела: абьюзер не пользуется UI — он шлёт запросы напрямую в API. Поэтому каждое бонусное ограничение проверяем на бэкенде, а не в задизейбленных кнопках.


Бонусная система — то место, где QA перестаёт быть проверкой требований и становится игрой против мотивированного противника. Требования описывают, как должно работать; абьюзер выясняет, как работает на самом деле, — и тестировать бонусы нужно из его позиции: с калькулятором матожидания и прямым доступом к API. Следующая линия обороны после промо — деньги на выходе: продолжить стоит с чеклиста платёжных систем.

Частые вопросы

Что такое бонус-абьюз в гемблинге?
Бонус-абьюз — это использование промо-механик казино способом, который даёт игроку гарантированную или почти гарантированную выгоду вопреки замыслу оператора: мультиаккаунтинг ради велком-бонусов, отыгрыш вейджера ставками с минимальным риском, эксплуатация ошибок в конфигурации игр и лимитов.
Что такое вейджер и как его тестировать?
Вейджер (wagering requirement) — множитель, определяющий, сколько нужно поставить, чтобы бонус стал выводимым. QA проверяет: точность расчёта прогресса, разный вклад типов игр (слоты 100%, столы 5–10% или 0%), поведение при ставках выше лимита, экспирацию и отмену бонуса на середине отыгрыша.
Какие баги в бонусных системах встречаются чаще всего?
Чаще всего ломаются: вклад игр в вейджер (игра учитывается, хотя не должна), лимит максимальной ставки с активным бонусом, конвертация валют при кросс-валютных бонусах, комбинация нескольких активных бонусов и гонки при параллельных запросах на активацию или отмену.
Почему бонусы нельзя тестировать только через UI?
Ключевые abuse-сценарии — параллельные запросы, обход клиентских ограничений, прямые вызовы API — в UI невоспроизводимы. Абьюзер работает с API напрямую, поэтому и QA обязан проверять бонусные ограничения на уровне бэкенда.
Что должно входить в чеклист тестирования бонусов?
Минимум: расчёт вейджера и вклад игр, лимиты (макс-ставка, макс-выигрыш, макс-конверсия), жизненный цикл бонуса от активации до экспирации и отмены, фриспины, комбинации бонусов, кросс-валютные сценарии и параллельные запросы на каждую операцию.