Skip to content

VolkovMaxim/Ogon.AI-mcp-Hackathon

Repository files navigation

🤖 QA Tester Bot

Telegram бот для автоматизированного тестирования веб-сайтов с использованием MCP (Model Context Protocol) и Playwright.

🚀 Возможности

  • 🌐 Автоматическое тестирование веб-сайтов через естественные команды на русском языке
  • 🔍 Интеллектуальное выполнение сценариев тестирования с помощью LLM
  • 👤 Система персон - тестирование от лица разных типов пользователей (новички, эксперты, разный возраст и пол)
  • 🧪 A/B тестирование - запуск множественных тестов с 5-50 пользователями одновременно
  • 🎬 Запись тест-кейсов - выполнение тестов с записью последовательности инструментов для воспроизведения
  • 📊 Расширенная аналитика - детальная статистика с коэффициентами вариации, персентилями и инсайтами
  • 📱 Telegram интерфейс для удобного взаимодействия
  • 📈 Сравнительный анализ поведения разных групп пользователей
  • 🎯 Множественные сессии для разных пользователей

🏗️ Архитектура

┌─────────────────┐    ┌──────────────────┐    ┌─────────────────┐
│   Telegram Bot  │◄──►│   MCP Client     │◄──►│ Playwright MCP  │
│                 │    │                  │    │    Server       │
└─────────────────┘    └──────────────────┘    └─────────────────┘
         ▲                        ▲                       ▲
         │                        │                       │
         ▼                        ▼                       ▼
┌─────────────────┐    ┌──────────────────┐    ┌─────────────────┐
│ Telegram Users  │    │   OpenAI API     │    │    Browser      │
│   + Personas    │    │   (GPT-4/qwen)   │    │   Automation    │
└─────────────────┘    └──────────────────┘    └─────────────────┘

📋 Требования

  • Docker и Docker Compose
  • Telegram Bot Token (получить у @BotFather)
  • OpenAI API Key или доступ к локальной LLM (qwen3)

⚙️ Настройка

1. Создание Telegram бота

  1. Напишите @BotFather в Telegram
  2. Отправьте команду /newbot
  3. Следуйте инструкциям для создания бота
  4. Сохраните полученный токен

2. Настройка переменных окружения

Создайте файл .env в корне проекта:

# OpenAI/OpenRouter API настройки
OPENAI_API_KEY=your-api-key-here
BASE_URL=https://openrouter.ai/api/v1
MODEL=openai/gpt-4.1

# Telegram Bot Token
TELEGRAM_BOT_TOKEN=your-telegram-bot-token-here

# MCP Server настройки  
PLAYWRIGHT_MCP_URL=http://playwright-mcp:8931/sse

3. Запуск проекта

# Клонирование и переход в папку
git clone <your-repo>
cd <project-folder>

# Запуск всех сервисов
docker-compose up -d

# Просмотр логов бота
docker-compose logs -f telegram-bot

# Остановка сервисов
docker-compose down

📱 Использование

Команды бота

  • /start - Начать работу с ботом
  • /help - Справка по использованию
  • /status - Проверить статус соединения
  • /clear - Очистить текущую сессию

Основные функции

👤 Система персон

Бот поддерживает тестирование от лица различных типов пользователей:

  • Технический уровень: новички, средний уровень, эксперты
  • Демография: разный возраст, пол, страны
  • Поведенческие модели: осторожные, быстрые, детальные пользователи

Как использовать:

  1. Нажмите "👤 Выбрать персону" в главном меню
  2. Выберите нужную персону или "🎲 Случайная персона"
  3. Отправьте тестовый сценарий

🧪 A/B тестирование

Запуск множественных тестов для получения статистических данных:

  • Количество пользователей: от 5 до 50
  • Фильтрация: по полу, возрасту, техническому уровню
  • Статистика: средние значения, медианы, стандартные отклонения
  • Инсайты: автоматические рекомендации на основе результатов

Как использовать:

  1. Нажмите "🧪 A/B тестирование" в главном меню
  2. Настройте количество пользователей (рекомендуется 10-20)
  3. Установите фильтры (опционально)
  4. Отправьте тестовый сценарий

🎬 Запись тест-кейсов

Выполнение реальных тестов с записью последовательности действий:

  • Принцип: LLM выполняет тест как обычно, но все tool calls записываются
  • Форматы: JSON последовательность, Python код для MCP, текстовые шаги
  • Применение: автоматизация, повторное воспроизведение, CI/CD интеграция
  • Воспроизведение: можно выполнить записанную последовательность без LLM

Как использовать:

  1. Нажмите "🎬 Записать тест-кейс" в главном меню
  2. Выберите формат сохранения (JSON/Python/Текст)
  3. Опишите тестовый сценарий как обычно
  4. Получите записанную последовательность инструментов

Примеры тестовых сценариев

🔍 Поиск и навигация:

Перейди на yandex.ru и найди "рецепт борща"
Открой wikipedia.org и найди статью о Python

🛒 E-commerce тестирование:

Зайди на ozon.ru и найди смартфоны до 30000 рублей
Открой wildberries.ru и добавь в корзину первую футболку

📝 Тестирование форм:

Перейди на translate.google.com и переведи "Hello" на русский
Открой calculator.net и посчитай 15 * 24

🎯 Комплексные сценарии:

Протестируй поиск на habr.com: найди статьи про AI и открой первую
Проверь работу фильтров на avito.ru в категории автомобили

