Разделы портала

Онлайн-тренинги

.
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 . Она прекрасно живет в нашей сети, работает надежно и качественно.

Обсудить в форуме