Skip to content

В этом репозитории проект на Python, представляющий инструмент для комплексного тестирования Telegram-ботов на соответствие со спецификацией. Спецификация - это автомат являющийся эталоном (правильной моделью), мы сравниваем с ним, чтобы найти возможные ошибки в реализации автомата.

Notifications You must be signed in to change notification settings

J3lackai/TGbot_FSM_Testing_Tool

Repository files navigation

TGbot_FSM_Testing_Tool

кавай

В этом репозитории проект на Python, представляющий инструмент для тестирования Telegram-ботов на соответствие со спецификацией. Спецификация - это автомат являющийся эталоном (правильной моделью), мы сравниваем с ним, чтобы найти возможные ошибки в реализации автомата.

Взаимодействие с ботами осуществляется напрямую через библиотеку Telethon, используя Telegram API.

Запуск программы

image

Результат работы программы

image

Необходимые условия

Перед началом убедитесь, что у вас есть:

  1. Стабильное интернет-соединение: Критически важно для надежной связи с API Telegram во время тестирования.
  2. Аккаунт Telegram: Необходим для взаимодействия с API.
  3. Учетные данные Telegram API: Вам понадобятся api_id и api_hash, связанные с вашим аккаунтом Telegram.
    • Получите их, зарегистрировав новое приложение (это может быть фиктивное приложение) под вашим аккаунтом здесь: https://my.telegram.org/apps.

Начало работы

  1. Скачайте последний релиз:

    • Перейдите на страницу релизов этого репозитория.
    • Скачайте исходный код или готовый пакет последнего релиза.
    • Распакуйте файлы в нужную директорию на вашем компьютере.
  2. Настройте Ключ Шифрования (Переменная Окружения):

    • Из соображений безопасности, ключ, используемый для шифрования вашей сессии Telegram, НЕ хранится в файле .env. Он должен быть установлен как пользовательская переменная окружения с именем ENCRYPTION_KEY.

    • Пока эта переменная не установлена: При запуске скрипт генерирует временный ключ.

    • Запустите программу key_generator.exe (из папки с релизом): Он сгенерирует вам ключ, который нужно будет добавить как переменную окружения.

    • Как установить пользовательскую переменную окружения: для ОС windows (Подойдёт для любой 7, 8, 8.1, 10, 11):

      image

    • Если у вас другая операционная система: Поищите в интернете способ для вашей операционной системы.

  3. Напишите Файлы Тестов (.txt):

    • Вам нужно определить тестовые последовательности на основе спецификации FSM вашего бота.
    • Создайте один или несколько файлов .txt в той же директории, где находится скрипт.
    • Обратитесь к файлу sample_test.txt для ознакомления с требуемым форматом. Каждая непустая строка должна соответствовать шаблону:
      команда_для_отправки\ожидаемый_ответ_бота
      
      Или, если конкретный ответ не ожидается (например, просто отправка команды):
      команда_для_отправки\
      
    • Используйте пустые строки внутри .txt файлов для логического разделения тестовых блоков или последовательностей. Они будут проигнорированы парсером.
  4. Настройте Конфигурацию (config.ini):

    • Откройте файл config.ini.
    • Секция [Main]:
      • tests: Перечислите через запятую имена ваших файлов тестов (созданных на предыдущем шаге), например: tests=graph.txt, wasil.txt, hybrid.txt.
      • wait_time: Установите максимальное время (в секундах), которое скрипт будет ждать ответа от бота (например, wait_time = 10). Допустимый диапазон: 0-60 секунд.
      • level_logging: Установите желаемый уровень логирования (например, INFO, DEBUG). TRACE не используется.
      • test_flag: Установите true, если хотите использовать тестовый сервер Telegram, или false для использования основного сервера. Настоятельно рекомендуется true!
      • dc: Если test_flag=true, укажите числовой ID тестового дата-центра (DC), к которому привязан ваш тестовый аккаунт (например, dc=2). Узнать его можно при регистрации тестового приложения или на my.telegram.org для тестового окружения. Если test_flag=false, это поле игнорируется.
    • Секция [Telegram]:
      • bots: Перечислите через запятую юзернеймы (начиная с @) ботов, которых вы собираетесь тестировать, например: bots=@mytestbot1, @another_test_bot.

Использование Тестового Сервера (Настоятельно Рекомендуется!)

Почему это важно: Тестирование на основных ("production") серверах Telegram может привести к временным ограничениям, завершению вашей сессии телеграм, или в редких случаях, даже к бану вашего аккаунта из-за большого количества автоматических запросов, которые могут быть расценены как спам. Тестовые серверы имеют более мягкие ограничения.

Как настроить:

  1. Получите доступ к тестовому окружению: Процесс может меняться, но хороший обзор есть в статье на Хабре: Как попасть в тестовое окружение Telegram. Вам потребуется зарегистрировать аккаунт и приложение именно в тестовой среде.
  2. Внесите необходимые данные: Убедитесь, что в вашем файле .env указаны TELEGRAM_API_ID, TELEGRAM_API_HASH и PHONE, полученные отсюда: https://my.telegram.org/apps.
  3. Настройте config.ini:
    • Установите test_flag=true в секции [Main].
    • Укажите правильный dc (Data Center ID) вашего тестового аккаунта в секции [Main].

Запуск Тестирования

  1. Убедитесь, что вы выполнили все шаги по настройке.
  2. Запустите скрипт.
  3. Программа выведет список ботов, указанных в config.ini. Введите номер бота, которого хотите протестировать.
  4. При первом запуске (или если сессия недействительна/ключ шифрования отсутствует) вам будет предложено ввести код подтверждения из Telegram (и, возможно, пароль двухфакторной аутентификации).
  5. Скрипт выполнит тесты, указанные в config.ini для выбранного бота.
  6. Результаты будут выведены в консоль в виде таблицы и записаны в лог-файл (result.log).

Интерпретация Результатов

После завершения тестов вы увидите таблицу: Где в левой колонке указаны пройденный тесты, а вправой найдены ли ошибки в реализации, как на скриншоте в начале в самом начале ReadMe.

About

В этом репозитории проект на Python, представляющий инструмент для комплексного тестирования Telegram-ботов на соответствие со спецификацией. Спецификация - это автомат являющийся эталоном (правильной моделью), мы сравниваем с ним, чтобы найти возможные ошибки в реализации автомата.

Topics

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages