Kostenlos

QA Engineer

Text
Als gelesen kennzeichnen
Schriftart:Kleiner AaGrößer Aa

ОБ АВТОРЕ

В период написания этой книги я выполнял работу Software Developer in Test, разрабатывая автоматизации как для QA, так и за пределами этой области. Вдобавок к этому консультировал менеджеров от QA Lead до CEO в вопросах процессов и стратегий, а также давал рекомендации за пределами компании. Я прошел путь от QA Engineer до Head of QA в других компаниях, а собственные идеи позволили значительно повысить качество моих проектов.

Мой путь не типичен и начался с того, что в средней школе я с легкостью решал задачи по программированию для старшеклассников, при этом не имея доступа к интернету или профильным книгам. В техникуме и университете я смог доказать себе и остальным, что понимание и любопытство важнее, а главное, эффективнее запоминания. За 7 лет я получил два диплома по разработке программного обеспечения, один из них с отличием. Я писал полноценные Web и Desktop приложения, а также Backend для игр. Такой опыт позволил мне интуитивно понимать аналитику и тестирование. Для меня всегда было важно, чтобы мои небольшие детища работали хорошо. В то же время любопытство заставляло задавать вопрос “А что если?”.

К концу обучения я понял, что на данном этапе жизни мне не интересно писать приложения – это перестало приносить удовольствие. Предположив, что область QA может подойти моему мышлению, я все бросил, попробовал и оказался там, где есть сейчас, полностью довольный своим выбором. Благодаря смене деятельности я понял, что люблю качество и автоматизацию во всем, от простейших бытовых вопросов до серьезных жизненных решений. Область тестирования и управленческие позиции помогли мне раскрыть свой потенциал, и это оказало огромное влияние на всю мою жизнь.

О КНИГЕ

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

Эта книга – синергия огромного количества информации как о простых истинах, так и о сложных вещах в тестировании в русскоязычном и англоязычном мире, прошедших через мой опыт и опыт коллег. Книга не претендует на место стандарта. Хоть она и ориентирована на начинающих, я надеюсь, что опытным специалистам книга может помочь взглянуть на некоторые вещи иначе и переосмыслить существующее понимание мира тестирования.

Мне всегда не нравилось, что новичков кидают в море теории, которой не дают пояснения, не говорят, зачем что–то знать или делать. Или, наоборот, ставят в узкие рамки, которые потом кому-то придется ломать, чтобы перейти на новый уровень мастерства. И я надеюсь, что эта книга поможет новичкам в обоих случаях.

Это не энциклопедия и не всеобъемлющее практическое руководство на все случаи жизни, в котором вы могли бы найти все. Но здесь приведены примеры из реальной жизни, которые помогут создать представление о том, кто такие QA инженеры, чем они занимаются, что такое тестирование и какое оно бывает, какими документами пользуются тестировщики и в какие процессы разработки погружены.

1. КТО ТАКОЙ QA ИНЖЕНЕР

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

На обложке книги не просто так изображен паук на паутине в форме сердца. QA инженер находится прямо в гуще событий, между другими участниками разработки, и активно работает с ними бок о бок. Быстро подстраивается под любые изменения, половину которых он в состоянии спрогнозировать как возможный риск. QA инженер обязан разбираться в тестировании, а по-настоящему опытный специалист также должен иметь базовые навыки в системной аналитике, дизайне, разработке и управлении процессами. QA инженер – это паук с большим количеством лапок-навыков, сидящий на паутине, чтобы чувствовать все происходящее в команде и во всем проекте. И как любой паук, он мгновенно реагирует на любые изменения и стремительно действует.

Необходимость иметь знания не только в своей области, но и в смежных – одновременно благо и несчастье. Минус в том, что нужно многое уметь, к тому же свои навыки надо постоянно совершенствовать, иначе они устареют. Это требует больших усилий, времени, а также возможностей. Ведь лучше всего оттачивать мастерство в рабочее время на служебных проектах, а не в личное время, за которое вам не платят.

