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

344 lines
17 KiB
Markdown
Raw Permalink 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.

# 🧪 ПЛАН ТЕСТИРОВАНИЯ КНОПОЧНОГО ИНТЕРФЕЙСА
**Версия:** 1.0
**Дата:** 1 марта 2026
**Статус:** Готово к тестированию
---
## 📋 ОБЗОР
После реализации кнопочного интерфейса необходимо провести комплексное тестирование всех функций.
**Общее время тестирования:** ~2 часа
---
## 🔧 ЭТАП 0: ПОДГОТОВКА (5 мин)
### 0.1 Проверка окружения
```bash
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 Проверка конфигурации
```bash
# Проверка .env
cat .env | grep BOT_TOKEN # Должен быть токен
cat .env | grep ADMIN_CHAT_ID # Должен быть ID чата
cat .env | grep ADMIN_USER_ID # Должен быть ваш ID
```
### 0.3 Проверка базы данных
```bash
# Проверка файла БД
ls -la database/domovoy.db # Должен существовать
# Проверка таблиц
sqlite3 database/domovoy.db ".tables" # Должны быть: user, verification_request, etc.
```
---
## ✅ ЭТАП 1: АВТОМАТИЧЕСКИЕ ПРОВЕРКИ (15 мин)
### Запуск автотестов
```bash
# Вариант 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 мин)
```bash
# Проверка логов
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)
---
## 📄 ОТЧЁТ О ТЕСТИРОВАНИИ
Заполните после тестирования:
```markdown
# Отчёт о тестировании
**Дата:** ___________
**Тестировщик:** ___________
**Версия:** 1.0
## Пройдено тестов: __ / __
## Критичные ошибки:
1. ...
2. ...
## Предложения по улучшению:
1. ...
2. ...
## Статус: ✅ ГОТОВО / ❌ ТРЕБУЕТСЯ ДОРАБОТКА
```
---
## 🚀 ЗАПУСК БОТА
```bash
# Старт
./start.sh
# Лог
tail -f logs/bot.log
# Стоп
./stop.sh
# Рестарт
./start.sh
```
---
**ВСЕМ УДАЧИ В ТЕСТИРОВАНИИ! 🎉**