
Привет, Хабр!
На связи Дмитрий Пирумов, руководитель подразделения QA РТЛабс. В этой статье хочу поделиться опытом развития внутреннего обучения — как, зачем и почему мы создали корпоративную школу автоматизированного тестирования. Наш опыт будет полезен, если нужно организовать внутреннее обучение и вы ищете ответ, как решить эту задачу.
Как было организовано обучение у нас
В нашей компании можно пройти обучение как внешнее, в аккредитованных учебных центрах, так и внутреннее — онлайн-курсы на корпоративном портале или лекции, которые ведут коллеги.
Нюансы внешнего обучения
Планируется на длительный период
Платное
Сложно сочетается с работой: надо освободить сотрудника или придумать форму совмещения. Это увеличивает нагрузку, снижает продуктивность сотрудника, и не всегда можно организовать
Предполагает практику: после обучения сотрудник должен применить полученные знания — это требует времени
Нюансы внутренних онлайн-курсов
Часто состоят из слишком обобщённого материала
«Грешат» примерами, оторванными от реальной жизни
Не предусматривают обратной связи
Дают опыт в частной ситуации, не закрывая весь спектр потребностей

Из проведённых исследований мы знаем, что обучение на рабочих задачах — это 70% полученных знаний, ещё 20% — от общения с коллегами. И всего 10% знаний человек выносит с курсов.
Таким образом сотрудник, прошедший курсы у «COMPANYNAME», получит в лучшем случае 10% знаний, которые при этом надо научиться применять на практике в компании.
Мы же хотели обучающую модель, при которой получали бы опытных сотрудников, готовых выполнять задачи на наших инструментах сразу, без адаптации. В итоге создали корпоративную школу автоматизированного тестирования (далее — Школа АТ), которая уже третий год обучает AQA-инженеров на практических примерах и действующих в компании фреймворках.

Как мы пришли к Школе АТ
Поводом для создания Школы стала потребность в сотрудниках, которых не было ни на рынке труда, ни внутри команды. Изначально хотели обучить несколько человек из своего подразделения и перевести их в направление АТ, закрыв потребность. Но оказалось, что у смежного подразделения аналогичные проблемы и задача. Решили объединиться.
С подключением коллег стало понятно, что запустить обучение быстро не получится, зато можно организовать его в полноценном формате. Мы составили план, получили одобрение руководства и взялись за дело.
Как выглядит обучение
Обучение длится 6 месяцев: начинается в конце марта или начале апреля и завершается в сентябре. Состоит из 2 блоков: java core и automation approach.
Так как ученики заняты рабочими задачами и обучаются «без отрыва от производства», темы даются порционно: на курс по Java Core уходит 9 недель, на курс по автоматизации — 7 недель.
По каждой теме предусмотрены домашние задания на основе рабочих задач. Сотрудник, не сдавший хотя бы одну «домашку» по java, не допускается к блоку автоматизации. Во-первых, чтобы не было ощущения обучения «для галочки», а во-вторых, чтобы ученики усвоили базу, и проблемы с пониманием происходящего и вопросы типа «почему мы тут пишем super, а тут this?» были сведены к минимуму.
Между двумя блоками есть неделя отдыха: кто всё сдал, может отдохнуть, кто не успел сдать — подобрать «хвосты». Ну и передышка для учителей, конечно.
Какие темы мы проходим
При подготовке курса мы старались рассказать о сложных вещах просто, с примерами и максимальным охватом. В итоге темы скомпоновали так.
Java core
Синтаксис языка Java
Объекты и классы. Часть 1. Методы и классы
Объекты и классы. Часть 2. Инкапсуляция
Объекты и классы. Часть 3. Static, константы и enum
Примитивы
Числа и даты
Строки
Массивы и списки
Коллекции Set, Map
Наследование
Абстрактные классы и интерфейсы
Особенности ООП в Java
Automation approach
Инфраструктура автоматизированного тестирования
Базовая структура тестов и отладка
Поиск элементов
Действия над элементами и в браузере
Проверки (assertions) — добавить AssertJ
Коллекции элементов
Дизайн-паттерн: Page Object
API тесты
Написание тестов по готовым тест-кейсам на внутреннем фреймворке
Исключения, отладка, тестирование и логирование
Как шла работа над созданием обучения
Как мы действовали
Составили план обучения и определили сроки
Определили список тем каждого блока
Подготовили материалы. Это заняло около месяца: писать текст для студентов оказалось сложнее, чем писать код для продакшена
Разместили информацию о Школе АТ во внутреннем QA-комьюнити компании
Разбили объём материала и наложили на сроки обучения. Получилось одна тема за 3 дня. Спойлер: примерили на себя и прибавили немного, но в итоге всё равно оказалось мало
Опубликовали в комьюнити информацию о наборе на скрининг
Составили план скрининга и подготовили вопросы для кандидатов
Спланировали сроки открытия и требования для успешного завершения обучения
Подготовили инструкции для студентов

