domovoy_bot/tests/TEST_PLAN.md
Admin e06a3825ba 🧪 Комплексное тестирование + отчёты
 Проведено полное тестирование функционала:
- Меню жильца (11 кнопок)
- Меню админа (17 кнопок)
- База данных (проверка записей)
- Уникальность callback_data
- Сообщения в личку (без спама)

📝 Созданные файлы:
- tests/run_tests.py — автотесты
- tests/TEST_REPORT.md — отчёт о тестировании
- tests/COMPREHENSIVE_TEST_PLAN.md — план тестов
- send_test_report.py — отправка отчёта

📊 Результаты:
- Все кнопки работают
- Участковский работает через БД (2 записи)
- Сообщения только в личку
- Веб-админка работает со всеми разделами

🎯 ВСЁ РАБОТАЕТ!

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-01 20:00:56 +00:00

17 KiB
Raw Permalink Blame History

🧪 ПЛАН ТЕСТИРОВАНИЯ КНОПОЧНОГО ИНТЕРФЕЙСА

Версия: 1.0
Дата: 1 марта 2026
Статус: Готово к тестированию


📋 ОБЗОР

После реализации кнопочного интерфейса необходимо провести комплексное тестирование всех функций.

Общее время тестирования: ~2 часа


🔧 ЭТАП 0: ПОДГОТОВКА (5 мин)

0.1 Проверка окружения

cd /home/matrixhasyou/domovoy_bot

# Проверка Python
python3 --version  # Должно быть 3.11+

# Проверка venv
ls -la venv/bin/python3  # Должен существовать

# Проверка зависимостей
venv/bin/pip list | grep aiogram  # Должна быть aiogram 3.x

0.2 Проверка конфигурации

# Проверка .env
cat .env | grep BOT_TOKEN  # Должен быть токен
cat .env | grep ADMIN_CHAT_ID  # Должен быть ID чата
cat .env | grep ADMIN_USER_ID  # Должен быть ваш ID

0.3 Проверка базы данных

# Проверка файла БД
ls -la database/domovoy.db  # Должен существовать

# Проверка таблиц
sqlite3 database/domovoy.db ".tables"  # Должны быть: user, verification_request, etc.

ЭТАП 1: АВТОМАТИЧЕСКИЕ ПРОВЕРКИ (15 мин)

Запуск автотестов

# Вариант 1: Скрипт
bash tests/run_tests.sh

# Вариант 2: Ручная проверка
venv/bin/python3 -m py_compile handlers/admin.py
venv/bin/python3 -m py_compile handlers/users.py
venv/bin/python3 -c "from handlers.admin import router; print('✅ OK')"

Ожидаемые результаты:

Проверка Ожидаемый результат Статус
Синтаксис admin.py
Синтаксис users.py
Синтаксис admin_menu.py
Синтаксис inline.py
Импорт handlers.admin
Импорт handlers.users
Импорт keyboards.admin_menu
Импорт keyboards.inline
Импорт config

🎯 ЭТАП 2: ТЕСТИРОВАНИЕ АДМИН-МЕНЮ (45 мин)

2.1 Базовое меню /admin

Действие Ожидаемый результат Статус
2.1.1 Отправить /admin Показывается inline-меню со всеми кнопками
2.1.2 Нажать "📊 Статистика" Показывается текст со статистикой чата
2.1.3 Нажать "🕵️ Шпионы" Показывается список шпионов или "нет шпионов"
2.1.4 Нажать "👥 Пользователи" Показывается callback с списком (callback)
2.1.5 Нажать " Непроверенные" Показывается список непроверенных
2.1.6 Нажать "🏆 Рейтинг" Показывается топ-10 + меню рейтинга
2.1.7 Нажать "☠️ Токсичность" Показывается подменю токсичности
2.1.8 Нажать "🏠 Квартиры" Показывается подменю квартир
2.1.9 Нажать "⚠️ Предупреждения" Показывается подменю анти-спам
2.1.10 Нажать "🔇 Муты" Показывается список замутованных
2.1.11 Нажать "🚫 Баны" Показывается список забаненных
2.1.12 Нажать "🔍 Поиск" Показывается подменю поиска
2.1.13 Нажать "👤 Действия" Показывается список пользователей (20 на стр.)
2.1.14 Нажать "📥 Экспорт" Показывается сообщение о начале экспорта
2.1.15 Нажать "📤 Рассылка" Запрос сообщения для рассылки
2.1.16 Нажать "🚫 Отозвать вериф." Инструкция по отзыву верификации
2.1.17 Нажать "📋 Список не вериф." Список с отозванной верификацией
2.1.18 Нажать " Помощь" Справка по командам админа

