История о том, как бот в отделе тестирования упростил нам жизнь. автоматизация.. автоматизация. автоматизация рутины.. автоматизация. автоматизация рутины. автоматизация тестирования.. автоматизация. автоматизация рутины. автоматизация тестирования. Блог компании Рунити.. автоматизация. автоматизация рутины. автоматизация тестирования. Блог компании Рунити. боты.. автоматизация. автоматизация рутины. автоматизация тестирования. Блог компании Рунити. боты. Карьера в IT-индустрии.. автоматизация. автоматизация рутины. автоматизация тестирования. Блог компании Рунити. боты. Карьера в IT-индустрии. тестирование.. автоматизация. автоматизация рутины. автоматизация тестирования. Блог компании Рунити. боты. Карьера в IT-индустрии. тестирование. Тестирование IT-систем.. автоматизация. автоматизация рутины. автоматизация тестирования. Блог компании Рунити. боты. Карьера в IT-индустрии. тестирование. Тестирование IT-систем. тестирование веб-приложений.. автоматизация. автоматизация рутины. автоматизация тестирования. Блог компании Рунити. боты. Карьера в IT-индустрии. тестирование. Тестирование IT-систем. тестирование веб-приложений. Тестирование веб-сервисов.. автоматизация. автоматизация рутины. автоматизация тестирования. Блог компании Рунити. боты. Карьера в IT-индустрии. тестирование. Тестирование IT-систем. тестирование веб-приложений. Тестирование веб-сервисов. Тестирование мобильных приложений.. автоматизация. автоматизация рутины. автоматизация тестирования. Блог компании Рунити. боты. Карьера в IT-индустрии. тестирование. Тестирование IT-систем. тестирование веб-приложений. Тестирование веб-сервисов. Тестирование мобильных приложений. тестирование по.. автоматизация. автоматизация рутины. автоматизация тестирования. Блог компании Рунити. боты. Карьера в IT-индустрии. тестирование. Тестирование IT-систем. тестирование веб-приложений. Тестирование веб-сервисов. Тестирование мобильных приложений. тестирование по. тестировщик.. автоматизация. автоматизация рутины. автоматизация тестирования. Блог компании Рунити. боты. Карьера в IT-индустрии. тестирование. Тестирование IT-систем. тестирование веб-приложений. Тестирование веб-сервисов. Тестирование мобильных приложений. тестирование по. тестировщик. тимлид.. автоматизация. автоматизация рутины. автоматизация тестирования. Блог компании Рунити. боты. Карьера в IT-индустрии. тестирование. Тестирование IT-систем. тестирование веб-приложений. Тестирование веб-сервисов. Тестирование мобильных приложений. тестирование по. тестировщик. тимлид. эффективность работы.
История о том, как бот в отделе тестирования упростил нам жизнь - 1

С вами снова Ольга Султанова, руководитель отдела тестирования Рунити. В этот раз расскажу, как мы автоматизировали рутинные задачи в нашем отделе с помощью собственного бота, сократили работу над почти десятью мелкими задачами, сосредоточились на более важных делах и стали регулярно отмечать дни рождения в команде. А еще подсветим проблемы. Статья будет полезна, прежде всего, тимлидам, тестировщикам и разработчикам. Подробности под катом.

Навигация по тексту:

Как всё начиналось и какие проблемы решали

Предыстория, как мы пришли к идее создания собственного бота. В отделе тестирования есть множество рутинных задач, которые отнимают время и требуют постоянного внимания.

Проблемы, с которыми мы столкнулись:

— Продление тестовых услуг. Некоторые из автотестов жестко связаны с определенными услугами. Например, проверками продления, тестом карточек услуг и многими другими. Не продли их вовремя — сначала у нас начнут фейлиться тесты, потом придется потратить время на поиск альтернативных услуг вместо тех, что закончились. Нередко эти услуги с некими определенными предусловиями. И таких услуг аж 130 штук — немаленькая такая задача получается.

Голосовые активности: дейли, ретро и другие мероприятия, за которыми нужно следить. Все встречи есть в календаре. Но, думаю, с каждым могло быть, что, погрузившись в задачу, потерял счет времени и пропустил начало встречи… или вообще всю.

— Дежурства. Ежедневно назначено несколько дежурных по трем нашим ключевым продуктовым направлениям, важно не пропустить свой день. Например, в одном — нужно мониторить выкатки, в другом — разбирать баги от клиентских служб. 

