Только не Слизерин!
Только не Слизерин!

Привет, Хабр! Меня зовут Наталия, и я руковожу отделом тестирования в группе компаний Экзон. Начала карьеру в IT 7 лет назад с позиции стажера автоматизатора, работала фулл-стек тестировщиком, тех-лидом и имею опыт построения команд тестирования с нуля.

Когда я пришла на проект, у нас было 9 тестировщиков, из которых только двое умели писать автотесты. Остальные работали вручную, а покрытие автотестами составляло 30% на двух модулях из шести. Регресс длился вечность, баги вылезали в продакшене, а команда мечтала о волшебной кнопке “Протестировать всё”. Но вместо поиска магии мы выбрали стратегию, которая сократила время регресса и жизнь багов. И да, мы не нанимали дорогих аутсорс-гуру и не продавали душу рекрутерам.

 Тестировщики после недели регресса
Тестировщики после недели регресса

3 "Стандартных" Варианта, Которые Не Сработали (и Почему)

1. Аутсорс-автоматизаторы

"Они же эксперты!" VS "Они даже не читают документацию!"

Проблемы:

  • Собеседования не спасают - часто приходят "теоретики", а не практики.

  • Погружение = боль - вместо изучения проекта сыплются бесконечные вопросы.

  • Контроль отнимает больше времени, чем сама автоматизация.

Специфика работы с аутсорсом - необходим более жесткий контроль за скоростью и качеством выполнения задач. У команды начинается гонка за количеством, чтобы продемонстрировать свою “полезность”, не учитывая влияние на работу команды продукта. Они часто бездумно пролистывают документацию и заваливают "старичков" вопросами уровня "Как создать пользователя?". А если проект сложный, без глубокого погружения не обойтись. В итоге вместо экономии получаем дополнительные затраты времени и нервов.

2. Нанять своих автоматизаторов

"Давайте возьмём крутых спецов!" VS "Где вы, о великие QA-гуру?"

Проблемы:

  • Борьба за кадры - хорошие автоматизаторы уже работают (и хорошо зарабатывают).

  • Долгий онбординг - даже если наймёте, придётся объяснять нюансы проекта.

  • Переплата - рынок диктует высокие зарплаты.

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

Стандартная ситуация
Стандартная ситуация

3. Оставить как есть и надеяться

"Мануальное тестирование - это надёжно!" VS "Надёжно = медленно"

 Проблемы:

•     Регресс занимает недели и постоянно увеличивается.

•     Люди устают от монотонной работы = демотивация.

•     Нет перспективы развития, часто тестировщики не идут в компанию, где нет возможностей роста.

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

Наш выбор: Вырастить своих автоматизаторов

Мы выбрали четвертый путь - не нанимать, а обучать. Почему?

•        4 из 9 тестировщиков уже хотели учить автоматизацию.

•        Новые кандидаты в ближайшей перспективе тоже хотели развиваться.

•        Свои люди уже знают продукт - не нужно тратить месяцы на онбординг.

У нас собралась профессиональная и активная команда тестировщиков, с хорошей экспертизой по продукту и огромным желанием расти, почему бы не дать им такую возможность? 

Как мы превратили мануальщиков в автотестеров

Шаг 1. Индивидуальный подход к обучению

Не все любят курсы, не все любят книги. Поэтому мы давали выбор:

•     Платные курсы (частично оплачивала компания)

•     Бесплатные материалы (статьи, видео, документация)

•     Поддержка наших автоматизаторов (никакого "гугли сам")

Результат:

•     Кто-то освоил базу за 3 месяца и рвался в бой.

•     Кому-то понадобилось больше времени (не все курсы одинаково полезны).

•     Некоторые поняли, что автоматизация - не их, и это нормально.

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

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

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

Шаг 2. Рефакторинг фреймворка

Важным моментом стало подготовить фреймворк, сделать его более масштабируемым и с четкой архитектурой, учесть все варианты его использования в будущем. Так, одной из главных задач, было перейти на подготовку тестовых данных “на лету”, без привязки к снапшотам или конкретным стендам. В дальнейшем это позволило запускать автотесты на любых окружениях (включая проды), в любом порядке и без опасений сломать пользовательские данные. 

Итого, пока новички учились, мы избавлялись от legacy-костылей:

•        Выпилили Cucumber - он только мешал писать сложные тесты.

•        Сделали тесты стендонезависимыми - больше никаких падений из-за сломанных снапшотов БД.

•        Добавили API-слой для подготовки тестовых данных.

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

Шаг 3. Код-ревью без боли

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

•     Индивидуальные разборы ошибок (не всем комфортно на общих ревью).

•     Постепенное усложнение задач (сначала простые тесты, потом хардкор).

Эти действия уменьшили стресс для новичков, сделали процесс адаптации мягче и сократили время последующих код-ревью.

Тестировщик отдает на ревью свой первый автотест
Тестировщик отдает на ревью свой первый автотест

Подводные камни и как их обойти

Наш подход дал отличные результаты, но были и сложности:

1.   Не все дошли до финиша

•     30% обучающихся "отсеялись"

•     Решение: Заранее закладывайте "норму отсева"

2.   Технический долг во фреймворке

•     Пришлось параллельно рефакторить

•     Решение: Выделили 20% времени автоматизаторов на поддержку

3.   Ресурсные конфликты

•     "Срочные задачи" мешали обучению

•     Решение: Зафиксировали "часы на автоматизацию" в графике

Что получили в итоге?

К концу 2024 года:

•        10 автоматизаторов (из них 7 - бывшие ручные тестировщики) из 25 тестировщиков на 8 модулей.

•        Покрытие выросло до 20% по всем модулям (было 30% на двух).

•        Ускорился регресс (меньше рутины - больше времени на сложные кейсы).

•        Баг-радар срабатывает раньше - ловим ошибки ещё на этапе функционального тестирования.

Вывод: стоит ли игра свеч?

Определённо да. Мы:

•        Сэкономили бюджет (не переплачивали за аутсорс и дорогих спецов).

•        Прокачали команду (мотивированные тестировщики с новым навыком автоматизации).

•        Ускорили процессы (меньше ручного регресса - быстрее релизы).

Планы на будущее:

•    Развиваем новоиспеченных автоматизаторов для выполнения все более сложных задач и полной поддержке своих модулей.

•     Переводим ещё больше тестировщиков в автоматизацию.

•     Увеличиваем покрытие и масштабируем подход на другие проекты.

•     Доводим покрытие автотестами основного функционала до 80% к концу 2026 года.

  А как у вас обстоят дела с автоматизацией? Делитесь в комментариях!

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


  1. alexandernikitin
    25.06.2025 17:19

    Интересные факты о реалиях рынка.
    А обучать и растить собственных специалистов — уважаемый подход))