Тестирование - 52AnTIMateria812/YouBook812Bot GitHub Wiki

Обзор тестирования

Данный раздел описывает методы и процедуры тестирования Telegram-бота YouBook812Bot для обеспечения его надежности и корректной работы.

Типы тестирования

1. Функциональное тестирование

1.1 Тестирование команд бота

Команда /start

  • ✅ Проверка приветственного сообщения
  • ✅ Создание записи пользователя в базе данных
  • ✅ Отображение списка доступных команд

Команда /recommend

  • ✅ Получение персонализированных рекомендаций
  • ✅ Обработка случая отсутствия предпочтений
  • ✅ Форматирование ответа с информацией о книгах

Команда /genre

  • ✅ Отображение списка доступных жанров
  • ✅ Обработка выбора жанра через inline-кнопки
  • ✅ Получение рекомендаций по выбранному жанру

Команда /author

  • ✅ Отображение списка авторов
  • ✅ Обработка выбора автора
  • ✅ Получение книг выбранного автора

Команда /info <название>

  • ✅ Поиск книги по названию
  • ✅ Отображение подробной информации
  • ✅ Обработка случая, когда книга не найдена

Команда /rate <название> <оценка>

  • ✅ Валидация оценки (1-5)
  • ✅ Сохранение оценки в базе данных
  • ✅ Обновление пользовательских предпочтений

1.2 Тестирование обработки ошибок

  • ✅ Ввод некорректных команд
  • ✅ Поиск несуществующих книг
  • ✅ Ввод некорректных оценок
  • ✅ Обработка пустых запросов

2. Тестирование модели рекомендаций

2.1 Тестирование класса BookRecommender

Метод get_recommendations()

# Тестовые случаи
- Поиск существующей книги
- Поиск несуществующей книги
- Проверка количества рекомендаций
- Проверка релевантности рекомендаций

Метод get_recommendations_by_genre()

# Тестовые случаи
- Поиск по существующему жанру
- Поиск по несуществующему жанру
- Проверка сортировки по рейтингу
- Проверка лимита рекомендаций

Метод get_book_info()

# Тестовые случаи
- Поиск по точному названию
- Поиск по частичному названию
- Обработка регистра букв
- Обработка лишних пробелов

2.2 Тестирование TF-IDF модели

  • ✅ Корректность создания векторизатора
  • ✅ Правильность вычисления косинусного сходства
  • ✅ Сохранение и загрузка модели
  • ✅ Обработка пустых данных

3. Тестирование базы данных

3.1 Тестирование функций database.py

Функция init_db()

# Тестовые случаи
- Создание новой базы данных
- Инициализация существующей базы
- Создание таблицы users

Функция get_or_create_user()

# Тестовые случаи
- Получение существующего пользователя
- Создание нового пользователя
- Инициализация предпочтений
- Обработка некорректного user_id

Функция update_user_preferences()

# Тестовые случаи
- Обновление существующих предпочтений
- Добавление новых предпочтений
- Сохранение оценок книг
- Обработка некорректных данных

4. Интеграционное тестирование

4.1 Тестирование взаимодействия компонентов

Сценарий: Получение рекомендаций

  1. Пользователь отправляет /recommend
  2. Бот запрашивает данные пользователя из БД
  3. Модель анализирует предпочтения
  4. Формируется ответ с рекомендациями
  5. Проверка корректности всего процесса

Сценарий: Оценка книги

  1. Пользователь отправляет /rate "Название" 5
  2. Бот ищет книгу в базе данных
  3. Сохраняет оценку в БД
  4. Обновляет предпочтения пользователя
  5. Отправляет подтверждение

5. Тестирование производительности

5.1 Нагрузочное тестирование

  • ✅ Обработка множественных запросов
  • ✅ Время ответа на команды
  • ✅ Использование памяти
  • ✅ Производительность поиска в базе данных

5.2 Тестирование масштабируемости

  • ✅ Работа с большим количеством пользователей
  • ✅ Обработка большого объема данных о книгах
  • ✅ Производительность модели рекомендаций

6. Тестирование безопасности

6.1 Проверка безопасности данных

  • ✅ Валидация входных данных
  • ✅ Защита от SQL-инъекций
  • ✅ Безопасное хранение токена бота
  • ✅ Обработка некорректных запросов

7. Автоматизированное тестирование

7.1 Unit-тесты

# Пример структуры тестов
test_bot_commands.py
test_model_recommendations.py
test_database_operations.py
test_data_loading.py

7.2 Тестовые данные

# Тестовые книги
test_books = [
    {
        'title': 'Тестовая книга 1',
        'author': 'Тестовый автор',
        'genre': 'Тестовый жанр',
        'rating': 4.5,
        'description': 'Тестовое описание'
    }
]

# Тестовые пользователи
test_users = [
    {
        'user_id': 123456789,
        'preferences': {
            'rated_books': {},
            'genres': [],
            'liked_books': {}
        }
    }
]

8. Процедуры тестирования

8.1 Предварительное тестирование

  1. Проверка установки

    pip install -r requirements.txt
    python -c "import telegram; import pandas; import sklearn"
  2. Проверка конфигурации

    # Проверка наличия .env файла
    ls -la .env
    
    # Проверка токена бота
    python -c "from dotenv import load_dotenv; import os; load_dotenv(); print('Token:', bool(os.getenv('BOT_TOKEN')))"
  3. Проверка данных

    # Проверка наличия файлов данных
    ls -la data/
    
    # Загрузка данных
    python data/load_books.py

8.2 Тестирование в Telegram

  1. Базовое тестирование команд

    • Отправка /start
    • Проверка приветственного сообщения
    • Тестирование всех доступных команд
  2. Тестирование рекомендаций

    • Оценка нескольких книг
    • Запрос персонализированных рекомендаций
    • Проверка релевантности результатов
  3. Тестирование обработки ошибок

    • Ввод некорректных команд
    • Поиск несуществующих книг
    • Тестирование граничных случаев

9. Отчеты о тестировании

9.1 Шаблон отчета

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

**Дата тестирования:** [Дата]
**Версия:** [Версия]
**Тестировщик:** [Имя]

## Результаты тестирования

### Функциональное тестирование
- [ ] Команда /start
- [ ] Команда /recommend
- [ ] Команда /genre
- [ ] Команда /author
- [ ] Команда /info
- [ ] Команда /rate

### Тестирование модели
- [ ] Загрузка модели
- [ ] Получение рекомендаций
- [ ] Поиск по жанрам
- [ ] Поиск по авторам

### Тестирование базы данных
- [ ] Создание пользователей
- [ ] Обновление предпочтений
- [ ] Сохранение оценок

## Найденные ошибки
[Список ошибок с описанием]

## Рекомендации
[Рекомендации по улучшению]

10. Непрерывное тестирование

10.1 Мониторинг

  • ✅ Логирование ошибок
  • ✅ Мониторинг производительности
  • ✅ Отслеживание использования команд
  • ✅ Анализ пользовательской активности

10.2 Обновления

  • ✅ Тестирование новых функций
  • ✅ Проверка совместимости
  • ✅ Валидация изменений в модели
  • ✅ Тестирование миграций базы данных
⚠️ **GitHub.com Fallback** ⚠️