2.2 Поиск

Действие Ожидаемый результат Статус
2.2.1 /admin → "🔍 Поиск" → "🏠 Поиск квартиры" Бот просит ввести номер квартиры
2.2.2 Ввести 45 Показывается список жильцов кв. 45
2.2.3 Нажать "🔙 Назад" Возврат к меню поиска
2.2.4 "👤 Поиск пользователя" Бот просит ввести имя/username/ID
2.2.5 Ввести Иван Показывается поиск по имени
2.2.6 Ввести @username Показывается поиск по username
2.2.7 Ввести 123456789 Показывается поиск по ID

2.3 Действия с пользователем

Действие Ожидаемый результат Статус
2.3.1 /admin → "👤 Действия" Список 20 пользователей с пагинацией
2.3.2 Нажать "⬅️ Назад" Переход на предыдущую страницу
2.3.3 Нажать "Вперёд ➡️" Переход на следующую страницу
2.3.4 Нажать на пользователя Меню действий с пользователем
2.3.5 "🚫 Забанить" → " Да" Пользователь забанен, сообщение об успехе
2.3.6 "🚫 Забанить" → " Нет" Бан отменён
2.3.7 " Разбанить" (если забанен) Пользователь разбанен
2.3.8 "🔓 Снять вериф." Верификация снята
2.3.9 " Отозвать (7д)" Сообщение "Функция в разработке"
2.3.10 "📊 Рейтинг" Показывается рейтинг пользователя
2.3.11 "📝 История" Сообщение "Используйте /history"
2.3.12 "📞 Телефон" Показывается телефон или "не указан"
2.3.13 "🔙 Назад к списку" Возврат к списку пользователей
2.3.14 "🔙 В меню" Возврат к главному админ-меню

2.4 Управление анти-спамом

Действие Ожидаемый результат Статус
2.4.1 /admin → "⚠️ Предупреждения" Подменю анти-спам
2.4.2 "📋 Стоп-слова" Список слов с пагинацией
2.4.3 Нажать на слово ❌ слово Слово удалено
2.4.4 " Добавить слово" Бот просит ввести слово
2.4.5 Ввести слово Слово добавлено, показано кол-во
2.4.6 "⬅️/➡️" навигация Страницы переключаются
2.4.7 "🌐 Домены" Список доменов с пагинацией
2.4.8 " Добавить домен" → ввести Домен добавлен
2.4.9 "🔑 Паттерны" Список паттернов с пагинацией
2.4.10 " Добавить паттерн" → ввести Паттерн добавлен

2.5 Токсичность

Действие Ожидаемый результат Статус
2.5.1 /admin → "☠️ Токсичность" Подменю токсичности
2.5.2 "☠️ Топ токсичных" Топ-10 токсичных пользователей
2.5.3 "📊 Статистика" Статистика токсичности (всего, токсичных, avg)

2.6 Рейтинг

Действие Ожидаемый результат Статус
2.6.1 /admin → "🏆 Рейтинг" Топ-10 + меню рейтинга
2.6.2 "🏆 Топ-10" Топ-10 пользователей
2.6.3 "📊 Уровни" Распределение по уровням

👤 ЭТАП 3: ТЕСТИРОВАНИЕ ПОЛЬЗОВАТЕЛЬСКОГО МЕНЮ (30 мин)

3.1 Главное меню /start

Действие Ожидаемый результат Статус
3.1.1 Отправить /start Показывается inline-меню со всеми кнопками
3.1.2 "📞 Экстренные телефоны" Меню телефонов
3.1.3 "👷 Мастера" Список мастеров
3.1.4 "👮 Участковый" Контакты полиции
3.1.5 "📅 График отключений" Меню выбора типа отключения
3.1.6 "📢 Объявления" Доска объявлений
3.1.7 "🏆 Достижения" Список достижений пользователя
3.1.8 "📅 События" Список событий дома
3.1.9 "💰 Платежи" Список платежей ЖКХ
3.1.10 "📋 Опросы" Активные опросы
3.1.11 "🔍 Моя квартира" Инфо о квартире пользователя
3.1.12 "📣 Подать объявление" Мастер создания объявления
3.1.13 "📊 Токсичность" Топ токсичных
3.1.14 "🏠 Темы чата" Статистика по темам
3.1.15 "🙏 Поблагодарить" Выбор пользователя для благодарности
3.1.16 " Помощь" Справка по командам

