Когда я только села писать эту статью про QA Automation Day, у меня было хорошее настроение: «Не буду говорить о сложностях и страданиях, глубокой аналитике, а расскажу о том, как у нас прошло гладко, без эксцессов, именно так, как мы и намечали». Если бы…
Привет, меня зовут Яна, я технический лидер тестирования Платежей и переводов Альфа-банка и сегодня мне бы хотелось поделиться с вами интересным опытом, который, в перспективе, можно использовать и как добрую традицию. Речь пойдет о мероприятии под названием «QA Automation Day».
Сначала была боль
Сначала было слово наша изначальная проблема…Заключалась она в бэклоге, а точнее, в его большом объеме. Что же там объемного?
Банк выделяет достаточное количество ресурсов, чтобы обеспечить сохранность личных данных клиентов. И чтобы свести к минимуму возможность возникновения IDOR-уязвимости — веб-уязвимости, когда пользователь-мошенник может получить или воспользоваться личной информацией другого клиента банка, мы взяли на себя амбициозную цель покрыть все микросервисы платежей и переводов автотестами, утверждающими отсутствие данной уязвимости для каждого открытого в сети эндпоинта.
Мы должны быть уверены, что мошенники не могут с помощью своего токена получить данные другого клиента банка. Задача не из простых!
Собравшись с коллегами на анализ решения данной задачи быстро посчитали, что имея в прямом пользовании около 30 микросервисов мы перейдем черту за 150 тестовых сценариев, требуемых для анализа, воспроизведения и автоматизации. А до конца месяца их нужно срочно автоматизировать.
Вроде мало? Можно быстро закрыть. Ведь у нас 30 боевых единиц профессиональных QA. Это по 5 эндпоинтов на человека, минимум.
Однако есть пара нюансов…
№ 1. Один эндпоинт может иметь несколько потенциально уязвимых данных, требуемых проверки. Это увеличивает общий объем работы.
№2. Тестировщики распределены по бизнес-командам и выполняют свои непосредственные обязанности — проводят функциональное тестирование поставляемого функционала и поэтому не могут срочно приступить к нашей потребности в закрытии технического долга. Другими словами — они заняты. Условно, один QA может взять одну «задачу» в виде эндпоинта в день. Итого получаем 150 условных дней на закрытие.
№3. Покрыть автотестами уязвимые данные ни аналитик, ни разработчик не могут. Нет, конечно, могут, но им придется на одну задачу убить один день, без учета времени на обучение. В этом варианте получаем дней гораздо больше, чем 150.
Масштаб проблемы нам был ясен.
Итак, у нас было два
стулаварианта: закрывать бэклог в «свободное время» (несколько месяцев) или как-то закрыть бэклог за один раз.
На самом деле вариантов не было — закрывать бэклог в свободное время мы не можем, нам нужно сделать все это за один раз.
Прекрасная идея, но возникает нюанс — как собрать всех в одном месте?
Тестировщики не могут прямо сейчас приступить к этим задачам, если они, опять же, заняты в своих командах. А дополнительных ресурсов и людей, которые могли бы закрыть срочную техническую потребность на стороне не найти — нужен опыт и знания коллег, работающих в платежах и переводах. Время поджимает, нам понадобятся все силы коллег в течении нескольких дней для покрытия такого объемного технического долга.
И здесь мы вспомнили про багатон
Мы также вспомнили опыт проведения багатонов, когда команды закрывали десятки багов за один день. Мы подумали, что можем проецировать подобное решение на бэклог автотестов.
Технические направления и бизнес работают вместе над качеством продукта для наших пользователей, и понимая, что нам срочно нужны все силы тестировщиков в моменте, мы пошли к бизнесу.
За что я люблю корпоративную культуру Альфа-Банка, так это за то, что мы всегда идем навстречу друг другу! В трудные и критические моменты мы помогаем друг другу.
Мы договорились, что тестировщики будут освобождены от любых других активностей в пользу epsilon автотестов два рабочих дня подряд.
Начальство поддержало нашу инициативу покрыть весь техдолг за раз и даже выделило нам призовой фонд, которые мы распределили бы между победителями.
Итак, игра была объявлена!
Но запланировать мероприятие и получить бюджет не равно провести мероприятие. Это только самые первые маленькие шаги к победе над задачей! Здесь начинается самое интересное.
Опыт проведения багатона показал, что успех мероприятия напрямую зависит от качества планирования. Поэтому к этой задаче мы решили подойти основательно — регулярно созванивались группой организаторов и прописывали план. Ниже можно увидеть примерный перечень работ, который мы обсуждали и выполняли.
Таблицу делали «для себя», поэтому я могу лишь извиниться за формат и расписать подробнее, что же подразумевалось под каждым пунктом.
Итак, пойдем сверху вниз.
Формирование бюджета. Здесь все просто, начальство согласовывало нам призовой фонд, который я оставлю секретом.
Привлечение аналитиков к участию. Так как анализ каждого эндпоинта занимает энное количество времени, мы должны были подготовить максимально понятную документацию на каждый готовый к автоматизации эндпоинт, чтобы это время не увеличивалось.
Бэклог. Список эндпоинтов мы имели на руках, но надо было привести его в такой формат, чтобы коллегам было удобно брать эднпоинты в автоматизацию, а нам после считать результаты. Ничто лучше, чем таски в Jira на специальной доске не могло подходить для такой наглядности.
Обучение. Опять же, чтобы ребята максимально круто перформили по автотестам, они должны были знать, что от них требуется. Поэтому я и мой коллега провели ряд обучений (лекции и воркшопы) для подробного анализа действий тестировщика в процессе покрытия автотестом потенциально уязвимого эндпоинта «с нуля».
Игровая механика. Описали свод правил и процесс работы во время «автодня».
Согласование дня проведения. Мы понимали что за один день уложиться нереально и смогли убедить коллег выделить тестировщиков на два дня подряд. Честно скажу, я не верила, что такое получится. Однако, удалось. Но этот момент я затрону еще раз чуть позже.
«Реклама» и анонс: мы рассказывали коллегам о своем процессе подготовки, в основном, на созвонах, таким образом «заряжая» их атмосферой предстоящего событием. Ну и конечно же, показывали важность покрытия всех эндпоинтов автотестами.
Как таковой «рекламной кампании» не было, но, тем не менее, о мероприятии узнали соседние дирекции, оценили идею и присоединились к нам. Лиды QA провели аналогичные работы для своих дирекций и были готовы присоединиться к нашей активности в намеченные даты.
В списке пункты выглядят идущими друг за другом, но все эти «этапы» шли параллельно (что добавляло сложностей) Одним самым сложным для нас, организаторов, была аналитика.
Аналитика, что ты делаешь, прекрати
Когда я только села за эту статью, одно из моих первых предложений было таким: «Не буду говорить о сложностях и страданиях, глубокой аналитике, а расскажу о том, как у нас прошло гладко, без эксцессов, именно так, как мы и намечали».
Но я не могу держать это в себе, честно. Это было больно.
В чем же боль? Как уже было упомянуто, бизнес согласился отпустить тестировщиков всего на два дня. Задача — покрыть все эндпоинты автотестами, и за два дня без предварительной аналитики это невозможно сделать. Представьте себе, что мы соберем людей, дадим им список всего лишь из 150 эндпоинтов, они потратят неделю на их изучение и только потом смогут написать на них автотесты. Не нужно даже считать, чтобы понимать, что в два дня такую работу не уместить.
Что мы сделали? На каждый потенциально уязвимый эндпоинт мы создали по задаче в Jira и приложили в каждую из них данные на воспроизведение.
Дальше участник мог бы работать с задачей по такому алгоритму…
Это скрин алгоритма из нашего манифеста Идеального Automation Day, каким он нам виделся. В принципе, он таковым он и вышел, ведь участникам во время мероприятия оставалось только перенести данные в фреймворк автотестов. И с такой задачей любой человек во время дня мог повторять одну итерацию: взял задачу — написал тест из документации — прошел ревью ПР.
И вот для этого нам пришлось знатно потрудиться. Наша аналитика заняла много, очень много времени: больше двух недель мы создавали задачи, обновляли документацию, сводили данные. На помощь пришли наши лучшие друзья — аналитики!
Они на самом деле реально нас спасли. Провести анализ 200+ эндпоинтов за три недели было неподъемной задачей для кучки организаторов, но аналитики уже писали функциональные требования на все на микросервисы, благодаря чему приложили в разы меньше усилий, чем это делали бы тестировщики даже бОльшим составом нежели группа организаторов.
Мне стоит упомянуть, что требования к эндпоинтам были написаны и так же мы имели тест-кейсы на воспроизведение IDOR уязвимостей. Но информация не везде была актуальная. Что именно мы попросили сделать аналитиков? Убедиться, что их документация актуальная и обновить ее, при необходимости.
Может возникнуть закономерный вопрос - тестировщикам выделили время, а как работали аналитики? Им тоже согласовали заменить некоторые задачи на актуализацию требований.
В итоге, мы получили даже больше, чем 150 задач, всего лишь 230. «Как мы и хотели».
Итак — настал день X
Утром четверга собрались со всеми участниками мероприятия плюс начальники и официально начали нашу гонку.
Я бы хотела подчеркнуть тот момент, что AutoDay в нашем понимании не был событием на уровне оффлайн-багатона или другого «модного» мероприятия. Мы планировали максимально эффективно провести этот день. А когда мы эффективно работаем? Когда нам удобно и никто не отвлекает. Отчасти поэтому мероприятие и проводилось в онлайн формате, чтобы участвовало максимальное количество человек.
Часто организаторы заморачиватся над тем, чтобы сделать какие-то лендинги, легенды, отрисовать дизайн, геймификацию, снимают помещение, баннеры, находят фотографа и пр.
У нас всё прошло «по-домашнему».
Мы просто созвонились в Альфа-Толк (как в «Зуме»), раздали задачи и погнали.
Чтобы обеспечить драйвовую атмосферу и быстро решать возникающие вопросы организаторы спрятались остались в комнате Альфа-Банк и в течение всего мероприятия дежурили и отвечали на все вопросы.
Участники, конечно, могли как сидеть с нами в общей комнате, так и заходить по необходимости с вопросами. В целом, ребята работали как им было удобно
До сих пор я вспоминаю прошедшие дни с улыбкой, хоть и было тяжело. Мы почувствовали себя большой дружной командой, семьей, которая весело и активно решала приятные задачи, а не работала (спасибо готовым задачам).
В течении дня, я следила за статусами задач и время от времени закидывала в ребят информацию о том, сколько уже ими было сделано и сколько нам еще осталось. Так как у нас не был прикручен Burndown Chart (была обычная канбан-доска, ребят, настроить всё не успели) то я могла лишь отображать участникам график перехода задач по статусам.
Что на скриншоте:
Зеленое — завершенные задачи.
Оранжевое — ToDo.
Фиолетовое — In Progress
Синее — Review.
Около сотни задач уже было закрыто на начало мероприятия, чему поспособствовало наше раннее обучение: после воркшопов мы раздали ребятам задачи на «разгонку», которые и отражены завершенными на графике до утра 8 февраля
В конце дня мы объявили об окончании дежурства, однако участники разошлись отдыхать чуть позже (на графике видно, что после 8 вечера еще кто-то решал задачи), так как результаты суммировались за весь календарный день.
Около 5 задач так и остались незакрытыми из-за особенностей эднпоинтов, их мы решали в отдельное время уже после подведения итогов.
Что было дальше?
А дальше мы выдохнули, так как самое сложное и волнительное для организаторов было завершено; дали ребятам ещё пару дней на возможность поправить замечания на пул реквестах; а сами в параллель подводили итоги.
За эти два дня ребята обращались к нам с нетривиальными случаями, с которыми столкнулись во время более подробного изучения потенциально уязвимых эндпоинтов. Всё-таки при анализе более 200 эндпоинтов организаторы могли что-то да пропустить. Так и случилось — мы выяснили что несколько эндпоинтов невозможно покрыть автотестами в текущей реализаици нашего тестового фреймворка, и нам придется искать обходные пути уже после завершения всех остальных работ.
Но самым вкусным считаем то, что мы обнаружили 6 багов с высоким приоритетом и исправили в самые короткие сроки.
Меньше чем через неделю мы объявляли наших победителей и раздавали призы, будучи увереными в том, что в нашем направлении больше не имеется IDOR уязвимостей и при будущих поставках мы будем отлавливать их появление!
Мораль сей басни такова
Можно провести хакатон, багатон, и прочий «тон» без внешней мишуры, «по-простому».
Качественное планирование залог наилучших результатов не только при планировании разработки и поставки нового функционала, но и при вышеперечисленных мероприятий.
Альфа-Банк любит и поддерживает массовые инициативы внутри IT! Только благодаря поддержке Бизнеса и коллег мы смогли такое организовать. Я рада, что мы показали что мы настоящая команда!
Больше всего из этой истории меня впечатляет отзывчивость начальства и коллег в Альфа-Банке по организации подобного мероприятия! (не реклама, меня не заставляли писать этот текст
).
Из негативного: не всем участникам понравилась идея «два дня автоматизации». Два дня подряд показались некоторым утомительными, и если бы они хотели повторить, то в формате «одного дня». Хотя такого шага от нас потребовал объем технического долга, мы были с ними согласны. И если рискнем повторить, обязательно учтём!
И в конце хотела бы оставить хвалебные отзывы участников Автодня.
Спасибо, если у вас был опыт участия или организации подобных мероприятий, поделитесь опытом: что можно было бы сделать лучше, а что получилось хорошо :-)
а
Комментарии (9)
spooph
27.04.2024 17:07+7Перевожу на русский: процессы в Альфа-Банке организованы так, что выставленные наружу ручки не тестировались на уязвимости и пришлось людей аврально собирать со всех команд департамента (нарушая планы в их командах), чтобы хоть как-то покрыть тестами функционал, который уже кучу времени в проде.
Хорошая антиреклама.
yignatenko Автор
27.04.2024 17:07Готовые автотесты не равно "не тестировались". Мы лишь хотим, чтобы при релизах не всплывали уязвимости, а автотесты помогут избавиться от мануальных ретестов и сэкономят всем время. TTM, все дела)
Как негативно.
IvanG
27.04.2024 17:07+2Главное, что удалось
Пописать в приятной атмосфере
Если серьезно, солидарен с вопросами выше, если это рабочий день (а если потребовалось на 2 дня откуда то "отрывать", то как-будто так и есть) то формат проведения с "огоньком" похвален, но можно было и без этого.
Еще как эффективный вариант решения, без тимбилдинг ноток, найти пару упоротых перформеров которые за половину/треть бюджета в виде премии затащили бы все это (возможно и без аналитиков), за те же "недели подготовки".
yignatenko Автор
27.04.2024 17:07О, мы тоже думали так таким вариантом, он и правда реален. В итоге все же реализовали тему моей статьи.
По поводу вопроса с рабочими днями ответила выше. Дни, конечно, рабочие, призовых мест было несколько. И если кто-т оне выиграл, то хотя бы "разгрузился" (опять же, я собирала ОС от коллег, это не мои слова)
Krasnoarmeec
27.04.2024 17:07"Ендпоинт" - это как серпом по мозгу, тем более, что в статье встречается и более привычное "эндпоинт". Конечно в виде "эндпоЙнта", но всё же лучше.
yignatenko Автор
27.04.2024 17:07+1Спасибо вам! Посмотрела на свой текст еще пару десятков раз и поправила везде где увидела!
mello1984
27.04.2024 17:07Эти истории про багатоны всегда вызывают вопросы...
Вот вы 'отпросили' тестеров на 2 дня из команд, а что стало со спринтами потом (если у вас скрам)? Тестерам потом пришлось лихорадочно тестировать задачи, которыми бы они могли заниматься эти 2 дня?
Честно говоря это все выглядит даже печальнее чем просто багатоны - похоже на то, что люди просто сидели и тупо перенабивали правила в код автотестов
Ну и 'мы команда' обычно всплывает когда надо сидеть и фигачить как не в себя, вместо того чтобы нормально запланировать нагрузку и все такое... Как говорится, 'геройство одних - это следствие раздолбайства других'...
aleksandy
Что-то я не понял:
Автотестеров (или не только?) собрали на 2 дня (рабочих, кстати, или выходных?) и по результатам кто-то "победил", читай, отбил потраченное время, если всё происходило в выходной, а кто-то "за значок" ударно поработал на благо работодателя?
А как бюджет распределился в отношении аналитиков, если задачи были описаны так, что "участникам во время мероприятия оставалось только перенести данные в фреймворк автотестов", то вся основная работа была выполнена аналитиками, а тестеры просто переписали с человеческого на фреймоворковый. Т.е. работа тупо механическая: возьми это, отправь туда, получить должен это, если не так, то выбрось ошибку.
Короче, похоже, что наградили непричастных, по большому счёту.
yignatenko Автор
Конечно рабочих! Я писала, что мы "отпросили" тестировщиков от всех остальных задач. Это подразумевает собой рабочие дни. Зачем же тогда мы бы договаривались? Я добавила пару предложений, чтобы такой путаницы ни у кого не возникло, спасибо Вам за это замечание!
Насчет аналитиков я тоже добавила информацию в текст статьи, спасибо Вам. Коллегам-аналитикам также заменили часть задач на актуализацию документации. Дело в том, что документация на епсилон кейсы была готова, но могла быть неактуальной (что часто встречается при сильно сжатых сроках поставок, сами понимаете). Поэтому аналитикам нужно было убедиться в актуальности своей же документации, по которой мы уже могли быстро написать автотест. Денежное вознаграждение за такое не вводили, хоть и были обсуждения, но после оценки объема работы техлидом аналитики, выяснилось, что работы для аналитиков там не настолько много, чтобы устраивать целый соревновательный квест. Хоть мы и старались принести тестировщикам максимально полное количество данных, но им все равно пришлось много работать, жаль, что вам показалось что тестировщики делали "тупо механическую работу". Может быть, я еще попробую поправить свое изложение этой части.