Привет, Хабр! Меня зовут Виктор Медведев, я — автор курсов «Автоматизация тестирования на Java» и «Автоматизация тестирования на Python» в Яндекс Практикуме и уже восемь лет работаю инженером в тестировании. В реальное айти на позицию ручного тестировщика пришел из инженерной области, где в том числе занимался программированием. Работая ручным тестировщиком, постепенно изучал автоматизацию и перешёл на позицию автоматизатора, затем руководил направлением автоматизированного тестирования, а сейчас руковожу отделом тестирования. В этой роли я не только занимался автоматизацией, но и набирал команды с нуля, строил процессы и инфраструктуру.
В этой статье расскажу:
какие компетенции сейчас востребованы рынком;
чем отличается работа тестировщика в России и за границей;
почему автоматизация тестирования — это необходимый сейчас навык;
какие требования предъявляются джуну и мидлу в автоматизации.
Автоматизатор как один из путей развития тестировщика
Какие варианты карьерного продвижения начинающего специалиста по ручному тестированию существуют:
TestOps, то есть ответственный именно за инфраструктуру тестирования;
тест-менеджеры, лиды команд;
тест-архитекторы и т.п.;
автоматизатор.
Как видите, направлений движения довольно много. Но сегодня мы поговорим про переход в автоматизированное тестирование. Несправедливо полагать, что специалист по ручному тестированию — это плохой автоматизатор. И наоборот, если человек умеет писать автотесты, это ещё не значит, что это хороший тестировщик. «Ручной» тестировщик может превосходить по своей квалификации автоматизатора, или они могут работать параллельно.
Что даёт автоматизация бизнесу:
ускоряет и удешевляет тестирование. Компьютер может работать быстрее человека, выполняет задачи в том числе по ночам, если нужно — в режиме 24/7;
повышает эффективность работы тестировщиков. Когда тестировщики умеют покрывать код автотестами или даже с нуля писать пет-проекты, то лучше разбираются в коде. В таком случае легче находить ошибки — знаешь, где их искать.
Если специалист выбирает путь автоматизатора тестирования, как правило, он может претендовать на более высокие зарплаты и для него шире возможности карьерного роста — как горизонтального, так и вертикального. Проще стать руководителем отдела тестирования, если знаешь, как работает автоматизация. Проще перейти в разработку или DevOps.
Если говорить именно об автоматизации, то тестировщику в первую очередь нужно освоить язык программирования на хорошем уровне. Выбор технологий больше зависит от того, что автоматизируется в компании — тесты Web-интерфейса, API, юниты, тесты мобильного приложения или всё вместе.
Для того чтобы писать автотесты, нужно понимать, как их писать. Изучив язык программирования, специалист осваивает какой-нибудь фреймворк автоматизации — в зависимости от того, что именно нужно тестировать. Чтобы делать эту работу хорошо, нужно понимание архитектуры мобильных или веб-приложений. Этого хватит для входа в профессию.
Какие навыки нужны автоматизатору тестирования
Хардскилы для автоматизированного тестирования не сильно отличаются от навыков разработчика.
Умение писать хороший код и выстраивать взаимодействие с другими специалистами на проекте. В моём случае прибавились навыки тестировщика, полученные во время работы в ручном тестировании, и получилось комбо: уметь писать правильный код и хорошо его тестировать.
Знать инструментарий под конкретную область автоматизации. Вот несколько сфер, где в основном работают автоматизаторы:
бэкенд-тесты и API-тесты. Чтобы тестировать бэкенд, важно более глубокое знание программирования, а не только синтаксиса кода. Хорошие специалисты могут построить Dependency Injection, прокинуть конфигурацию. Пригодится понимание, как мобильная разработка взаимодействует с бэкенд-разработкой, как можно мокать бэкенд;
тесты на веб-интерфейсы;
тесты для мобильных приложений.
Какие именно инструменты понадобятся, зависит от выбранной сферы.
Владеть знаниями архитектуры. Например, для автоматизации тестирования мобильных приложений понадобится знать их архитектуру.
Знать фреймворки. Например, JUnit, который позволит писать автотесты на Java, Selenium поможет с тестами Web-интерфейсов или Appium позволит автоматизировать тесты мобильных устройств. Самый популярный фреймворк для автоматизации UI — Selenium, для работы с ним нужно знать такие архитектурные решения, как, например, Page Object. Будут полезными Selenium Grid, Selenide и всё из этого семейства.
Знать принципы работы Kubernetes и Docker. Kubernetes и Docker — сейчас одни из самых распространённых инструментов, используемых при разворачивании сервисов.
Уметь пользоваться IDE. Современные IDE помогают писать код намного быстрее, качественнее и сами могут найти многие ошибки
Уметь работать с системой контроля версий, например Git. Ведь без него можно работать над проектом только в одиночку. Git же делает возможной командную работу над кодом проекта.
Уметь работать с CI-системой. Можно выбрать Jenkins, GitLab или что-то другое с общими с Git принципами работы.
Развивать soft skills. Это необходимо не только и не столько автоматизаторам. Но большая часть работы тестировщика — это работа с людьми, и от того, насколько хорошо он может выстроить общение, зависит работа всей команды. Даже если коллега где-то неправ, нужно найти с ним общий язык.
Знать, как работают и строятся большие проекты. Даже разработчики могут не иметь общего видения. А в тестировании важно понимать, как всё реализовано технически и как разные части взаимодействуют с инфраструктурой.
Уметь собирать информацию и систематизировать её — то, что помогло мне в карьере. Приходилось разбираться в абсолютно разных вещах — от узких аспектов языка программирования до особенностей формирования банковских платежей. Как и везде в IT, в тестировании из софтскилов чаще всего требуется этот навык.
Как видите, требований много. Но не стоит пугаться. Компания при найме джуна понимает, что у него нет большого коммерческого опыта. При поиске человека на позицию джуна-автоматизатора больше обращают внимание на коммуникативные навыки, знание теории, языка программирования и желание обучаться.
Джун должен понимать, что такое API, веб, мобильная разработка и прочее — в зависимости от того, что он будет автоматизировать. Хорошо, если он обладает знаниями теоретических паттернов, подходов. Ведь от джуна ожидают знания теории, но понимают, что он мало применял её на практике.
Мидл уже может решать задачи по автоматизации самостоятельно. Его не нужно менторить, потому что у него набита рука. Но мидлы пока не могут ставить задачи самостоятельно — это отличает их от синьоров. И если возникают нетривиальные задачи, мидл не может решить их самостоятельно, по крайней мере достаточно быстро.
Автоматизатору тестирования легче релоцироваться
Работа тестировщика в России и за рубежом очень схожа. Немногочисленные различия больше касаются софтскилов, чем технических навыков. Например, для работы в международной команде нужно хорошо знать английский. В остальном — методология похожа, применяются одни и те же технологии.
Как за рубежом, так и в России легче найти работу в том случае, если человек обладает знаниями и навыками по автоматизации тестирования. Большинство вакансий для тестировщиков с релокацией — позиции специалиста по автоматизированному тестированию. Кандидатов на позицию ручного тестировщика проще и дешевле найти у себя в стране.
Меня работа за рубежом нашла сама. В тот момент как раз закрывался проект, в котором я работал, и я искал новые возможности для себя и команды. Мне позвонили и предложили позицию. После обсуждения я согласился — это был не первый вариант работы, но зато самый интересный. Получить подобное предложение не так уж и сложно, если имеешь хороший бэкграунд и отразил в резюме опыт и навыки.
Если хочешь найти работу с релокацией, стоит поработать над правильностью перевода своего резюме и создать профиль в LinkedIn. Я заметил, что в нашей традиции — писать резюме очень сжато, указывать только те технологии, с которыми плотно работал специалист. Получается несколько страниц, прочтя которые нанимающий специалист принимает решение. В Европе чаще описывают свой опыт подробно, включая технологии, которые специалист «потрогал» один раз или вообще видел по телевизору ???? В моей практике встречались даже двадцатистраничные резюме.
Начинающим тестировщикам нужно хорошо разбираться в коде
Тем, кто только начинает путь в тестировании, рекомендую:
Хорошо разобраться в коде и как следует выучить язык программирования. Чтобы лучше проходить собеседования, рекомендую потренироваться в решении типовых задач из собеседований. Их можно найти на LeetCode или других площадках и отобрать в зависимости от того, в какую компанию вы хотите попасть;
Понимать, как устроено приложение — что такое фронтенд, бэкенд, как они взаимодействуют, что такое микросервис и т.д. То есть разобраться в магии работы приложения «под капотом». Чаще всего кандидатов спрашивают, как работает классическое мобильное приложение. Ответ не так прост, как кажется: «С UI летит запрос на бэкенд, а дальше — магия». Научитесь подробно рассказывать, что происходит в конкретный момент. Где синхронное, а где асинхронное взаимодействие и т. д.;
Разобраться в процессах, получив опыт на российском рынке. Прежде чем выйти на глобальный рынок труда, сначала нужно приобрести опыт в российской компании, ведь здесь не будет языкового барьера. Во время этого придёт понимание, как в принципе устроены процессы в IT. Вы привыкнете к Agile, Scrum, Kanban и прочим технологиям. Это пригодится в работе на Западе, потому что там делают особенный упор на процессы.