Как стать автором
Обновить
80.8
hh.ru
HR Digital

Внутреннее обучение Java для QA

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров5.5K

Всем привет! Сейчас расскажем про внутреннюю программу обучения для QA. В наших продуктовых командах все QA-инженеры пишут автотесты, для этого мы используем связку Java+Selenium. У всех разный уровень владения инструментами и опыт программирования. Чтобы выровнять уровень владения Java в командах и помочь новым сотрудникам быстрее влиться в нашу среду автотестов, в 2022 году мы решили сделать внутреннюю программу обучения, определив минимально необходимый уровень владения технологическим стеком. В статье поговорим о том, как мы создавали нашу программу, расскажем, из чего она состоит и разберем нюансы. 

Подготовка

Наша цель — получить штат специалистов с набором навыков, необходимых для выполнения своих задач. Количество QA в hh.ru на текущий момент приближается к 50, а новые команды появляются с завидной регулярность, и в них всегда нужны новые QA. Поэтому мы решили, что курс будет читаться  регулярно: раз в полгода для всех пришедших новичков за этот период. При желании к ним могут присоединиться и более опытные сотрудники, чтобы поглубже изучить интересующую тему.

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

Процесс

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

В итоге у нас получился следующий набор тем:

  1. Типы данных, условные ветвления, циклы, массивы

  2. Виды функций, области видимости, параметры, перегрузка, рекурсия 

  3. 4 принципа ООП, абстрактные классы и интерфейсы, статические члены класса, вложенные классы

  4. Иерархия исключений, try..catch..finally, throw-throws, собственные типы исключений

  5. Generics, wildcards, ограничения сверху и снизу, функциональные интерфейсы, лямбды

  6. Иерархия коллекций, list, queue, set, map, итераторы, stream api, Optional.

  7. Виды паттернов, паттерны в автотестировании

  8. Фреймворки: testng, selenium, maven, Log4j

  9. Структура проекта автотестов на hh.ru. Основные классы, пакаджи и структура тестов

  10. Разработка автотестов: общие правила написания тестов, рекомендации по их написанию и разбор типовых ошибок

  11. Basic sql: виды запросов, joins, агрегирование

  12. JDBC: сущности, создание подключения, отправка запросов, обработка запросов

  13. Интеграционные тесты: теория, выбор сервиса для тестирования, типовая структура тестов и ее кодогенерация

Формат, периодичность, материалы

Лекции проводятся онлайн, в формате созвона с демонстрацией презентации и экрана. Чтобы аудитория не скучала, по завершении мини-блока темы лектор задает небольшие задачки по материалу. Средняя продолжительность лекции в районе 1-1,5 часов. Мы остановились на таком формате, чтобы сохранить живое общение. Обучающиеся могут задавать вопросы и уточнять непонятные моменты. Занятия проводятся два раза в неделю. Такая частота позволяет оптимизировать нагрузку на сотрудников и избежать потери мотивации. Полный курс занимает 8 недель.

Поскольку за время лекции невозможно раскрыть тему полностью, каждая лекция сопровождается статьей в нашей wiki. Статьи состоят из презентации, используемой во время лекции, текстового сопровождения презентации и ссылок на справочные материалы. В качестве базы мы выбрали великого и ужасного Шилдта. Ему на помощь привлекаем мощь всего интернета, начиная с официальной документации и заканчивая материалами с Хабра и внутренней wiki. 

Примеры домашек

Первые несколько домашек ориентированы на понимание базового синтаксиса Java и состоят в основном из математических задачек. Внезапно оказалось, что именно математика вызывает наибольшие затруднения — приходится гуглить и вспоминать школьный курс математики. Но есть ощущение, что математика здорово бустит мозг перед написанием кода. Мы считаем, что решение математической задачи перед ее реализацией в коде служит разогревающим процессом перед выполнением основной задачи. Мозг переходит в “режим берсерка” и процесс написания кода идет легче. Для примера приводим пару заданий из домашки по первой теме: 

Задачка 1

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

  • для чисел, больше 500, - переставляет местами числа единиц и сотен (вместо 672 - 276);

  • в остальных числах переставляются местами числа десятков и единиц (вместо 363 - 336).

Задачка 2

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

  • количество людей, вошедших в лифт; 

  • их общий вес; 

  • причина, по которой прекращен вход людей в лифт.

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

Результаты

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

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

Теги:
Хабы:
Всего голосов 9: ↑7 и ↓2+5
Комментарии0

Публикации

Информация

Сайт
hh.ru
Дата регистрации
Дата основания
Численность
501–1 000 человек
Местоположение
Россия