Плюс заключается в том, что, хорошо освоив эту профессию, всегда можно уйти в аналитику, дизайн, разработку, автоматизацию тестирования или разные виды менеджмента. Да, такой переход потребует немалых усилий и скорее всего будет означать кратковременное понижение заработной платы. Но опыт работы в тестировании и в целом в ИТ никуда не пропадет, а даже даст в чём-то преимущества на новом месте. В любом случае работа QA инженера предполагает развитие навыков в “T–shaped”, а этот подход в будущем даст больше возможностей в карьере. Ведь у вас со временем появятся широкие познания о смежных областях и одновременно хороший опыт своей специальности. Также существует довольно много видов QA инженеров, каждый из которых занимается своей углубленной задачей. А значит, возможно, менее болезненно будет поменять направление внутри профессии QA инженера.

Все мы можем развить свои способности, но на старте карьеры есть некоторые ключевые качества, которые очень помогут вам двигаться дальше. Если вы считаете, что не обладаете ими, то это не повод сворачивать с пути, а лишь возможность для роста.

Вот, какие личностные качества необходимы:

– Самоорганизация – вы должны уметь организовывать свою работу без посторонней помощи. Об уровне самоорганизации говорит то, насколько четко вы умеете ставить себе цели, хорошо ли планируете свое время, можете ли приоритезировать свои задачи, обладаете ли самодисциплиной. Вам понадобится этот навык, чтобы адекватно оценивать свои силы на неделю.

– Усидчивость – работа QA инженером всегда связана с ней, ведь вам придётся долго изучать что–то новое, даже если оно вам не очень интересно или вовсе нет желания это делать. Кроме того, вам должно хватать усидчивости, чтобы выполнять задачи, уже ставшие рутиной.

– Гибкость мышления – довольно важное качество, которое тоже можно тренировать. Вам придется постоянно учиться новому и подстраиваться под самые разные события, и гибкость всегда пригодится. Она проявляется в способности отойти от устоявшейся в голове информации и принять новую.

– Отсутствие токсичности – мало кто захочет работать с токсичным сотрудником, особенно если у него нет опыта в профессии. Если вам присуще это качество, то отказаться от него может быть сложно, однако самоконтроль поможет внести баланс.

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

На собеседованиях обычно проверяют, насколько вы токсичны или резки в общении, а гибкость мышления оценивают при выполнении тестовых задач. Усидчивость проверяют на испытательном сроке, однако ее отсутствие больше будет мешать вам, нежели компании. Самоорганизацию также можно проверить на испытательном сроке, но она, как и усидчивость, мешает именно вам и негативно влияет на плавность входа в профессию. Уровень чистоты письма рекрутер понимает уже по первому общению. И если в русскоязычном пространстве такой диалог проходит в приятном непринуждённом русле, то в англоязычном куда больше официальности.

Несколькими годами ранее для старта карьеры QA инженеру хватало личностных качеств, умения базово работать с компьютером и смартфонами, и знания базовой теории тестирования. В некоторых местах даже не надо было ничего знать про тестирование, так как этому учили на месте. Но время идет и все меняется. Сейчас такой набор компетенций не сильно интересует работодателей. И тут, на мой взгляд, не стоит сразу винить компании. Это результат усиления заботы о качестве выпускаемых продуктов, что, в свою очередь, требует нанимать более квалифицированных QA специалистов даже на старте их карьеры.

Обычно на старте QA инженер занят именно ручным тестированием и, на мой взгляд, он должен обладать следующими минимальными знаниями, навыками и практикой:

– Операционные системы – вы должны понимать, как установить приложение на Windows, MacOS, iOS, Android, Linux (реже) и уметь изменять настройки операционной системы на уровне обычного пользователя. В процессе работы вы наверняка будете что–то устанавливать и этот простейший навык, конечно, пригодится.

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

– SQL и базы данных – нужно понимать, что это и для чего необходимо, уметь писать простые запросы с использованием только SELECT и WHERE и применять MIN, MAX и подобные простейшие функции. Огромное количество приложений работают с базами данных и этот навык поможет вам настраивать системы и находить в них ошибки.

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

 

– HTML и CSS – нужно понимать, что это, и читать простейший код верстки. Навык поможет понять, как работают некоторые приложения и облегчит поиск ошибок в них.

– Работа приложений – общее понимание того, как работают приложения или их части, и чем они отличаются от других (Desktop, Web, Mobile, backend–часть). Временами приложения внутри устроены довольно сложно, что увеличивает вероятность ошибок. Понимание устройства приложения помогает их находить.

– Теория тестирования – вы должны хорошо знать базовую теорию (которая представлена в этой книге): что такое тестирование, в чем его суть, каким оно бывает, какие техники тест–дизайна существуют, что такое требования и т.д. Хорошее понимание теории позволяет эффективнее выполнять тестирование на практике.