🎬 Запись тест-кейсов:

Зайди на yandex.ru и найди "рецепт борща" (будет записана последовательность)
Открой github.com, найди репозиторий "python" и зайди в него
Протестируй добавление товара в корзину на ozon.ru с записью шагов

📊 Аналитика и отчеты

Единичные тесты

  • Процент успешности выполнения
  • Время выполнения и количество действий
  • Детализация каждого шага
  • Информация о выбранной персоне

A/B тестирование

  • Агрегированная статистика: средние значения, медианы, стандартные отклонения
  • Временная аналитика: общее время, действий в минуту, самые медленные операции
  • Разбивка по персонам: сравнение эффективности разных групп пользователей
  • Статистические инсайты: автоматические выводы и рекомендации
  • Коэффициенты вариации: оценка консистентности результатов

Запись тест-кейсов

  • JSON последовательность: точная запись всех вызовов MCP инструментов
  • Python код: готовый скрипт для воспроизведения через MCP клиент
  • Текстовые шаги: описание каждого шага с параметрами и временем выполнения
  • Полная воспроизводимость: можно повторить тест без участия LLM

Примеры инсайтов

  • "✅ Высокая общая успешность - сайт хорошо подходит для всех пользователей"
  • "📊 Высокая вариативность результатов - пользователи сильно отличаются по успешности"
  • "⏱️ Долгое выполнение задач - возможно стоит упростить интерфейс"
  • "📏 Широкий интерквартильный размах - время выполнения сильно зависит от пользователя"

🔧 Разработка

Структура проекта

├── src/
│   ├── bot/
│   │   └── telegram_bot.py      # Основной файл Telegram бота
│   └── client/
│       ├── mcp_client.py        # MCP клиент
│       └── prompts.py           # Системные промпты и персоны
├── docker-compose.yml           # Docker конфигурация
├── Dockerfile                   # Образ для сборки
├── requirements.txt             # Python зависимости
└── README.md                    # Этот файл

Локальная разработка

# Установка зависимостей
pip install -r requirements.txt

# Запуск только MCP сервера
docker-compose up -d playwright-mcp

# Запуск бота локально  
export PLAYWRIGHT_MCP_URL="http://localhost:8931/sse"
python src/bot/telegram_bot.py

Конфигурация моделей

Поддерживаются различные LLM:

OpenRouter (рекомендуется):

BASE_URL=https://openrouter.ai/api/v1
MODEL=openai/gpt-4.1

Локальная qwen3 через vLLM:

BASE_URL=http://localhost:8000/v1
MODEL=qwen3-32b-int4

OpenAI напрямую:

BASE_URL=https://api.openai.com/v1
MODEL=gpt-4

🐛 Отладка

Проверка логов

# Логи всех сервисов
docker-compose logs

# Логи только бота
docker-compose logs telegram-bot

# Логи в реальном времени
docker-compose logs -f

Частые проблемы

Бот не отвечает:

  • Проверьте токен бота в .env
  • Убедитесь что контейнер запущен: docker-compose ps

Ошибки MCP соединения:

  • Проверьте что playwright-mcp сервер запущен
  • Проверьте URL в переменных окружения

Ошибки LLM:

  • Проверьте API ключ OpenAI
  • Убедитесь что модель доступна

Долгое выполнение A/B тестов:

  • A/B тесты с большим количеством пользователей могут занимать 5-10 минут
  • Рекомендуется начинать с 10-20 пользователей

📊 Мониторинг

Метрики и логи

Бот логирует:

  • Подключения пользователей и выбор персон
  • Выполнение тестовых сценариев (единичных и A/B)
  • Статистику A/B тестов и агрегированные результаты
  • Ошибки и исключения
  • Временные метрики и производительность

Производительность

  • Каждый пользователь получает свою сессию MCP
  • Сессии автоматически очищаются при ошибках
  • Ограничение на 15 итераций на один тест
  • A/B тесты выполняются параллельно для оптимизации времени
  • Поддержка до 50 пользователей в одном A/B тесте

🎯 Лучшие практики

Для единичного тестирования

  • Выбирайте персону, соответствующую вашей целевой аудитории
  • Формулируйте четкие и конкретные сценарии
  • Используйте "Случайную персону" для общей оценки

Для A/B тестирования

  • Начинайте с 10-20 пользователей для быстрого тестирования
  • Используйте 30-50 пользователей для статистической значимости
  • Настраивайте фильтры для фокусировки на определенных группах
  • Обращайте внимание на коэффициент вариации (CV) в результатах

🤝 Вклад в проект

  1. Форкните репозиторий
  2. Создайте ветку для фичи: git checkout -b feature/amazing-feature
  3. Коммитьте изменения: git commit -m 'Add amazing feature'
  4. Пушьте в ветку: git push origin feature/amazing-feature
  5. Откройте Pull Request

📄 Лицензия

Этот проект распространяется под лицензией MIT. См. файл LICENSE для подробностей.

🆘 Поддержка

Если у вас возникли вопросы или проблемы:

  1. Проверьте Issues на наличие похожих проблем
  2. Создайте новый Issue с подробным описанием
  3. Приложите логи и конфигурацию (без приватных ключей!)

Сделано с ❤️ для автоматизации QA тестирования с поддержкой A/B тестирования и системы персон

About

Ogon.AI Hackathons команды Three dev in a Boat (To Say Nothing of the Cursor)

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors