domovoy_bot/tests/run_tests.sh
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

170 lines
8.9 KiB
Bash
Executable file
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/bin/bash
# План тестирования Домовой Бот
# Запуск: bash tests/run_tests.sh
set -e
echo "============================================================"
echo "🧪 ПЛАН ТЕСТИРОВАНИЯ ДОМОВОЙ БОТ"
echo "============================================================"
echo ""
cd /home/matrixhasyou/domovoy_bot
# =============================================================================
# ЭТАП 1: АВТОМАТИЧЕСКИЕ ПРОВЕРКИ (15 мин)
# =============================================================================
echo "============================================================"
echo "📋 ЭТАП 1: АВТОМАТИЧЕСКИЕ ПРОВЕРКИ"
echo "============================================================"
echo ""
# 1.1 Синтаксис Python
echo "1.1 Проверка синтаксиса Python..."
python3 -m py_compile main.py && echo "✅ main.py"
python3 -m py_compile config.py && echo "✅ config.py"
python3 -m py_compile handlers/admin.py && echo "✅ handlers/admin.py"
python3 -m py_compile handlers/users.py && echo "✅ handlers/users.py"
python3 -m py_compile keyboards/admin_menu.py && echo "✅ keyboards/admin_menu.py"
python3 -m py_compile keyboards/inline.py && echo "✅ keyboards/inline.py"
echo ""
# 1.2 Импорты (через venv)
echo "1.2 Проверка импортов..."
venv/bin/python3 -c "from handlers.admin import router; print('✅ handlers.admin')"
venv/bin/python3 -c "from handlers.users import router; print('✅ handlers.users')"
venv/bin/python3 -c "from keyboards.admin_menu import get_admin_main_menu; print('✅ keyboards.admin_menu')"
venv/bin/python3 -c "from keyboards.inline import get_main_menu; print('✅ keyboards.inline')"
venv/bin/python3 -c "import config; print('✅ config')"
echo ""
# 1.3 Проверка callback_data на критичные дубликаты
echo "1.3 Проверка уникальности callback_data..."
echo "Ищем дубликаты (кроме шаблонных с ID)..."
grep -r "callback_data=" handlers/ keyboards/ | cut -d'"' -f2 | grep -v "_[0-9]*$" | sort | uniq -d || echo "✅ Критичных дубликатов нет"
echo ""
# 1.4 Проверка БД
echo "1.4 Проверка базы данных..."
if [ -f "database/domovoy.db" ]; then
echo "✅ Файл БД существует"
sqlite3 database/domovoy.db "SELECT COUNT(*) FROM user;" 2>/dev/null && echo "✅ Таблица user существует" || echo "⚠️ Таблица user не найдена"
else
echo "⚠️ Файл БД не найден (это нормально для тестов)"
fi
echo ""
# =============================================================================
# ЭТАП 2: РУЧНОЕ ТЕСТИРОВАНИЕ В TELEGRAM (60 мин)
# =============================================================================
echo "============================================================"
echo "📋 ЭТАП 2: РУЧНОЕ ТЕСТИРОВАНИЕ В TELEGRAM"
echo "============================================================"
echo ""
echo "Запустите бота: ./start.sh"
echo ""
echo "Тесты для админа:"
echo " 1. /admin - показать меню"
echo " 2. Нажать '📊 Статистика' - должен показать статистику"
echo " 3. Нажать '🕵️ Шпионы' - должен показать список"
echo " 4. Нажать '👥 Пользователи' - должен показать список"
echo " 5. Нажать '🏆 Рейтинг' - должен показать топ-10"
echo " 6. Нажать '☠️ Токсичность' - должно показать подменю"
echo " 7. Нажать '🔇 Муты' - должен показать список"
echo " 8. Нажать '🚫 Баны' - должен показать список"
echo " 9. Нажать '🔍 Поиск' - должно показать подменю"
echo " 10. Нажать '👤 Действия' - должен показать список с пагинацией"
echo " 11. Выбрать пользователя - должно показать меню действий"
echo " 12. Нажать '🚫 Забанить' → '✅ Да' - должен забанить"
echo " 13. Нажать '⚠️ Предупреждения' - должно показать подменю"
echo " 14. Нажать '📋 Стоп-слова' - должен показать список"
echo " 15. Нажать на слово - должно удалить"
echo " 16. Нажать ' Добавить слово' → ввести слово - должно добавить"
echo ""
echo "Тесты для пользователя:"
echo " 1. /start - показать главное меню"
echo " 2. Нажать '🏆 Достижения' - должен показать достижения"
echo " 3. Нажать '📅 События' - должен показать события"
echo " 4. Нажать '💰 Платежи' - должен показать платежи"
echo " 5. Нажать '📋 Опросы' - должен показать опросы"
echo " 6. Нажать '📊 Токсичность' - должен показать топ"
echo " 7. Нажать '🏠 Темы чата' - должен показать темы"
echo " 8. Нажать '🙏 Поблагодарить' - должен показать список"
echo " 9. Выбрать пользователя → подтвердить - должно начислить +10"
echo " 10. Нажать '🔍 Моя квартира' - должно показать инфо"
echo ""
# =============================================================================
# ЭТАП 3: ПРОВЕРКА ЛОГОВ (5 мин)
# =============================================================================
echo "============================================================"
echo "📋 ЭТАП 3: ПРОВЕРКА ЛОГОВ"
echo "============================================================"
echo ""
echo "Проверьте файл логов:"
echo " tail -f logs/bot.log"
echo ""
echo "Ищите:"
echo " - Ошибки (ERROR)"
echo " - Предупреждения (WARNING)"
echo " - Критичные исключения"
echo ""
# =============================================================================
# ЭТАП 4: НАГРУЗОЧНОЕ ТЕСТИРОВАНИЕ (15 мин)
# =============================================================================
echo "============================================================"
echo "📋 ЭТАП 4: НАГРУЗОЧНОЕ ТЕСТИРОВАНИЕ"
echo "============================================================"
echo ""
echo "1. Проверка пагинации при 200+ пользователях:"
echo " /admin → 👤 Действия → листать страницы"
echo ""
echo "2. Проверка пагинации при 500+ стоп-словах:"
echo " /admin → ⚠️ Предупреждения → 📋 Стоп-слова → листать"
echo ""
echo "3. Проверка одновременных действий:"
echo " Два админа одновременно жмут кнопки"
echo ""
# =============================================================================
# ЭТАП 5: ПРОВЕРКА БЕЗОПАСНОСТИ (10 мин)
# =============================================================================
echo "============================================================"
echo "📋 ЭТАП 5: ПРОВЕРКА БЕЗОПАСНОСТИ"
echo "============================================================"
echo ""
echo "1. Обычный пользователь жмёт админ-кнопки:"
echo " Ожидается: 'Нет прав'"
echo ""
echo "2. Ввод некорректных данных в FSM:"
echo " Ожидается:Graceful error, не краш"
echo ""
echo "3. Пустые списки:"
echo " Ожидается: 'Нет данных', не ошибка"
echo ""
# =============================================================================
# ИТОГ
# =============================================================================
echo ""
echo "============================================================"
echo "✅ ПЛАН ТЕСТИРОВАНИЯ ЗАВЕРШЁН"
echo "============================================================"
echo ""
echo "Время выполнения:"
echo " - Этап 1 (авто): 15 мин"
echo " - Этап 2 (ручное): 60 мин"
echo " - Этап 3 (логи): 5 мин"
echo " - Этап 4 (нагрузка): 15 мин"
echo " - Этап 5 (безопасность): 10 мин"
echo " - Итого: ~105 мин"
echo ""
echo "Результаты записывайте в файл tests/test_results.md"
echo ""