Telegram-боты в тестовой инфраструктуре |
28.05.2019 00:00 |
Наша компания разрабатывает систему КОМПАС-3D для построения трехмерных моделей и чертежей. Проект зрелый – в этом году ему исполнилось 30 лет. Над продуктом работают 9 команд в двух городах – Коломне и Рязани. В системе автоматизированного тестирования мы используем Telegram для уведомлений, управления тестами и администрирования. Технически боты реализованы очень просто. Главная ценность заключается в их интеграции с системой автотестирования. Итак, что у нас делают Telegram-боты. Уведомления У каждой из команд есть свой Telegram-канал, в котором живет бот, пишущий сообщения о выполнении тестов. Кроме того, есть общий канал, где выводятся сведения о всех прогонах всех команд. Какие здесь особенности и преимущества? 1. По сравнению с классическим способом уведомления через почту не нужно управлять списками рассылки. У нас много команд и много сотрудников. Люди приходят в команды, увольняются, переходят из в команды в команду. Если бы все делалось через почту, пришлось бы заниматься списками рассылки – это неудобно, медленно и вязко. В Telegram такой проблемы нет: хочешь подпишись на канал, хочешь отпишись, подпишись на 2-3 канала или на 23. 2. Раз нет почтовой рассылки в механизме уведомлений, то не нужен и почтовый сервер. Мы не завязаны на его настройки, которые могут меняться. 3. Поскольку нам не сложно что-либо выдать в канал, мы создали отладочный канал, в который выводим внутреннюю информацию о работе тестовой инфраструктуры. Например, мы сигнализируем себе, что какой-то прогон выполняется слишком долго, надо обратить на него внимание – возможно, возникли проблемы в Jenkins. С почтой такой оперативности не добиться. 4. Пользователи в командах могут легко подписаться/отписаться от канала. Если не нужно в выходные наблюдать, как гоняются тесты – отключите уведомления. Доступность 24*7*365 позволяет видеть всё и на рабочем месте, и по дороге домой или на работу. Всегда и везде получаем уведомления в реальном времени. 5. Через ботов можно публиковать в каналы информационные сообщения. Например, о том, что механизм распределённого прогона тестов будет временно недоступен из-за необходимости выполнения технических работ. Подобные сообщения можно закреплять в канале. Фичу информационных сообщений мы пока не используем, но добавить ее очень просто. Управление тестами Видеть уведомления – это хорошо, но хорошо бы и уметь что-то делать с тестами. Наш бот позволяет запустить или отменить прогон, убрать прогон из очереди ожидания, посмотреть очередь или же информацию по завершившемуся ранее прогону. Что получаем в качестве плюсов? 1. Мы, как разработчики, не тратим время на пользовательский интерфейс системы автотестов. Мы не пишем GUI, а пользуемся тем, что предоставляет Telegram, и выстраиваем диалог с пользователем, как обычное общение в чате. В простом диалоге узнаем все, что надо, и выполняем ту операцию, которую хотел пользователь. 2. Независимость от системы continuous integration, в нашем случае Jenkins. Если мы заменим Jenkins на что-то другое, то не потеряем все наработки по уведомительной части и, в данном случае, все наработки по манипуляции с тестовыми прогонами. 3. Боты прекрасно работают в нашей сети, за файрволами и прокси – они ей нипочем. 4. Пользователи в командах избавлены от сильно перегруженного интерфейса Jenkins даже для сложных операций с тестами. Все происходит в диалоговом режиме: бот спрашивает, пользователь отвечает. 5. Доступность, как и в случае с уведомлениями. Манипуляции с тестами можно проводить круглосуточно. Разве что бот за нас код не пишет по исправлению ошибок в тестах. Базовые операции с тестами выполняются прекрасно. Администрирование Когда у нас появились возможности для удобной и быстрой работы с тестами через бота, мы решили – все круто, но тестовую инфраструктуру тоже надо обслуживать. И написали бота для административных действий. Мы администрируем систему с помощью еще одного бота, который позволяет запускать или останавливать тестовые агенты на машинах. Можно, например, перезагружать машины, смотреть, какая машина чем занята. Многие администрирующие операции выполняются удаленно, в том числе по дороге домой. Если замечаем проблемы, с помощью бота можно сделать диагностику и что-то починить, чтобы у сотрудников, работающих в офисе, не было простоя. В качестве библиотеки для работы с Telegram мы использовали Python Telegram Bot https://github.com/python-telegram-bot/python-telegram-bot . Она прекрасно живет в нашей сети, работает надежно и качественно. |