Считается, что в IT легче всего войти через тестирование. QA-инженеры являются одной из самых многочисленных специальностей в сфере информационных технологий. Ведь без тестировщиков не обходится ни одна команда разработки. Однако такая ли это простая профессия и что, на самом деле скрывается, за видимой возможностью «войти в ИТ»? Поговорили об этом и не только с Евгением Крецу, QA Manager-ом компании IDF Technology.
- Женя, а как бы ты описал работу тестировщика?
- QA-инженер – специалист, который занимается проверкой соответствия функций программного обеспечения (ПО) описанным требованиям. Проще говоря, выявляет ошибки и сбои программы, к которым они ведут. Каждый из нас огорчается сталкиваясь с нерабочим функционалам интернет-магазинов, и различных порталов. Так вот именно тестирование позволяет сделать приложение качественнее и надежнее, избавить нас от негативного опыта.
«Во многом уровень QA определяется умением “раскрывать” сложные и неочевидные дефекты».
В работе QA можно выделять три основных этапа:
- Анализ и подготовка. Специалист вычитывает документацию, задает вопросы, уточняет технические тонкости и готовит тестовую документацию - своеобразный план, на основании которого будет проводиться тестирование.
- Тестирование. Начинаем шаг за шагом выполнять проверки согласно документации, подготовленной на предыдущем этапе. Часто напоминает сценарии, действия реальных пользователей.
- Фиксация/исследование ошибок. Эта работа неразрывно связана с тестированием, потому как часто в ходе проверок мы натыкаемся на дефекты (баги), которые необходимо не только описывать, но и, по возможности, исследовать - то есть определить причину, нюансы возникновения. Такое исследование позволит быстро и качественно исправить проблему.
Пожалуй, последний пункт - наиболее интересный, но одновременно сложный в нашей работе.
В ходе своих проверок QA руководствуется технической документацией, здравым смыслом и порой устоявшимися практиками в мире разработки. К примеру, что иконка «корзины» ведет к странице со списком ваших товаров, а главное меню вверху страницы в виде строки - типовое решение, которое широко применяют все.
- Тестировщик ПО и QA Engineer: в чем разница? Часто ли работодатели путают эти понятия и стоит ли тестировщику обращать внимание на вакансии вроде Automation QA Engineer?
- Если рассматривать канонически понятия, то «тестировщик» - это специалист, который проверяет, что приложение работает без ошибок и сбоев, а функции и поведение соответствуют технической документации. Он выявляет ошибки и не дает им попасть в релиз и «добраться» до конечного пользователя.
QA Engineer работает с процессом разработки ПО в целом. Анализирует и выявляет узкие места проекта, процессы, которые работают неэффективно или не работают вовсе - все то, что в конечном итоге приводит к ошибкам в коде, долгим исправлениям, несоблюдению сроков и прочим глобальным проблемам проекта или продукта.
«Тестировщик призван выявлять и способствовать исправлению существующих ошибок в то время как QA Engineer работает, чтобы предотвратить появление ошибок в принципе».
В нашей реальности эти понятия часто смешиваются и четкой границы нет. Выделю несколько причин:
- обе специальности ассоциируются именно с тестированием и выявлением дефектов,
- принято, что QC (quality control) является составной частью QA (quality assurance).
QA Engineer - сложная и многоуровневая работа. Как правило, QA Engineer совмещает в себе обязанности тестировщика и активности, связанные с процессами проекта. Стоит отметить, что с ростом опыта и квалификации фокус смещается в сторону процессов. К примеру, лиды и руководители отделов фактически представляют из себя классический образ QA Engineer - человек, работающий с качеством процессов.
Automation QA Engineer - интересная история. Есть примеры (вакансии), когда это становится дополнительным навыком. То есть специалист может проводить как ручное тестирование и сопряженные работы, так и автоматизировать часть своих проверок. С другой стороны, есть примеры, где автоматизация - это отдельное направление и специалист занимается исключительно написание автотестов (кода), их поддержкой и улучшением. Автоматизация требует понимания принципов ООП (объектно-ориентированного программирования) плюс паттернов самой автоматизации и, конечно же, знания языка программирования.
- Тогда чем отличается ручное тестирование от автоматического?
- На самом деле всем. Если не считать, что в обоих случаях мы что-то проверяем. Выделю два ключевых момента: кто/что выполняет тест и предмет тестирования.
Как понятно из названия, ручное тестирование всегда делает человек согласно некого плана. Это не означает что все строго вручную, т.е. хороший QA использует инструменты (программы) в своей работе. Но именно человек проходит шаги теста и анализирует его результат. В то время как автоматизированные тесты выполняются неким софтом. Фактически программа тестируется программой. Анализ результатов теста также сравнивается программой согласно заложенных критериев.
«У двух видов тестирования разные сферы применения».
Ручные тесты применяются при тестировании нового функционала разной сложности. В то время как автоматизированные тесты фокусируются на регрессионных проверках, то есть проверках существующих функции приложения - того, что может, но не должно «сломаться» в ходе реализации новых модулей приложения.
- Почему тестирование считается одним из самых популярных направлений для входа в IT?
- На мой взгляд, за счет низкого порога вхождения в специальность. Для того, чтобы начать карьеру, не требуется глубоких и всесторонних технических знаний. На первых порах хватает базовой теории тестирования, то есть понимания подходов, практик построения проверок. И технического бэкграунда на уровне современного пользователя ПК.
- Тогда насколько легко, на твой взгляд, попасть в ИТ через тестирование? Кто чаще всего становится тестировщиком?
- Как говорил ранее, тестирование дает возможность относительно просто начать свою карьеру. Насколько простым или сложным будет этот путь, зависит от бэкграунда и набора персональных качеств человека. Простые примеры: самодисциплина и упорство не дадут вам сойти с дистанции, особенно на первых порах. Логическое мышление и аналитический ум помогут справится с большим потоком информации, а ее будет много всегда. Знакомы с программированием? Отлично! Появится глубина понимания приложения и его проблем.
«В специальность приходят абсолютно разные люди - от историков до бывших предпринимателей. Пол, возраст и “прошлое” у всех разное. Но всех объединяет желание работать в востребованной и хорошо оплачиваемой отрасли».
- В таком случае нужно ли тестировщику профильное образование? И как относятся к выпускникам IT-курсов, претендующих на должность?
- Я убежден, что профильное или техническое образования является важной базой для качественного профессионального роста. Разработка ПО – это, прежде всего, техническая сфера. Здесь главенствует логика, алгоритмы, математика, в конце концов.
«Образование», конечно, не будет работать, учиться и развиваться за вас. Но это тот самый бэкграунд, о котором я говорил выше. Это то, что позволит добиться большего при прочих равных, быстрее адаптироваться.
Выпускники курсов - это норма для рынка IT в нашей стране. Но не название курсов определяет успех соискателя. Хватает примеров, когда люди занимаются самообразованием или работают с ментором, после чего успешно проходят собеседование. Усердие, умение быстро учиться, «гибкость» определяют успех на первых порах.
«Собеседование проходит человек, а не его резюме или “корочка”».
- Как ты считаешь, какие soft/hard skills необходимы для работы на данной должности?
- Во-первых, отмечу что для QA большое значение имеют soft skills. Мы много общаемся с разными людьми из разных специальностей, потому как тестирование пронизывает все этапы разработки и завершает его. Кроме общения внутри команды со всеми участниками процесса разработки не стоит забывать про общение с «внешним» миром - это заказчики, партнеры-вендоры (интегрированные сервисы), порой даже конечные пользователи. Умение находить подход, грамотно строить диалог, доносить мысль и формулировать правильные вопросы - наш хлеб.
Из soft skills отмечу терпение, добросовестность, открытость и коммуникабельность, умение лаконично выражать мысль, чувство такта. Также важны самоорганизованность и некоторая педантичность, ведь QA - это «порядок» в голове, в коде, в проекте.
Из hard skills выделю логику, аналитическое мышление, умение обрабатывать информацию (структурировать, агрегировать, декомпозировать) и все технические знания из области программирования, баз данных, сетей и передачи данных
- А нужен ли тестировщику английский язык? Другие иностранные языки?
- Английский язык нужен. Это не так критично, если вы работаете на русскоязычном проекте. Но даже здесь остается тот факт, что большая часть качественной информации для изучения - на английском языке. Сертификация также проходит на английском. В целом, ничего удивительно - это интернациональный бизнес-язык.
Другие языки - это уже экзотика и часто диктуется особенностями проекта.
- Какие карьерные перспективы есть у тестировщика, куда можно расти дальше?
- Специальность дает два основных пути развития: горизонтальный и вертикальный. Горизонтальный - это кардинальная смена специальности. Можно переквалифицироваться в разработчика, аналитика или системного администратора.
Важно понимать, что такой переход должен быть взвешенным решением и подразумевает наличие соответствующего бэкграунда (дополнительного обучения).
Кто-то уже на старте понимает, что,к примеру, у него есть задатки разработчика, но в моменте верным решением будет начать свой путь из QA. Другие, поработав несколько лет и разобравшись как все устроено, осознают, что хотят и могут перейти в другой домен. Справедливости ради есть обратные примеры, когда из разработки или бизнес-анализа переходят в QA.
Вертикальный - это углубление в специфические домены тестирования (Security Testing, Usability Testing), техническая специализация (Performance Testing, UI\API Automation, менеджмент (QA Lead / Manager).
- Какими советами ты бы поделился с теми, кто хочет стать тестировщиком? Что стоит включить в резюме? Что могут спросить на собеседовании на эту должность?
- На мой взгляд, важно усердно учиться и не опускать руки в моменты неудач. Советую всегда делать больше, чем дают на курсах, лезть и разбираться с каждым непонятным словом, развиваться технически. Не советую бросаться на все и сразу, важно быть поступательным в «прокачке» навыков, изучении новой информации. Старайтесь получить реальный практический опыт: любая работа даже «за даром», фриланс, Crowd Testing - что угодно. Советую работать над софт скилами - как уже разобрались, это большой кусок работы QA. А еще важно быть командным игроком. Разработку всегда ведет команда. Это значит, что всегда есть человек, который поможет и подскажет. С другой стороны, безответственность одного легко может сказаться на общем результате.
Что касается резюме, по правде сказать, CV джуниор-специалистов очень похожи, потому как все кандидаты примерно на одном уровне. Но я бы посоветовал делать акцент на опыте реального тестирования, если таковой есть. Обязательно расписать технический бэкграунд, если таковой есть. Не лишним будет упомянуть о предыдущем опыте работы, если это имеет отношении к технической или непосредственно к IT-сфере. О себе стоит написать кратко и лаконично - здесь можно проявить немного творчества и выгодно себя показать. И в финале обязательно проверьте резюме на ошибки, соблюдение структуры и последовательности, ведь вы - будущий QA.
И, наконец, будьте готовы, что на собеседовании у вас, прежде всего, спросят теорию тестирования. Нужно хорошо разобраться и уверенно ориентироваться. Иногда включают логические задачки или небольшие практические задания в духе: «В приложении случилось вот это и это. Как будешь разбираться?» Могут «погонять» по базовому SQL, а также проверить знания иностранного языка.
Горячие темы