Тестирование - 52AnTIMateria812/YouBook812Bot GitHub Wiki
Данный раздел описывает методы и процедуры тестирования Telegram-бота YouBook812Bot для обеспечения его надежности и корректной работы.
Команда /start
- ✅ Проверка приветственного сообщения
- ✅ Создание записи пользователя в базе данных
- ✅ Отображение списка доступных команд
Команда /recommend
- ✅ Получение персонализированных рекомендаций
- ✅ Обработка случая отсутствия предпочтений
- ✅ Форматирование ответа с информацией о книгах
Команда /genre
- ✅ Отображение списка доступных жанров
- ✅ Обработка выбора жанра через inline-кнопки
- ✅ Получение рекомендаций по выбранному жанру
Команда /author
- ✅ Отображение списка авторов
- ✅ Обработка выбора автора
- ✅ Получение книг выбранного автора
Команда /info <название>
- ✅ Поиск книги по названию
- ✅ Отображение подробной информации
- ✅ Обработка случая, когда книга не найдена
Команда /rate <название> <оценка>
- ✅ Валидация оценки (1-5)
- ✅ Сохранение оценки в базе данных
- ✅ Обновление пользовательских предпочтений
- ✅ Ввод некорректных команд
- ✅ Поиск несуществующих книг
- ✅ Ввод некорректных оценок
- ✅ Обработка пустых запросов
Метод get_recommendations()
# Тестовые случаи
- Поиск существующей книги
- Поиск несуществующей книги
- Проверка количества рекомендаций
- Проверка релевантности рекомендаций
Метод get_recommendations_by_genre()
# Тестовые случаи
- Поиск по существующему жанру
- Поиск по несуществующему жанру
- Проверка сортировки по рейтингу
- Проверка лимита рекомендаций
Метод get_book_info()
# Тестовые случаи
- Поиск по точному названию
- Поиск по частичному названию
- Обработка регистра букв
- Обработка лишних пробелов
- ✅ Корректность создания векторизатора
- ✅ Правильность вычисления косинусного сходства
- ✅ Сохранение и загрузка модели
- ✅ Обработка пустых данных
Функция init_db()
# Тестовые случаи
- Создание новой базы данных
- Инициализация существующей базы
- Создание таблицы users
Функция get_or_create_user()
# Тестовые случаи
- Получение существующего пользователя
- Создание нового пользователя
- Инициализация предпочтений
- Обработка некорректного user_id
Функция update_user_preferences()
# Тестовые случаи
- Обновление существующих предпочтений
- Добавление новых предпочтений
- Сохранение оценок книг
- Обработка некорректных данных
Сценарий: Получение рекомендаций
- Пользователь отправляет
/recommend
- Бот запрашивает данные пользователя из БД
- Модель анализирует предпочтения
- Формируется ответ с рекомендациями
- Проверка корректности всего процесса
Сценарий: Оценка книги
- Пользователь отправляет
/rate "Название" 5
- Бот ищет книгу в базе данных
- Сохраняет оценку в БД
- Обновляет предпочтения пользователя
- Отправляет подтверждение
- ✅ Обработка множественных запросов
- ✅ Время ответа на команды
- ✅ Использование памяти
- ✅ Производительность поиска в базе данных
- ✅ Работа с большим количеством пользователей
- ✅ Обработка большого объема данных о книгах
- ✅ Производительность модели рекомендаций
- ✅ Валидация входных данных
- ✅ Защита от SQL-инъекций
- ✅ Безопасное хранение токена бота
- ✅ Обработка некорректных запросов
# Пример структуры тестов
test_bot_commands.py
test_model_recommendations.py
test_database_operations.py
test_data_loading.py
# Тестовые книги
test_books = [
{
'title': 'Тестовая книга 1',
'author': 'Тестовый автор',
'genre': 'Тестовый жанр',
'rating': 4.5,
'description': 'Тестовое описание'
}
]
# Тестовые пользователи
test_users = [
{
'user_id': 123456789,
'preferences': {
'rated_books': {},
'genres': [],
'liked_books': {}
}
}
]
-
Проверка установки
pip install -r requirements.txt python -c "import telegram; import pandas; import sklearn"
-
Проверка конфигурации
# Проверка наличия .env файла ls -la .env # Проверка токена бота python -c "from dotenv import load_dotenv; import os; load_dotenv(); print('Token:', bool(os.getenv('BOT_TOKEN')))"
-
Проверка данных
# Проверка наличия файлов данных ls -la data/ # Загрузка данных python data/load_books.py
-
Базовое тестирование команд
- Отправка
/start
- Проверка приветственного сообщения
- Тестирование всех доступных команд
- Отправка
-
Тестирование рекомендаций
- Оценка нескольких книг
- Запрос персонализированных рекомендаций
- Проверка релевантности результатов
-
Тестирование обработки ошибок
- Ввод некорректных команд
- Поиск несуществующих книг
- Тестирование граничных случаев
# Отчет о тестировании YouBook812Bot
**Дата тестирования:** [Дата]
**Версия:** [Версия]
**Тестировщик:** [Имя]
## Результаты тестирования
### Функциональное тестирование
- [ ] Команда /start
- [ ] Команда /recommend
- [ ] Команда /genre
- [ ] Команда /author
- [ ] Команда /info
- [ ] Команда /rate
### Тестирование модели
- [ ] Загрузка модели
- [ ] Получение рекомендаций
- [ ] Поиск по жанрам
- [ ] Поиск по авторам
### Тестирование базы данных
- [ ] Создание пользователей
- [ ] Обновление предпочтений
- [ ] Сохранение оценок
## Найденные ошибки
[Список ошибок с описанием]
## Рекомендации
[Рекомендации по улучшению]
- ✅ Логирование ошибок
- ✅ Мониторинг производительности
- ✅ Отслеживание использования команд
- ✅ Анализ пользовательской активности
- ✅ Тестирование новых функций
- ✅ Проверка совместимости
- ✅ Валидация изменений в модели
- ✅ Тестирование миграций базы данных