Как шёл процесс
Подготовили текст материалов первого блока по Java Core, чтобы ученики могли осмыслить и выделить главные моменты, проанализировать и сделать выводы. Собрали всё в корпоративном GitLab. Ребята делали fork проекта и получали материал по текущей теме.
Материалы второго блока решили подавать в виде вебинаров. Мы хотели показать больше примеров, ждали вопросы о фрейме, его работе и нюансах процесса автоматизации. Ждали живого и горячего общения со студентами.
Важное примечание: мы требовали от студентов согласовать заявку с руководителем и предоставить согласие по почте. Сделали это для того, чтобы руководитель мог распределить время студента на его рабочие задачи и обучение, а также понимал, что его нужно привлекать к решению соответствующих задач.
После подготовки материалов и публикации новости о старте проекта в комьюнити мы начали готовиться принимать заявки. Из-за ограниченности ресурсов «переварить» большое количество студентов мы не могли и приняли решение ввести скрининг-интервью, чтобы выбрать самых заинтересованных и активных. Опубликовали в комьюнити входные требования — темы, по которым будем проводить скрининг с кандидатами. Они были простыми:
общие понятия автоматизации тестирования и критерии её целесообразности
принципы ООП в Java
JVM, JRE, JDK
типы данных, используемые в Java
методы и классы в Java
условные операторы/циклы в Java
коллекции и массивы в Java
Подготовили билеты с двумя темами в каждом. Попросили изучить темы настолько глубоко, насколько кандидаты способны. Билеты доставались в случайном порядке, общение длилось 15—20 минут от простого к сложному.
Идеальный студент |
Неидеальный студент |
Глубоко покопался во всех темах |
Поверхностно пробежал по первым ссылкам в гугле, или помнит что-то из курсов, которые проходил 5 лет назад |
Может ответить на вопросы, пусть и не идеально |
Почти нигде не может внятно ответить |
Не путает JDM и JDК |
JDK — это что-то на японском |
Может путаться в сложных вопросах, но примерно понимает, о чём говорит |
Плохо понимает, о чём говорит |
На первый скрининг пришло более 80 человек. Из них до курсов дошёл только 21. Так мы оценили наши возможности: 5 учителей, 10 вебинаров + домашки, которые надо проверять по 22 темам.
Первый поток: блин комом
Что мы получили на первом потоке
12 текстовых материалов по java core в GitLab, разделённых на темы, которые открываются каждые 3 дня в ручном режиме куратором обучения
10 вебинаров на каждую тему из второго блока automation approach
Домашние задания, которое студенты делают самостоятельно, а эксперты самостоятельно проверяют
Телеграмм-бот для информирования о готовности ДЗ к сдаче. В нём каждый студент отмечал, какую тему из какого блока подготовил к сдаче, а экспертам приходило уведомление, что работа готова к проверке

5. 21 студент начал обучение → 13 получили сертификаты: конверсия 62%

