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

**Версия:** 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
```

---

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