– Документация тестирования – знание о том, какой она бывает, и умение ее применять. Не зная, как составлять документацию, нельзя эффективно справиться с этой задачей на практике.

– Процессы – понимание, какие процессы разработки программного обеспечения существуют, чем они абстрактно отличаются и для чего нужны. Разобравшись в этом, вы осознаете свою роль в команде и проекте, поймёте, чего ждут от вас и что вы можете ожидать от работодателя.

Знание языков программирования в список рекомендуемых навыков не входит, однако чтение простейших конструкций любого из них даст вам преимущество перед другими кандидатами. А способность написать без подсказок простой код усилит перевес. Также хорошим бонусом для вас будет понимание SQL на уровне JOIN, UNION и простых операторов.

На практике способность написать простейший код почти бесполезна для новичка. Этот навык больше говорит о вас как о кандидате, в которого не надо вкладываться временем и средствами для обучения программированию с нуля. Компании, серьёзно подходящие к набору сотрудников, отлично умеют считать деньги и риски и знают, через какое примерно время вы выйдете на окупаемость и начнете приносить условную «прибыль», в чем бы она не выражалась.

2. ГРАДАЦИИ QA ИНЖЕНЕРОВ

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

Дело в том, что сейчас QA инженер – это самый настоящий инженер со всеми вытекающими последствиями. Помимо градаций по опыту есть градации по типу программного обеспечения, по направлению тестирования и по направлению бизнеса. Индустрия стала достаточно развитой для того чтобы требовать от инженеров глубоких знаний в отдельных областях – чаще всего именно этого и ждут от сотрудников. Сейчас быть профессионалом в каждом таком ответвлении одновременно очень сложно. Ведь, помимо того, что нужно много времени на их освоение, так необходимо ещё и постоянно совершенствовать свои навыки.

На практике осваивать несколько направлений не всегда выгодно. Часть навыков (а порой внушительную их часть), которую вы приобрели на одной работе, просто не получится применить на другой, и конечно справедливо, что работодателю нет никакого интереса платить за то, что вы не можете использовать свой опыт, каким бы потрясающим он не был. Без применения и развития своих навыков вы их теряете. На практике это означает, что, если не достигнуть высот, нахождение на одном проекте более двух лет становится сомнительной идеей.

Конечно, два года – это только абстракция и все довольно индивидуально. Человеку требуется примерно год чтобы начать чувствовать себя комфортно на работе и больше не испытывать тревог. Затем у него появляется запас сил, что дает ему возможность выжать из своего рабочего места все, что можно, в вопросе прокачивания компетенций. Если делать это активно, примерно через год он достигнет предела на своей должности. Далее специалист задумывается, какой рост ему выбрать: горизонтальный, вертикальный, параллельное направление или все сразу. Вертикальный рост, из–за которого вы останетесь на проекте еще на несколько лет, вполне хороший и классический выбор. Кроме того, все проекты разнообразны, какие-то помогут практически безгранично улучшать навыки, какие-то очень быстро себя исчерпывают.

Горизонтальный рост означает, что вы расширяете свои навыки, осваивая новые технологии или другую область бизнеса, в которой применяете свой опыт. При этом количество обязанностей остается примерно таким же. Такой рост может сделать вас “специалистом с 10 руками” что, конечно, ценится, или дать более широкий выбор вакансий для следующего этапа карьеры.

Вертикальный рост это в первую очередь про увеличение количества обязанностей и ответственности. Сначала это рост ответственности за свою работу, далее – за работу других. Такой рост (до руководящих должностей), вертикальный, очень полезен, так как другие поверят, что вы действительно умеете делать то, что заявляете, не проверяя этого.

Рост в смену направления означает, что вы кардинально меняете область тестирования, оставаясь QA инженером. Можно сказать, что обычно после этого некоторая часть ваших навыков становится менее нужной, и впоследствии их уровень упадёт. Однако вы замените их новыми, не менее важными, за которые также платят и которые помогают двигаться дальше по карьерной лестнице.

Рост во все сразу или в два из описанных выше поворота тоже возможен и означает, что вы будете пытаться усидеть на нескольких стульях сразу. Это в большинстве случаев не дает глубины роста, но дает его ширину, из–за которой вы получите больше предложений о работе, решив сделать следующий шаг в своей карьере.

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