Проблемы, с которыми столкнулись
Баги в боте. Его писали в конце, и работал он не всегда стабильно
Некоторые студенты делали ДЗ быстро, но им приходилось ждать открытия следующей темы со всеми студентами. Особенно это ощущалось на старте
Проверка ДЗ отнимала у экспертов кучу времени
Вебинары — боль первого потока. На их подготовку уходило много времени, проводить вживую было сложно. При этом студенты слабо участвовали в обсуждении и задавали мало вопросов
Второй поток. Работа над ошибками
Коллеги активно интересовались, когда будет новый набор в Школу АТ. Мы провели работу над ошибками и запустили второй поток.
Повторили все шаги подготовки в первому потоку. Вебинары заменили видео-лекциями. В конце каждого блока поставили вебинар для разбора проблемных мест в ДЗ — участвовать можно было по желанию.
На первом потоке мы столкнулись с проблемой: ученики не всегда с первого раза правильно делали домашнее задание и его приходилось переделывать, пересдавать и перепроверять. Нагрузка на всех.
Эту проблему решили автоматизацией — реализовали автоматическую проверку ДЗ по некоторым темам: если сделано верно, то доступ к следующей теме открывается автоматом. Так же решили проблему, при которой студент терял время, если справился быстро, и успешно сдал ДЗ: теперь он мог сам перейти к изучению следующей темы.
Процесс выглядит так:
создать мерж-реквест со своим ДЗ в ранее созданном для каждого студента рабочем пространстве в GitLab
подождать 5 минут, когда pipeline станет зелёным
смержить ветку
подождать 5 минут, пока откроется лекция
обновить ветку develop (update project или pull)
перейти к изучению новой темы
Это в разы снизило нагрузку на учителей и повысило вовлечённость студентов в работу с GitLab.
Обратная связь показала, что студенты хотят общения, но не публичного. Мы разделили студентов по группам, к каждой группе прикрепили наставника, который был на связи со своими студентами в отдельном телеграм-чате. Это повысило активность: студенты перестали стесняться незнания и начали активнее задавать вопросы.
Во втором потоке у нас было то же количество студентов — 21 человек. Но на выходе — уже 16 дипломированных автоматизаторов. 76%, а это на 14% больше, чем в первом потоке! Неплохо, учитывая что мы прилично снизили нагрузку на учителей.
Что в итоге

Как я писал выше, мы хотели обучающую модель, при которой получали бы опытных сотрудников, готовых выполнять задачи на наших инструментах сразу, без адаптации. Получилось ли создать такую модель?
Перед тем как ответить, приведу статистику по итогам опроса выпускников обоих потоков.
Статистика
100% считают пройденный курс полезным. Даже если по разным причинам не получилось стать автоматизаторами, школа помогла понять процессы автоматизации и расширить горизонт профессиональных знаний
Примерно 80% выпускников связали дальнейшую профессиональную карьеру с автоматизацией — автоматизатор или fullstack-инженер, использующий автоматизацию в своём проекте
20% выпускников не смогли перейти в роль автоматизатора на текущих проектах, но стремятся это сделать
85% выпускников используют полученные знания в своей профессиональной деятельности, автоматизируя либо тест-кейсы, либо процессы подготовки к тестированию, либо вспомогательные процессы
|
1й поток |
2й поток |
|
1. Был ли полезен курс Школы автоматизации? |
Да |
100% |
100% |
Нет |
0% |
0% |
|
2. Смог(ла) ли ты стать автоматизатором после прохождения школы? |
Да |
80% |
78% |
Нет |
20% |
22% |
|
3. Использовал(а) ли навыки, полученные в школе автоматизации? |
Да |
70% |
100% |
Нет |
30% |
0% |
|
Всего на опрос откликнулись 19 выпускников. Вот что они говорят:
«Курс был очень полезен, много практики, к концу курса уже писала тесты очень уверенно, куратор по выпускной работе тоже это отметил»
«Очень полезен. Благодаря курсу многие вещи улеглись по полочкам»
«Был полезен, я теперь читаю код правок бэкенда, это помогает понять, что и как было доработано и спрогнозировать проверки точнее»
«Я сейчас не чистый автоматизатор, я 50% на 50%, то ручным занимаюсь тестированием, то пишу автотесты на новый функционал после ручного тестирования»
«Курс был полезен. В команде сопровождаю старые автотесты. Написал автотесты на новый сервис»
«Автоматизирую свои ежедневные рутинные задачи, связанные с UI. Делал это до курсов и продолжаю после. Я не сменил профессию с QA на программиста в автотестировании»
В итоге мы смогли решить поставленную задачу: большинство выпускников успешно влились в процессы автоматизации тестирования и развивают их на своих проектах. В разных отделах компании начала развиваться практика автоматизации тестирования, сократились затраты на тестирование и повысилось качество продукта.
Это точно нужно?
Ответ однозначный: такие школы внутреннего обучения нужны.
Обучение сотрудников для компании — это:
полезный инструмент подготовки кадров по востребованным направлениям
инструмент привлечения сотрудников: все больше кандидатов обращают внимание на возможности развития своих навыков внутри компании
инструмент удержания сотрудника в компании и профилактика текучки кадров
Для сотрудника обучение:
расширение профессионального горизонта знаний
повышение востребованности на рынке и внутри компании
расширение карьерных возможностей
В выигрыше обе стороны — сотрудники, удовлетворившие свои амбиции и перешедшие в AQA, и компания, которая улучшает качество своего продукта, а на длинной дистанции сокращает расходы.

Спасибо за внимание, ждём ваши вопросы в комментариях!