План тестирования - shoumq/bybit_scalp GitHub Wiki

План тестирования (Скальпинг-бот)

Ответственные: Эльес (тестировщик), Андрей (архитектор), Иван (тимлид)

  1. Цели тестирования

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

Ключевые функции MVP:

Подключение к WebSocket Bybit и получение рыночных данных. Обработка сигнала по стратегии (например, пересечение EMA). Автоматическая генерация и отправка ордеров. Управление открытой позицией (вход/выход). Конфигурация параметров торговли (через CLI/файл).

Дополнительные цели:

Проверка реакции на нестабильное соединение (автореконнект). Устойчивость к сбоям биржи (невалидные данные, отложенные ответы). Безопасность хранения и использования API-ключей.

  1. Этапы тестирования

Этап 1. Unit-тесты (ядро бэкенда на Go)

Задачи:

Проверка бизнес-логики: торговые сигналы, генерация ордеров, логирование, конфигурация.

Тесты:

Конфигурация:

Загрузка .env или .yaml через viper. Проверка отсутствующих или некорректных параметров.

Стратегия:

Проверка функции CheckSignal() на исторических данных. Обработка edge-кейсов: резкий скачок цены, стагнация.

Ордеры:

Эмуляция генерации лимит/маркет-ордера. Обработка ошибки API (недостаточно средств, timeout).

WebSocket:

Тест подписки на тикеры и стакан. Проверка автоматического переподключения после обрыва.

Инструменты:

testing (встроенный в Go). stretchr/testify — для assert-проверок. mockery — генерация mock-объектов для стратегий и клиентов.

Этап 2. Интеграционные тесты

Задачи:

Проверка связи между модулями: WebSocket ↔ обработка сигнала ↔ логика торговли ↔ логгер.

Тесты:

Имитация потока WebSocket-данных и проверка реакции Bot.Loop(). Проверка end-to-end цепочки:

Получен тик → сигнал → ордер → лог → БД. Проверка отказоустойчивости:

Симуляция reconnect WebSocket. API отвечает 503 — бот уходит в паузу и делает повтор через X секунд.

Инструменты:

httptest и gorilla/websocket — для имитации биржи. Локальный mock-сервер на Go.

Этап 3. E2E-тесты (если добавлен CLI или Web-интерфейс)

Задачи:

Проверка взаимодействия пользователя с системой (через CLI или web dashboard).

Тесты:

Запуск бота с конфигом (команда --run). Команда --status показывает текущие параметры и активные позиции. Команда --stop завершает торговлю с закрытием позиций. Web-интерфейс (если будет):

Проверка отображения профита, ордеров, графика.

Инструменты:

os/exec — для тестов CLI. Cypress — для фронтенда (если появится веб-панель).

Этап 4. Тестирование производительности

Задачи:

Проверка реакции бота на большой объём рыночных данных и частые сигналы.

Тесты:

10 000+ тиков в минуту → не должно приводить к подвисанию. Проверка, что среднее время на 1 тик < 50 мс. Нагрузочное тестирование генерации ордеров и логирования.

Инструменты:

benchmarks в Go (go test -bench .). Locust или wrk — для имитации API-запросов (если есть REST API).

Этап 5. Тестирование безопасности

Задачи:

Проверка защиты API-ключей, безопасности соединений и чувствительных данных.

Тесты:

Отсутствие API-ключей в логах. .env не попадает в git-репозиторий (добавлен в .gitignore). Шифрование ключей (опционально — через AES). Проверка, что WebSocket использует WSS при деплое. Проверка на ввод вредоносных данных в конфиг (например, shell-инъекция в параметры стратегии).

Инструменты:

gosec — статический анализатор безопасности кода. ZAP — для тестов, если появится HTTP-интерфейс.

Этап 6. Тестирование деплоя и окружения

Задачи:

Проверка работы бота в прод-окружении.

Тесты:

Компиляция и сборка проекта на Ubuntu/Alpine. Проверка запуска с Docker (если подключён Dockerfile). Проверка работы бота на VPS (напр., Render, Railway, Hetzner). Подключение к реальному API Bybit Testnet.

Инструменты:

GitHub Actions (или Makefile для ручной сборки). Docker, systemd или PM2 — для автозапуска.

Основные выводы:

Вид тестирования Цель
Unit-тесты Проверка бизнес-логики и обработки данных
Интеграционные Проверка взаимодействия модулей
E2E (CLI/Web) Проверка конечных сценариев использования
Производительность Оптимизация обработки тиков и логики торговли
Безопасность Проверка на утечки и неправильную работу с API
Деплой и сборка Проверка на различных платформах, компиляция, CI/CD