План тестирования - shoumq/bybit_scalp GitHub Wiki
План тестирования (Скальпинг-бот)
Ответственные: Эльес (тестировщик), Андрей (архитектор), Иван (тимлид)
- Цели тестирования
Цель: Убедиться в корректной работе ядра торгового бота, проверке устойчивости к ошибкам сети, обработке рыночных данных в реальном времени, безопасности API-ключей и стабильности логики торговли.
Ключевые функции MVP:
Подключение к WebSocket Bybit и получение рыночных данных. Обработка сигнала по стратегии (например, пересечение EMA). Автоматическая генерация и отправка ордеров. Управление открытой позицией (вход/выход). Конфигурация параметров торговли (через CLI/файл).
Дополнительные цели:
Проверка реакции на нестабильное соединение (автореконнект). Устойчивость к сбоям биржи (невалидные данные, отложенные ответы). Безопасность хранения и использования API-ключей.
- Этапы тестирования
Этап 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 |