В этом репозитории проект на Python, представляющий инструмент для тестирования Telegram-ботов на соответствие со спецификацией. Спецификация - это автомат являющийся эталоном (правильной моделью), мы сравниваем с ним, чтобы найти возможные ошибки в реализации автомата.
Взаимодействие с ботами осуществляется напрямую через библиотеку Telethon, используя Telegram API.
Перед началом убедитесь, что у вас есть:
- Стабильное интернет-соединение: Критически важно для надежной связи с API Telegram во время тестирования.
- Аккаунт Telegram: Необходим для взаимодействия с API.
- Учетные данные Telegram API: Вам понадобятся
api_idиapi_hash, связанные с вашим аккаунтом Telegram.- Получите их, зарегистрировав новое приложение (это может быть фиктивное приложение) под вашим аккаунтом здесь: https://my.telegram.org/apps.
-
Скачайте последний релиз:
- Перейдите на страницу релизов этого репозитория.
- Скачайте исходный код или готовый пакет последнего релиза.
- Распакуйте файлы в нужную директорию на вашем компьютере.
-
Настройте Ключ Шифрования (Переменная Окружения):
-
Из соображений безопасности, ключ, используемый для шифрования вашей сессии Telegram, НЕ хранится в файле
.env. Он должен быть установлен как пользовательская переменная окружения с именемENCRYPTION_KEY. -
Пока эта переменная не установлена: При запуске скрипт генерирует временный ключ.
-
Запустите программу key_generator.exe (из папки с релизом): Он сгенерирует вам ключ, который нужно будет добавить как переменную окружения.
-
Как установить пользовательскую переменную окружения: для ОС windows (Подойдёт для любой 7, 8, 8.1, 10, 11):
-
Если у вас другая операционная система: Поищите в интернете способ для вашей операционной системы.
-
-
Напишите Файлы Тестов (
.txt):- Вам нужно определить тестовые последовательности на основе спецификации FSM вашего бота.
- Создайте один или несколько файлов
.txtв той же директории, где находится скрипт. - Обратитесь к файлу
sample_test.txtдля ознакомления с требуемым форматом. Каждая непустая строка должна соответствовать шаблону:Или, если конкретный ответ не ожидается (например, просто отправка команды):команда_для_отправки\ожидаемый_ответ_ботакоманда_для_отправки\ - Используйте пустые строки внутри
.txtфайлов для логического разделения тестовых блоков или последовательностей. Они будут проигнорированы парсером.
-
Настройте Конфигурацию (
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 может привести к временным ограничениям, завершению вашей сессии телеграм, или в редких случаях, даже к бану вашего аккаунта из-за большого количества автоматических запросов, которые могут быть расценены как спам. Тестовые серверы имеют более мягкие ограничения.
Как настроить:
- Получите доступ к тестовому окружению: Процесс может меняться, но хороший обзор есть в статье на Хабре: Как попасть в тестовое окружение Telegram. Вам потребуется зарегистрировать аккаунт и приложение именно в тестовой среде.
- Внесите необходимые данные: Убедитесь, что в вашем файле
.envуказаныTELEGRAM_API_ID,TELEGRAM_API_HASHиPHONE, полученные отсюда: https://my.telegram.org/apps. - Настройте
config.ini:- Установите
test_flag=trueв секции[Main]. - Укажите правильный
dc(Data Center ID) вашего тестового аккаунта в секции[Main].
- Установите
- Убедитесь, что вы выполнили все шаги по настройке.
- Запустите скрипт.
- Программа выведет список ботов, указанных в
config.ini. Введите номер бота, которого хотите протестировать. - При первом запуске (или если сессия недействительна/ключ шифрования отсутствует) вам будет предложено ввести код подтверждения из Telegram (и, возможно, пароль двухфакторной аутентификации).
- Скрипт выполнит тесты, указанные в
config.iniдля выбранного бота. - Результаты будут выведены в консоль в виде таблицы и записаны в лог-файл (
result.log).
После завершения тестов вы увидите таблицу: Где в левой колонке указаны пройденный тесты, а вправой найдены ли ошибки в реализации, как на скриншоте в начале в самом начале ReadMe.



