Я работаю уже 10 лет в компании Тензор, за это время число тестировщиков приблизилось к четырём сотням. И все эти 10 лет у нас в компании проводились различные хакатоны для студентов, соревнования для разработчиков, наши безопасники участвовали в CTF, проводились конкурсы на лучшее фото из отпуска, турниры по настольному теннису, шахматам, волейболу, пауэрлифтингу... Ну вы поняли. Всё что угодно, но не соревнования, в которых можно померяться своим навыком в нахождении ошибок. Причём не геймификацию процесса, не дружеские посиделки с ноутбуками, а по-хорошему злые забеги. Собственно, такие соревнования мы и организовали и успешно проводим второй год подряд (2020 не считается за год :)). О нашем опыте, сложностях, удачах и выводах как раз и хочу рассказать.

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

Отборочный этап

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

Тут были и классические формочки:

И задания на верстку:

Для подсчета баллов была сформирована команда из десятка опытных тестировщиков, которые двое суток разбирали присланные баг-репорты. И это были адские 48 часов. Масштабы трагедии понятны по диаграмме распределения ошибок по заданиям:

Часто приходили похожие ошибки, которые немного по-разному воспроизводились. И мы не раз собирали консилиум, чтобы принять решение о судьбе таких баг-репортов. По итогу из 154 человек были отобраны 20 финалистов. Те самые задания были собраны в оффлайн архив, который можно скачать и ознакомиться со всеми задачами.

Финал

Финал проходил оффлайн. После одного из хакатонов у нас осталось картографическое приложение с интересными функциями - выгрузки карт, построение маршрутов и разумеется с гигантским количеством ошибок. Цель простая: найти как можно больше ошибок и зарепортить их. Для того, чтобы жизнь медом не казалась - все репорты проверяли судьи на лету и в багтрекер-системе возвращали на доработку. К слову, судей было более десяти и дискуссии были жаркие.

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

После подсчета и подтверждения последних репортов судьи подвели итоги и 3 победителя разделили 150К между собой.

Багатлон 2.0

Участники первого багатлона оставили много положительных отзывов по первому этапу. Даже финалистам именно он больше всего понравился.  И мы решили в 2021-ом провести именно онлайн-соревнование с несколькими мини-приложениями. Но вот сидеть потом и несколько суток проверять баг-репорты не хотелось. Поэтому решили в этот раз попробовать вариант с автоматической фиксацией ошибок.

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

Пример таких ошибок. Вездесущие граничные значения :)
Пример таких ошибок. Вездесущие граничные значения :)

Поскольку все действия и вводимые данные валидировались на сервере был выбран и протестирован под нагрузкой стэк из ngingx + uWSGI + python + postgreSQL. Фронтенд делался без полноценных макетов при помощи нашего внутреннего фрейморка Wasaby. И хоть функциональных ошибок в движке участники нашли не мало, с нагрузкой и основной задачей сайт справился.

А нагрузки хватало. В этот раз участников было больше 200. На само прохождение давалось 60 минут, а стартовать можно было в течение суток, чтобы сотрудники из разных часовых поясов могли поучаствовать в удобное для себя время. Результаты соревнований были известны сразу же. Это первый плюс. Вторым плюсом были спокойные нервы организаторов - к моменту старта основная работа была выполнена. А вот теперь о минусах со слов самих участников:

«...автоматическая фиксация это прям хорошо, но иногда непонятно, что за ошибка засчиталась. хочется какой-то список увидеть или хотя бы всплывашку, чтобы не отлавливать повторно ошибку»

«По 5 заданию в багатлоне не фиксировались следующие баги...»

Это самые частые жалобы. И если показывать игроку, какую ошибку он нашёл, можно, то вот найти прямо все-все ошибки, очевидно, сверхсложная задача. Третий багатлон хотим сделать более похожим на Advent of Code, чтобы задания для каждого участника были похожие, но по своему уникальны и сами задания были связаны в одну историю. По идее это должно добавить увлекательности соревнованиям, а just for fun всё-таки не менее важен, чем соревновательный дух. А как тестировщики развлекаются в вашей компании? :)

Комментарии (0)