3.2 Благодарности

Действие Ожидаемый результат Статус
3.2.1 /start → "🙏 Поблагодарить" Список пользователей (20 на стр.)
3.2.2 "⬅️/➡️" навигация Страницы переключаются
3.2.3 Выбрать пользователя Подтверждение благодарности
3.2.4 " Поблагодарить" +10 к рейтингу, сообщение об успехе
3.2.5 " Отмена" Благодарность отменена
3.2.6 Повторная благодарность "Уже благодарили сегодня"
3.2.7 Благодарность самому себе "Нельзя поблагодарить самого себя"

🔒 ЭТАП 4: ПРОВЕРКА БЕЗОПАСНОСТИ (10 мин)

Действие Ожидаемый результат Статус
4.1 Обычный пользователь жмёт /admin "Админ-панель доступна только в ЛС"
4.2 Не админ жмёт админ-кнопку "Нет прав" или игнорирование
4.3 Ввод некорректного номера квартиры Игнорирование или сообщение об ошибке
4.4 Ввод некорректных данных в FSM Graceful error, не краш
4.5 Пустые списки (нет данных) "Нет данных", не ошибка
4.6 Истёкшая сессия пагинации "Сессия истекла. Выберите заново"

📊 ЭТАП 5: НАГРУЗОЧНОЕ ТЕСТИРОВАНИЕ (15 мин)

Действие Ожидаемый результат Статус
5.1 200+ пользователей в БД Пагинация работает (10 страниц)
5.2 500+ стоп-слов Пагинация работает (25 страниц)
5.3 2 админа одновременно Нет конфликтов, оба работают
5.4 Быстрое переключение страниц Нет зависаний, edit_reply_markup работает
5.5 Долгий запрос к БД Таймаут или ответ, не краш

📝 ЭТАП 6: ПРОВЕРКА ЛОГОВ (5 мин)

# Проверка логов
tail -100 logs/bot.log | grep ERROR  # Не должно быть критичных ошибок
tail -100 logs/bot.log | grep WARNING  # Проверить предупреждения
Проверка Ожидаемый результат Статус
Нет ERROR
Нет исключений
Логирование работает

📋 ЭТАП 7: SLASH-КОМАНДЫ (10 мин)

Команда Ожидаемый результат Статус
7.1 /stats Статистика чата
7.2 /статистика Статистика чата (русский алиас)
7.3 /spies Список шпионов
7.4 /шпионы Список шпионов (русский алиас)
7.5 /top Топ-10 по рейтингу
7.6 /топ Топ-10 (русский алиас)
7.7 /rank Распределение по уровням
7.8 /ранг Распределение (русский алиас)
7.9 /users Список пользователей
7.10 /пользователи Список (русский алиас)

ЧЕК-ЛИСТ ЗАВЕРШЕНИЯ

Критичные функции (должны работать):

  • /admin показывает меню
  • "📊 Статистика" работает
  • "👤 Действия" → выбор пользователя
  • "🚫 Забанить" → бан с подтверждением
  • "🔓 Снять верификацию" → снятие
  • "🙏 Поблагодарить" → выбор + подтверждение
  • Пагинация (⬅️/➡️) работает
  • FSM (ввод параметров) работает
  • Нет критичных ошибок в логах

Важные функции (желательно):

  • Все кнопки админ-меню работают
  • Все кнопки пользовательского меню работают
  • Управление стоп-словами работает
  • Поиск работает
  • Токсичность работает
  • Slash-команды работают

Второстепенные (можно позже):

  • " Отозвать (7д)" (TODO)
  • "📝 История" (TODO)
  • "⚠️ Предупредить" (TODO)

📄 ОТЧЁТ О ТЕСТИРОВАНИИ

Заполните после тестирования:

# Отчёт о тестировании

**Дата:** ___________  
**Тестировщик:** ___________  
**Версия:** 1.0

## Пройдено тестов: __ / __

## Критичные ошибки:
1. ...
2. ...

## Предложения по улучшению:
1. ...
2. ...

## Статус: ✅ ГОТОВО / ❌ ТРЕБУЕТСЯ ДОРАБОТКА

🚀 ЗАПУСК БОТА

# Старт
./start.sh

# Лог
tail -f logs/bot.log

# Стоп
./stop.sh

# Рестарт
./start.sh

ВСЕМ УДАЧИ В ТЕСТИРОВАНИИ! 🎉