Ревью MRов (Merge Requests). Когда-то MRы висели у нас в ревью слишком долго. Кому-то было неудобно получать оповещение о ревью на почту — письма просто терялись среди потока. Кто-то надеялся на других и если назначено 10 человек, то «пусть посмотрит кто-нибудь, кто не я». Чтобы такого не было, нужны конкретные ответственные за MRы. 

— Метки в Jira. Необходимо следить, чтобы на все баги были навешаны метки для работы с метриками. Мы собираем разные показатели, в том числе из Jira. Это могут быть внутренние, внешние или критические баги и — найденные автотестами. Если метки у тикета нет, например, баг создал не тестировщик, а продакт-менеджер или клиентские службы, то такой дефект не попадает в расчеты метрик. И поэтому нам необходимо следить, чтобы на все реальные баги были навешаны нужные метки. 

— Работа с метриками. Нам нужно собирать и анализировать метрики по багам, покрытию, автоматизации — где-то хранить и обращать внимание на них, если что-то идет не так. Из регулярного: раз в неделю мы отслеживаем хрупкость сборок. Раз в месяц — анализируем метрики по дефектам, покрытию и автотестам.

— Дни рождения в команде. О них важно помнить. Получать поздравления с днем рождения всегда приятно, но с ростом отдела довольно сложно уследить за всеми праздничными датами. 

— Заполнение отчетов. Рутинная задача, которая настигает в конце месяца, когда нужно заполнить отчеты о нагрузке. В целом, задача на две минуты, но это тоже нужно держать в голове и хранить под рукой ссылку на отчет.

Вот такой список получился. Большинство из этих задач небольшие, но всё равно занимают время и могут выпадать из фокуса. Также все их можно выполнить вручную, использовать личные напоминалки и закреплять ссылки. Но если есть возможность автоматизировать, то почему бы не сэкономить себе время и не сделать это?

Отсюда мы решили, что пора завести своего ассистента, который будет помогать и напоминать о важном. Так у нас появился бот.

Как появилась первая версия бота

Изначально наш бот имел довольно ограниченный функционал: он просто брал информацию из файлов и присылал оповещение в корпоративный мессенджер. На тот момент бот был создан практически без использования кода, просто работал с хуками мессенджера и с API для получения данных из файлов.

Первая реализация

Первая реализация

Всё меняется, и со временем наши запросы на автоматизацию росли. Мы переехали из одного мессенджера в другой, поэтому бот значительно вырос — вот, что он умеет теперь (спойлер: он умеет решать все проблемы, которые мы обозначили выше, но расскажем о каждом пункте подробнее):

1. Поздравлять с днем рождения. После чего возникает цепная реакция поздравлений и пожеланий от команды, что тоже приятно и классно :)

🎉

🎉

2. Оповещать о дейли. За несколько минут до встречи бот напоминает о ней, назначает ведущего или резервного ведущего, если основной в отпуске.

История о том, как бот в отделе тестирования упростил нам жизнь - 4

3. Готовить к ретро. За несколько недель до мероприятия бот присылает напоминания ведущему о том, что уже можно начинать готовиться, собирать информацию, продумывать интерактивы и оформлять доску. 

История о том, как бот в отделе тестирования упростил нам жизнь - 5

4. Напоминать о дежурствах. Каждое утро бот оповещает дежурного и закрепляет информацию в канале. На случай, если кому-то из разработчиков, допустим, нужна эта информация.

История о том, как бот в отделе тестирования упростил нам жизнь - 6

5. Напоминать об отчетах. В последний день месяца бот присылает ссылку на отчет, который нужно заполнить.

История о том, как бот в отделе тестирования упростил нам жизнь - 7

Это были функции оповещения, теперь переходим к более серьезным задачам, которые умеет решать бот.

6. Автоматически продлевать тестовые услуги, когда подходят даты их истечения.

Вот бот нашел пару услуг и говорит, что их нужно продлевать (действительно, делает это)

Вот бот нашел пару услуг и говорит, что их нужно продлевать (действительно, делает это)

7. Контролировать метки в Jira. Раз в неделю бот присылает список багов без меток, чтобы тестировщики могли их проверить.

История о том, как бот в отделе тестирования упростил нам жизнь - 9

8. Следить за хрупкостью сборок. Если процент хрупкости превышен, бот отправляет оповещение раз в неделю.

История о том, как бот в отделе тестирования упростил нам жизнь - 10

