Команда Яндекс Практикума изучила требования работодателей к инженерам по автоматизации тестирования. Рассказываем о том, что чаще используют для автоматизации — Java или Python, есть ли разделение внутри профессии на тех, кто пишет автотесты только на бэк или только на UI, и о других наблюдениях.
Как проводили исследование
В подготовке исследования мы использовали три метода:
Парсинг вакансий с hh.ru. Делаем его ежемесячно для всех профессий направления «Программирование». Статистика для специалистов по автоматизации тестирования ведётся общая для Java и Python, потому что язык не всегда указан в названии вакансии.
В среднем каждый месяц открыты от 400 вакансий для автоматизаторов тестирования. Из них стабильно более 10 — для джунов без опыта.
Чаще всего в вакансиях упомянуты документация, Java, QA, SQL, Python и тестирование. Также во многих описаниях указана юнит-экономика: вероятно, речь идет о фреймворке JUnit, некорректно записанном то ли эйчарами, то ли самим hh.ru.
Интервью с работодателями — техническими специалистами. Опросили 9 человек — лидов, руководителей направлений и т. д., из крупных компаний с более чем 1000 сотрудников, и 6 — из средних и малых компаний. Подробнее о результатах читайте ниже.
Интервью с выпускниками Практикума, нашедшими работу в последние два года. Опросили 11 выпускников: 10 Java и 1 Python.
Что должен сразу знать и уметь инженер по автоматизации тестирования
Различия в скилсете в основном основаны на проектах и специфике работы конкретной компании. При этом все работодатели сказали, что конкретный инструмент можно научиться использовать уже в процессе работы: «не нужен ходячий учебник, нужен думающий человек».
На первом месте в списке необходимых «жестких навыков», разумеется, язык программирования, который нужен для автоматизации. При этом собственно выбор языка зависит от продукта и может поменяться в процессе работы. Собеседование со специалистом могут провести так, как удобно ему, но нанять после этого — с обещанием выучить конкретный язык.
В любом случае от кандидата ожидают знаний базового синтаксиса и опыта объектно‑ориентированного программирования:
определение переменных (правила написания названия переменных/функций), массивов;
основные языковые конструкции (циклы, замыкание, логические выражения, переборы, обходы);
функции (функции обработки if else, использование case);
подключение библиотек: джун должен хотя бы понимать, какую библиотеку подключить;
принципы SOLID;
типы данных.
В числе других хардскилов, которые будут преимуществом:
Среда разработки.
Браузер (консоль) и инструмент разработчика Dev tools.
Git.
Любой фреймворк для автоматизации.
Заглушки (WireMock или MockServer).
Понимание многопоточности и асинхронности.
SQL: знание операторов на базовом уровне.
POSTMAN.
REST.
Снифферы трафика.
При этом разницы в требованиях у нанимающей большой, средней или малой компании не будет. И те и другие ждут уже с уровня джуна умения собирать требования для автоматизации, понимания, как тестировать и какие нужны данные. Мидл‑специалисты также должны уметь работать по методологии CI/CD и пользоваться платформой Docker.
Как компании нанимают и что будет нужно делать в первые месяцы работы
У каждой компании процесс найма свой, но в целом разделить его можно на три этапа:
1. Отбор резюме. Чаще всего HR-компании ищут их через hh.ru, LinkedIn, Хабр, телеграм-каналы или с помощью партнёров: стажёрские программы в университетах, сотрудничество с онлайн-школами. В крупных компаниях также бывают реферальные программы.
На этом этапе самое важное — опыт работы кандидата, то, как он описывает этот опыт, и соответствие резюме конкретной вакансии. Почти все работодатели признали, что кандидатов без опыта на этом этапе, скорее всего, отсеют, если только речь не идёт про стажёрские программы.
2. Техническое собеседование. Единых шаблонов для него нет, вопросы обычно зависят от позиции, на которую нанимают, а также от компании, проекта или продукта.
Чаще всего спрашивают про:
знание основ тестирования и тест-дизайна,
принципы ООП и знание языка (лайвкодинг и/или могут попросить построчно рассказать, как код работает, что делается на каждой строчке),
SQL и вопросы по базам данных,
умение работать с Git.
Чаще всего отсев происходит именно здесь, из-за слабого знания языка программирования или преувеличения своего опыта и уровня.
При этом мидлов расспрашивают о предыдущих местах работы гораздо больше.
3. Финальное собеседование. На этом этапе, когда сомнений в знаниях и навыках кандидата уже нет, оценивают софтскилы. Работодателю важно понять, насколько команде будет комфортно работать с новым человеком. Основные запросы — готовность общаться, вовремя просить о помощи, критическое мышление, готовность отстоять свою точку зрения и дать обратную связь.
Начинающего специалиста будут больше спрашивать о навыках общения в целом, мидла могут даже попросить разобрать конфликтную ситуацию.
Если найм прошёл успешно, последующий испытательный срок обычно длится три месяца при загрузке 40 часов в неделю.
Если нет опыта, оконченные курсы — хороший аргумент
Хотя общая тенденция — найм специалистов с опытом работы, шанс получить джун-позицию только после курсов есть. Как минимум, успешно оконченная учебная программа говорит о мотивации кандидата.
При этом работодатели отдельно оценят софтскилы: ответственных и готовых развиваться начинающих специалистов готовы нанимать, а вот у тех, кто приходит в профессию с завышенными ожиданиями относительно своего уровня, будут проблемы.
При оценке бэкграунда работодатели могут обратить внимание на:
Пет-проекты. Это явный плюс, но редкость в сфере тестирования.
Опыт работы с НКО. Его рассматривают как релевантный опыт.
Участие в хакатонах и соревнованиях. Оно говорит об умении работать в стрессовой ситуации. Отталкиваясь от этого, могут задать дополнительные вопросы о заинтересованности в сфере QA.
Кстати, в Практикуме выпускники принимают участие не только в хакатонах, но и в багатонах — соревнованиях по тестированию реального IT-проекта. В отличие от хакатона участники не работают над новыми решениями, а исправляют ошибки в готовом продукте.
Цель соревнования — найти как можно больше багов. Каждый из них имеет три степени серьёзности, каждая степень оценивается баллами — оценкой занимаются члены жюри. Побеждает та команда, которая набрала наибольшее количество баллов. За участие или победу в багатоне участники получают грамоту, которую смогут добавить в портфолио.
Высшее или профильное образование. Плюс, но не решающий фактор.
Портфолио. Редкость в сфере тестирования, но может заменить тестовое, если показывает навыки написания кода и заинтересованность в профессии.
Как выглядят команды, где работают инженеры по автоматизации тестирования
Встречаются 2 варианта:
Принцип микрокоманд / продуктовых команд. В команде продукта/проекта собраны разработчики (фронт и бэк), аналитики, QA (manual/auto), девопсы, скрам-мастера, продакт/тимлид. Состав такой команды может меняться в зависимости от продукта, проекта или компании.
QA-команда как сервисная служба.
Иногда внутри таких команд встречается разделение на ручное и автоматическое тестирование: при этом чистые «мануальщики» чуть более востребованы. Но в целом на рынке — тенденция на фулстек-тестировщиков. В ряде крупных компаний универсалами должны быть все инженеры в команде. Даже в том случае, если в процессе решения конкретной задачи понадобится разделить эти функции.
Универсализм — главная тенденция и в вопросе разделения тестов на бэк и на UI. Впрочем, во многих крупных компаниях отдельные команды по-прежнему тестируют только UI или только бэк.
Специфической областью остаётся тестирование мобильных приложений: «это отдельный продукт и чистая автоматизация… свои приколы по тестированию и по автоматизации, свой стек и свои знания».
Основные выводы
CI/CD в теории нужно знать уже даже начинающим специалистам. Мидлам — иметь практику. Docker знать в теории, практика тоже приветствуется. А вот знание и использование Cypress/Playwright — не обязательное требование.
Знание тест-дизайна, умение тестировать и собирать требования для автоматизации ожидается уже от джунов. И только теоретическими знаниями не обойтись, все смотрят на наличие хотя бы минимального опыта.
Важно понимание принципов и логики автоматизированного тестирования, а не знание конкретного языка программирования. Его выбор чаще всего основывается на предпочтениях компании и зависит от того, на чём идет разработка в рамках конкретного проекта или создания конкретного продукта.
Есть тенденция в сторону найма фулстек-специалистов: умения писать автоматизированные тесты ждут от тех, кто работал вручную. Команды часто не разделяются для тестирования в ручном и автоматическом формате.
Есть тенденция в сторону найма универсалов (бэк и UI). Мобильные приложения тестируют отдельно.
Комментарии (3)
conopus
27.03.2024 20:20+1Портфолио. Редкость в сфере тестирования, но может заменить тестовое, если показывает навыки написания кода и заинтересованность в профессии.
Увы, нет. Написал, приложение, которое делает отчеты по рынку QA вроде ваших: https://clingon.pythonanywhere.com/ . Предлагаю его в качестве альтернативы "live coding" на собеседованиях. Никто не согласился ни разу. Даже не смотрят. И по другим ссылкам в резюме не ходят, за очень редким исключением.
Многие рекрутеры не дочитывают резюме до конца. Тут правда и моя "вина" есть, все-таки 15 лет в "айтишечке". Резюме на несколько листов получается, а в трудовой книжке уже второй "вкладыш" нужен. Придется резюме укоротить, видимо. Специально для нового поколения рекрутеров.
Зато на последнем собесе предложили реализовать по-быстренькому связанный список на Python. Кто-нибудь может объяснить зачем в автотестах это может пригодиться? Вот и я не знаю...
egribanov
27.03.2024 20:20Нужно как то отсеивать накрутчиков опыта, раз они пишут, что у них 2+ лет опыта, значит сам язык они должны хорошо уже знать
dyadyaSerezha
Многие тестовые фреймворки сделаны специально так, чтобы обычные тестировщики сами могли писать тестовые сценарии. Тогда все автоматизированное тестирование делится на две части: 1) программист пишет обвязку вокруг фреймворка и по заявкам от тестировщиков разрабатывает набор шагов тестов, но сам сценарии не пишет; 2) и уже тестировщики используют разработанные шаги для написания тестовых сценариев.