Вы наверно заметили, что я часто упоминаю слово “карьера” и это не просто так. Большинство QA инженеров строят карьеру, даже не называя ее так. Они проводят анализ имеющихся возможностей и раз за разом делают выбор. На первых этапах это не очень сложно. У большинства специалистов на старте карьеры довольно низкая зарплата. Просматривая вакансии они понимают, что достаточно потратить несколько месяцев, чтобы обучиться новому, и это откроет путь к увеличению зарплаты на ощутимый процент. Поэтому если вы не планируете всю жизнь работать за условные 500–800$ и бояться оказаться ненужным как специалист, то рекомендую временами думать о том, куда движется ваша карьера и движется ли она вообще.

Далее приведены градации инженеров и то, как они связаны с каждым отрезком вашей возможной карьеры.

2.1. Разделение по уровню опыта (по грейдам)

Заметьте, что здесь речь не о стаже, а именно о навыках, которые позволяют справляться с задачами разной сложности. Также в вакансиях можно встретить попытку разделения на Principal как в разработке, что на мой взгляд является ошибкой и говорит о непонимании сути деления специалистов.

В представленном ниже разделении по грейдам присутствует абстрактность, потому что вне зависимости от чего–либо, грейды и их общее понимание (даже в рамках одной компании) не должно меняться.

Грейды:

– Trainee – люди этого уровня способны выполнять лишь 10–15% задач, относящихся к простым, и с большими временными затратами, а их работу требуется обязательно перепроверять и исправлять.

– Junior – сотрудник, способный выполнить 40–50% задач со скоростью ниже среднего, его работа все еще требует тщательных проверок, исправлений, регулярной помощи и наставлений.

– Middle – на этом уровне специалист может самостоятельно без дополнительной помощи выполнять 80–90% всех задач, которые только можно придумать. Его скорость работы средняя или немного выше.

– Senior – тот, кто выполнит не только оставшиеся 10–20% работы с высокой скоростью, но и самостоятельно решит задачи, о которых даже Интернету ничего не известно.

В своей карьере вам необходимо как можно скорее достигнуть Middle уровня. QA инженеры этого грейда представляют костяк тестирования, который эффективно удовлетворяет большинство потребностей компаний. Поэтому при достижении такого грейда вам откроется множество вакансий и сопутствующих возможностей для дальнейшего роста.

2.2. Разделение по уровню ответственности

Здесь речь именно о степени ответственности, а не о должностях, так как на практике чаще всего инженеры полностью или частично берут на себя роль Lead, то есть специалист квалификации Middle может выполнять эту роль. Это обусловлено естественностью процесса повышения навыков.

Уровни:

– Engineer – отвечает только за качество и сроки проделанной им работы. Такой сотрудник выполняет непосредственно тестирование (ручное или автоматизированное), а также составляет сопутствующую документацию.

– Lead – отвечает за качество, сроки, планирование тестирования и выстраивание процессов внутри небольшой команды одного проекта или продукта. На этом уровне специалист все еще полностью участвует в тестировании, как и Engineer, но имеет дополнительные обязанности и, в том числе, отвечает за работу всей своей команды.

– Head – управляет работой нескольких Lead и несет ответственность за тестирование всего проекта или группы проектов. Создает и исполняет длительные стратегические планы, управляет ресурсами и длительными планами развития сотрудников. Его отличает то, что этот специалист совсем или почти не занимается обычным тестированием роли Engineer, вместо этого он сосредоточен на стратегических задачах. Хотя участвовать в процессе он, конечно, может, особенно если это касается автоматизации тестирования.

– Director – выполняет только стратегическую работу на уровне всей компании или ее крупного подразделения. Этот специалист участвует в стратегических бизнес-планах развития компании на годы вперед, берет на себя и управляет самыми высокими рисками, касаемыми обеспечения качества работы организации или подразделения.

В вакансиях можно встретить также техническую роль QA Architect, предполагающую ответственность за архитектурные решения в области автоматизации для всей компании. В предложенном перечне ее нет, потому что эту роль давно и успешно выполняют Lead или Head уровни, в зависимости от размера организации.

На практике бывает, что роль Lead выполняет инженер с грейдом Middle. Конечно, Senior справится с этой задачей лучше, но всё же ситуация абсолютно нормальная. Дело в том, что обычно в таких командах все инженеры одного уровня или же Middle оказался самым высоким грейдом в группе.