9. ​​Анализировать метрики. Раз в месяц бот присылает оповещения, если превышены метрики по багам, покрытию и автотестам.

История о том, как бот в отделе тестирования упростил нам жизнь - 11

10. Призывать на ревью MR. Для каждого MR бот случайным образом назначает двух человек для проверки и отправляет оповещение в мессенджер, призывая их и всех остальных, на всякий случай.

История о том, как бот в отделе тестирования упростил нам жизнь - 12

Часть техническая: реализация

Теперь расскажем, что под капотом бота. Его примерная схема выглядит так, единственное, сейчас у нас больше ресурсов, чем было изначально.

Текущая реализация

Текущая реализация

Вся функциональность, связанная со списками людей (например, дни рождения, дежурства), использует API для работы с файлами. Данные берутся из электронных таблиц, где указаны имена сотрудников, даты и пересечения этих двух полей — всё довольно просто, но сложнее здесь и не нужно. После чего небольшой скрипт на JavaScript обрабатывает их и отправляет уведомления в мессенджер через вебхуки.

Для функциональностей, связанных с метриками, используется связка API Jira, базы данных, JavaScript и вебхуков мессенджера. Делаем JQL-запрос к Jira — данные попадают в базу данных, откуда скрипт на JavaScript забирает их и отправляет в мессенджер. Прослойка с базой данных нужна для долгосрочного хранения информации, которая используется нами для других задач, так что в теории для работы бота мы могли обойтись и без базы данных.

История о том, как бот в отделе тестирования упростил нам жизнь - 14

Для продления услуг реализация пока неидеальная — сложнее, чем могла бы быть. 

Сначала с помощью запроса к клиентскому API мы получаем даты экспирации всех наших услуг. Если обнаруживаются услуги, которые можно продлить, то выставляется счет на их продление, а дальше подключается WebDriver — счета оплачиваются через веб-интерфейс приложения для клиентских служб, как если бы это был UI-автотест, поскольку для этого приложения у нас нет удобного API. Но в использовании никаких проблем такая реализация не доставляет.

Призыв на ревью добавлен отдельной джобой в pipeline при создании МRа. Когда автор кода готов к ревью, он вручную запускает эту джобу и стартует скрипт на JavaScript, который выбирает ревьюеров и отправляет им оповещение в мессенджер. 

Сначала для этой цели прикрутили библиотеку Danger, но у нас возникли инфраструктурные проблемы в Git. Также тестировщикам удобнее было получать уведомления в мессенджер, поэтому работу с Danger мы пока архивировали и отложили в пользу бота.

Итак, запуск автоматизирован! Все задания запускаются по расписанию через GitLab.

Мы получаем стабильность и предсказуемость работы бота — каждая функция у нас описана человеческим языком, написано, во сколько и когда она будет опускаться. Всё хорошо, но остался момент…

Небольшое «но», над которым сейчас работаем

Хоть мы и автоматизировали много процессов, полностью исключить ручное вмешательство пока не удается. Например, актуализация текстовых документов. Данные о сотрудниках, даты дежурств и другие списки нужно обновлять вручную время от времени.

Дальше — актуализация списка услуг для продления. Если появляются новые тестовые услуги, их нужно вручную добавлять в список. И наоборот, если что-то потеряло актуальность, то это нужно выпиливать из системы для отслеживания.

Последнее — разбор тикетов без меток тоже нужно делать вручную. То есть, хотя бот присылает нам уведомления о багах без меток, анализ этих багов и проставление меток все равно требуют человеческого участия. Нужно понимание контекста и специфики бага — пока наш бот до такого не дорос. Подождем, как будут идти дела в будущем, возможно, посмотрим в сторону искусственного интеллекта.

Все задачи полностью автоматизировать сложно, но мы стараемся сделать так, чтобы их ручное выполнение было максимально удобным и быстрым. Например, делаем регламенты и закрепляем ссылки для быстрой навигации.

Итоги

Подведем промежуточные итоги — здесь есть пару мыслей. Во-первых, бот стал незаменимым помощником в нашем отделе. Он действительно упростил многие рутинные процессы и освободил время для более важных задач. Во-вторых, наш бот — живой проект, мы постоянно улучшаем и дорабатываем его.

Спасибо, что дочитали! И мы готовы обсудить, как вы решаете подобные задачи у себя? :)

Автор: runity

Источник

Рейтинг@Mail.ru
Rambler's Top100