что спрашивают у тестировщика на собеседовании
Как провести неидеальное собеседование тестировщика и почему идеальных не бывает
Дрейк и не знал, насколько был близок к подбору правильного тестировщика.
Рано или поздно может настать момент, когда к вам придут с просьбой найти тестировщика. Можно, конечно, почитать какую-нибудь литературу про тестирование – например, «Тестирование Дот Ком» Романа Савина. Да только, вполне возможно, кандидаты её тоже читали.
Поэтому я хочу поделиться своим взглядом на то, какие вопросы задавать и на какие качества обращать внимание при собеседовании вашего первого тестировщика.
Последние 5 лет я работаю в Яндекс.Деньгах руководителем отдела тестирования и регулярно собеседую людей на позиции тестировщиков. Приходилось проводить собеседования как по хорошо знакомым продуктам, так и по тем, про которые самому пришлось узнать за пару минут до интервью. Со временем я составил оптимальный для себя путь прохождения квеста, которым и хочу поделиться в статье.
#1 Сжигайте письма к Санте
Наверное, в деле собеседований самое важное – идти без мысли «скорее всего, это наш человек». В моей практике не раз встречались идеальные резюме, как будто специально написанные под нашу вакансию. Во-первых, они действительно могут быть просто под вас написаны, а во-вторых, в реальном общении человек может оказаться тяжелым или просто необщительным. Поэтому, если кандидат не подойдет, предварительный настрой на найм именно его будет психологически тяжело изменить.
Справедлив и вариант от обратного, когда вы заранее негативно настроены к человеку из-за слабого резюме – о собеседовании уже договорились и отменять как-то некрасиво. Если договорились пообщаться, то будьте беспристрастны.
К слову об общительности и опрятном виде – для тестировщика это важные, близкие к необходимым качества. Какой бы баг он ни обнаружил, приходится объяснять разработчикам, почему это ошибка и как ее воспроизвести – по понятным причинам делать все это нужно в благожелательном тоне. Без навыков общения тут не обойтись, потому что на резкую критику по поводу найденных багов легко получить негатив в ответ.
Это может показаться неоднозначным, но я рекомендую не заострять внимание на небольшом опоздании кандидата на собеседование, особенно если он позвонил и предупредил. Пунктуальность у инженеров не самое распространенное качество. К тому же с секундомером утром на входе все равно никто не стоит и найти офис с первого раза новому человеку не всегда просто.
Еще я не люблю популярные в наши дни стрессовые собеседования, особенно на инженерные позиции. Вы ведь не менеджера по урегулированию конфликтов ищете, а специалиста по QA. В его работе стресс связан не с конфликтами, а с уровнем ответственности за пропущенные ошибки. Поэтому в нашем деле лучше обойтись без криков на собеседовании и нарочно пролитого кофе – пусть этим занимается кто-нибудь из сферы биржевой торговли.
#2 Предложите протестировать ваш продукт
Когда нанимаешь человека на новую для себя и компании должность, непонятно, о чем вообще его спрашивать. Тут часто возникают две крайности:
%candidacy_name% должен уметь все, включая администрирование и навыки моделирования ракетных двигателей. На всякий случай.
Оба варианта одинаково ужасны и порождают массу странных и ненужных вопросов, создавая собеседующему неприглядный имидж в глазах кандидата. Проще идти от реальных обязанностей человека. Если тестировщик будет проверять новые сборки продукта и искать в них ошибки – предложите кандидату сделать именно это.
Предварительно составьте описание продукта или сервиса. Если продукт слишком большой, возьмите ту его часть, которой и будет заниматься потенциальный идеальный кандидат. Желательно при этом не подниматься до такого уровня абстракции, где будет два больших квадрата – фронтэнд или бэкенд, – дайте больше конкретики по вашей системе. Совсем замечательно, если спросите про что-то, что и сами не понимаете, как тестировать. В конце концов, не зазорно быть немного меркантильным.
Например, мы просим протестировать наш небольшой сервис под названием «Напоминатель» – письменные напоминания о том, что какой-то платеж нужно будет вот-вот совершить. Удобен он тем, что не очень понятно, как его тестировать: как получить напоминание, которое должно прийти через месяц, как проверить, что если напоминание поставлено на 31 число месяца, то в условном феврале оно придет 28, а не 29-ого.
Каждый тестировщик должен быть хоть немного и аналитиком. Поэтому на собеседованиях мы часто просим людей рассказать, как бы они сами создали продукт или сервис, который им предлагается протестировать. С тем же напоминателем просим описать, где бы хранились его записи (после этого даже самые недогадливые понимают, что там, где хранятся напоминатели, хранится и дата следующего события), какой бы механизм выбрасывал оповещения. Если вам нужен не monkey clicker, а осознающий свои поступки человек, то это хороший способ проверить его на тот самый «аналитический склад ума».
Надеюсь, что вы не будете указывать «аналитический склад ума» в требованиях к кандидату. А если указали, то не продолжайте чтение, пока не поправите объявление.
Нелишне спросить все то же самое, но про тот продукт, который тестировщик уже проверял раньше. Спросите про архитектуру, как была устроена система. В процессе задайте пару вопросов формата «а зачем вы так сделали?», чтобы человек описал хотя бы общими словами, почему он принял именно такое решение. Главное, чтобы он не пожимал плечами со словами: «я-то откуда знаю – я простой тестировщик».
#3 Проверьте, насколько он «в IT теме»
Представьте, что вас забросили на парашюте в центр Китая. Без денег и телефона, без знания языка. То же самое произойдет, если вы в свою команду приведете умного и всячески приятного в общении человека. Он и команда разработчиков просто не будут понимать друг друга, и вам придется нанимать кого-нибудь вроде героини Эми Адамс из «Прибытия», чтобы она научила нового специалиста этому непонятному птичьему языку. Ведь, помимо умения составлять правильные алгоритмы тестов, тестировщик должен общаться с разработкой и продуктовой командой на одном языке.
К такому собеседованию как раз удобно привлекать разработчиков из своей команды – разумеется, они легко «завалят» кандидата, но вы сможете оценить кругозор нового человека и его общее понимание, где он оказался. Например, банальные фразы про JIRA, Bitbucket, сертификаты и IDE могут быть наскальной азбукой для совсем новичков в профессии.
Если разработчиков почему-то не привлечь, то спросите в лоб: что такое интернет? Что мне только не отвечали на эту банальность: от «ну это сайты» и до «это то, что позволяет общаться между собой». Часто люди просто уходили глубоко в себя, а после встречи бурно возмущались, что им задают такие глупые и бесполезные вопросы.
Важно также предложить кандидату составить не особенно сложный алгоритм для какого-то действия или теста. Так вы убедитесь, что ему это не впервой и с алгоритмами он знаком. К этому навыку я еще добавляю умение быстро считать в уме. Конечно, это спорный момент, но для плодотворной работы полезно уметь посчитать выражения из кода в уме – без предварительной сборки проекта и калькулятора.
#4 О тестовых заданиях
Согласен, что тестовое задание сродни практике – позволяет лучше оценить знания. Но обычно кандидаты не горят желанием их выполнять, потому что это долго, муторно и непонятно, стоит ли игра свеч. Да и проверяющие не всегда добросовестно относятся к тесту. Например, они могут отложить проверку результатов на несколько дней (а кандидат торопился, делал) или проверять «по трафарету». Если решение вылезает за границы идеального трафарета – кандидат бракуется, что не правильно. Вы ведь помните про ход мысли и его приоритет над правильным решением?
На мой взгляд, тестовое задание в большинстве случаев не нужно, но, надо признать, есть ряд оправданных исключений:
Вы ищете не junior тестировщика, а автоматизатора, то есть уже состоявшегося специалиста со своим карьерным путем. В таком случае может оказаться проще оценить заявленное владение технологиями и проверить опыт работы.
У вас в компании высокая степень формализма при написании многочисленной документации, и нужно быть точно уверенным, что кандидат способен письменно излагать свои мысли и не страдает дислексией. Но вообще это можно проверить, дав кандидату ноутбук и попросив завести описание какого-нибудь бага.
По одной такой задаче нам как-то пришло полторы тысячи писем. На второй сотне сообщений о багах вы впадаете в дзен и перестаете реагировать на внешние раздражители. Заодно можно быстро, без регистрации и СМС научиться медитации.
#5 Что делать, когда вогоны сносят планету
Любопытное наблюдение я сделал после работы в нескольких крупных компаниях – тестировщики часто развивают свою карьеру не в сторону разработки, а в сторону проектного управления. В сущности, это неудивительно, так как в основе обеих профессий лежит навык общения с людьми. Тестировщику тоже важнее сохранять корректность и нейтралитет, чем знать пару дополнительных языков программирования.
Спросите кандидата, как он будет справляться с относительно невозможными ситуациями. Относительно – потому что не стоит спрашивать у него, что он будет делать, когда вогоны сносят его планету, и почему у него нет с собой полотенца.
Если ранжировать качества кандидатов, то на первое место я с особой помпой поставлю ум, а на второе – остроумие. Поэтому всегда спрашиваю, какие книги читал кандидат. Причем это не обязательно должны быть книги по тестированию.
Один из наших старших тестировщиков устроился в Яндекс.Деньги после письма, которое начиналось со слов: «Я ничего не знаю о тестировании, но очень хочу у вас работать». Это было три года назад, и с тех пор он сначала избавился от приставки «младший», а потом получил «старшего». Леша, привет!
Чек-лист подготовки к собеседованию на позицию ручного web-тестировщика
Самые популярные вопросы:
Какие методики тестирования Вы знаете?
модульная/компонентная: проверяет функциональность и ищет дефекты в частях приложения, которые доступны и могут быть протестированы по отдельности;
интеграционная: предназначена для проверки связи между компонентами, а также взаимодействия с различными частями системы.
системная: высокоуровневая проверка функционала всей программы или системы в целом.
приемочная: проводится на этапе сдачи готового продукта заказчику.
Именно в этом порядке программное обеспечение подвергается испытанием.
Расскажите про виды тестирования?
Все виды тестирования программного обеспечения, можно условно разделить на следующие группы:
связанные с изменениями, то есть после исправления бага/дефекта необходимо повторное тестирование, с целью убедиться, что внесенные изменения действительно решили проблему.
Что такое нагрузочное тестирование и чем отличается от стресс тестированием?
Какие бывают подходы тестирования?
Всё зависит от доступа к коду программного обеспечения.
Что такое чек-лист и как его оформлять?
Литературы по тестированию множество и вам всё не перечитать, это и не нужно! Выбирайте книгу более современную и тоньше.
Что такое web приложение? Однозначно, это клиент-серверное приложение, в котором клиент взаимодействует с веб-сервером при помощи браузера. Поэтому не избежать вопросов про сетевые протоколы взаимодействия. Могут быть общие вопросы:
Какие интернет протоколы Вам известны?
На собеседование достаточно будет рассказать про основные протоколы, углубляться в эту тему не следует. Наиболее известные протоколы:
HTTP (Hyper Text Transfer Protocol)
FTP (File Transfer Protocol)
POP3 (Post Office Protocol)
SMTP (Simple Mail Transfer Protocol)
Но основная часть вопросов будет про http и https:
Расскажите какие между ними различие?
http — протокол прикладного уровня передачи данных, изначально — в виде гипертекстовых документов в формате HTML, в настоящее время используется для передачи произвольных данных.
https — расширение протокола HTTP для поддержки шифрования в целях повышения безопасности.
Как же ответить на вопрос «в чем отличия?», ответ кроется в их определении, а именно: https не является отдельным протоколом передачи данных, а представляет собой расширение протокола http с надстройкой шифрования; передаваемые по протоколу http данные не защищены, https обеспечивает конфиденциальность информации путем ее шифрования.
Какие Вам известны методы протокола http, расскажите вкратце о каждом?
HTTP определяет множество методов запроса, которые указывают, какое желаемое действие выполнится для данного ресурса.
Метода GET в HTTP используется для получения информации от сервера. Запросы клиентов, использующие метод GET должны получать только данные и не должны никак влиять на эти данные.
Метод HEAD работает точно так же, как GET, но в ответ сервер посылает только заголовки и статусную строку без тела HTTP сообщения.
Метод POST используется для отправки данных на сервер, например, из HTML форм, которые заполняет посетитель сайта.
Метод PUT заменяет все текущие представления ресурса данными запроса.
Метод DELETE удаляет указанный ресурс.
Метод CONNECT преобразует существующее соединение в тоннель.
Метод OPTIONS используется для получения параметров текущего HTTP соединения.
Метод TRACE создает петлю, благодаря которой клиент может увидеть, что происходит с сообщением на всех узлах передачи.
Метод PATCH используется для частичного изменения ресурса.
Отвечая на этот вопрос можете перечислить только основные методы.
Расскажите о структуре http-запроса и ответа?
Не пугайтесь этого вопроса, здесь следует упомянуть только про основные части http запроса: строка запроса, заголовки, тело сообщения. Нужно обратить внимание, что между заголовками и телом сообщения находится пустая строка (в качестве разделителя), она представляет собой символ перевода строки. При получении ответного запроса от сервера, тело сообщения обычно представляет собой содержимое веб-страницы.
Для расширения кругозора рекомендую прояснить понятия «Транспортный уровень», «Уровень сети интернет», «Канальный уровень».
Основы Web-программирования
Веб-приложение — клиент-серверное приложение, в котором клиент взаимодействует с веб-сервером при помощи браузера. Поэтому вопросы на собеседовании по этой теме обязательно будут!
Почему не открывается гиперссылка?
При ответе на вопрос необходимо уточнить, что у пользователя устойчивое интернет соединение. Даны следующие вводные: пользователь заходит на популярный ресурс с новостями, нажимает на «Срочная новость!», но страница не открывается. Самый простой способ разобраться в причине, это воспользоваться браузерной консолью. Открыли консоль, выбрали элемент с гиперссылкой, и анализируем какой веб-адрес указан. Самая популярная ошибка, которую находят тестировщики, это неверно указанный веб-адрес.
Почему не соответствует цвет кнопки дизайну?
Посмотреть цвет кнопки можно аналогичным способом через браузерную панель, и сравнить кодировки цвета.
Расскажите про браузерную консоль.
Панель Elements показывает разметку страницы точно так же, как она рендерится в браузере, так же можно посмотреть, как бы выглядела открытая страница на каком-нибудь девайсе с другим расширением экрана.
Панель Network. Основная функция данной вкладки – запись сетевого журнала. Она дает представление о запрашиваемых и загружаемых ресурсах в режиме реального времени.
Панель Performance. Данная вкладка используется при необходимости полного обзора затраченного времени.
Панель Memory. Данная панель дает возможность профилировать время исполнения и использование памяти веб приложением или страницей, таким образом помогая понять где именно тратится много ресурсов и как можно оптимизировать код.
Панель Application. Предназначена для исследования загруженных элементов.
Если у вас есть основы знаний HTML, CSS, JS это будет огромным плюсом, хотя бы следует развиваться в этом направлении, чтобы стать хорошим специалистом!
Что же именно входит в основы?
А что же с API?
Сложность тестирования API (программный интерфейс приложения) заключается в отсутствии пользовательского интерфейса. Поэтому нужно настроить с необходимым набором параметров среду тестирующую API, а затем проанализировать результаты теста. Какие же вопросы могут таиться:
Чем отличается REST от SOAP протокола?
REST — это архитектурный стиль. SOAP — это формат обмена сообщениям, имеет веб-сервис WSDL с прописанными методами, которые можно удаленно вызывать.
REST работает только по HTTP/HTTPS, SOAP с любым протоколом прикладного уровня: SMPT, FTP, HTTP, HTTPS, POP3.
REST более простой, гибкий и быстрый, SOAP типизированный, но в некоторых случаях лучше визуализируется за счет применения им синтаксиса похожего на HTML разметку.
Какой формат передачи информации используется в SOAP, а какой в REST?
REST использует Json и XML, SOAP только XML.
Какие инструменты вы знаете для тестирования API?
Отвечая на этот вопрос, опирайтесь на свой опыт. Список самых популярных инструментов: SoapUI, Postman, REST-Assured, Fiddler, Karate, JMeter.
Информации по API в свободном доступе огромное количество, поэтому вы сможете разобраться в этом разделе.
Как быть с автоматизацией?
Во многих компаниях активно используется автоматическое тестирование. Часто разбором результатов прогонов и анализом занимаются ручники. Поэтому нужно иметь небольшое представление, как строится процесс автоматизации и какие инструменты используются.
Если раньше в работе сталкивались с автоматизацией, то расскажите подробнее какой использовался технический стек, как происходил разбор тестов, и какой был алгоритм действий, если автотест падал с ошибкой.
Большим плюсом будет опыт работы с GIT и с базами данных.
Собеседование тестировщика — cкользкие вопросы
Собеседование это всегда испытание. Нужно быть готовым к коварным вопросам по специальности.
Бывают некие типичные вопросы по тестированию (Postman, и т.п.), и скорее всего их тебе зададут. Но нужно быть готовым и к скользким вопросам на разные общие темы. Другие кандидаты, скорее всего, ответить хорошо не смогут, соответственно, ты получишь преимущество.
Итак, далее идут вопросы и примеры ответов. Пройдись по ним и получи понятие о том что говорить, когда у тебя спросят нечто подобное. Трудоустройство в крупной компании — стОит того чтобы немного подготовиться.
1. Тестирование производительности.
«Как будешь тестировать производительность мобильного приложения?»
Это более широкий вопрос, шире чем просто о мобильных приложениях. Его задают, чтобы понять, что ты знаешь о тестировании приложений, как десктопных так и мобильных и отличиях в подходах к тестированию. Вопрос также на знание протоколов и работе через прокси. Правильный ответ показывает, что ты имеешь понятие о чем-то более сложном, чем “прокликать”, и это понравится интервьюеру.
Как отвечать: объясни, что несмотря на то, что десктопные и веб-приложения похожи в своей функционировании с мобильными, в данном случае (тестирование производительности мобильного приложения) — понадобится прокси-сервер, и установка SSL-сертификата на мобильный девайс для «перехвата» запросов. Чтобы выделиться в глазах интервьюера, стоит упомянуть такой инструмент как MitmProxy (это анализатор трафика, почитать об этой полезней вещи можно на ее странице или лучше вот здесь на Хабре).
Бонус-вопрос от авторитета в тестировании
Основатель и СЕО TestPRO Самер Десовки, говорит, что у них первым делом спрашивают кандидатов в QA:
«Тебе дают задачу протестировать мобильное приложение, по какой модели лучше всего строить свое тестирование? Объясни свой выбор.»
Правильный ответ примерно такой:
“Чтобы достичь покрытия мобильного приложения тестами в достаточной мере, я, скорее всего, буду сосредотачиваться на тестировании переходов между состояниями (state transition test). Это из практик “тестирования черного ящика”. Я выбрал бы эту модель еще и потому, что она позволяет хорошо протестировать навигацию в приложении.”
2. Автоматизация.
«Автоматизация — это тестирование по методике черного ящика, или белого ящика?»
Данный вопрос может задаваться для проверки, знаешь ли ты хотя бы базовые понятия в тестировании.
Правильный ответ: «Автоматизированные тесты могут быть в обеих методиках — как белого ящика, так и черного ящика. Это зависит от деталей автоматизации.»
При этом нужно уметь объяснить, когда нужнее методика “по белому ящику”, и когда “по черному”.
Бонус-вопрос
Кристофер Форд (директор QA-отдела в Exceleron Software; ранее тестировщик, выросший до продакта в Fex) предлагает свой бонус-вопрос. Он любит спрашивать кандидатов об автоматизации:
Опиши архитектуру автоматизированного фреймворка, с которым ты работал. Как ты планировал свою работу? Как оптимизировал работу?
Конечно, для того чтобы хорошо ответить на такой вопрос, надо иметь приличный опыт работы в фреймворке автоматизации (а если участвовал в написании скажем плагинов или даже самого фреймворка, то такой кандидат может считать себя принятым в Exceleron Software). Человек с опытом, и глубоким пониманием хайповых фреймворков, на должности простого тестировщика долго не задерживается, и со временем может претендовать на повышение в компании — например позицию QA-лида.
3. QTP.
«Можно ли запустить два экземпляра QTP на компьютере?»
Быстрый ответ: нет. Развернуто: QTP это очень распространенный софт для тестирования, сокращение от HP QuickTest Professional; новое название этого софта, поменявшего собственника — UFT (Unified Functional Testing). Интервьюер хочет понимать, что ты знаешь о стандартных инструментах тестировщика. Могут задать несколько таких “глупых вопросов”, чтобы удостовериться, что ты знаешь о чем идет речь. Следует знать этот инструмент и иметь какой-то опыт работы в нем, чтобы не провалиться на самых-самых основах.
4. «Что такое XPath?»
Это один из “глупых” вопросов на собеседовании, из сферы “рабочие инструменты”. Интервьюер хочет понимать, известны ли тебе самые распространенные технологии и рабочий софт, в котором предполагается работать. Надо отвечать, что XPath это что-то вроде ID-идентификатора в QTP/UFT. Это покажет, что ты понимаешь, о чем речь и этого, может быть, пока будет достаточно. А вообще, чем подробнее объяснишь, что такое QTP/UFT (и как круто в нем работать), тем больше шансы получить оффер.
5. Ручное тестирование.
«Что такое “Принцип Парето” в тестировании?»
Это вопрос, правильный ответ на который показывает общий опыт в тестировании. Это довольно простой вопрос. Правильный ответ: Правило Парето еще называют Правило 80/20. Правило Парето гласит, что 80% дефектов как правило таятся в 20% модулей программы. Возможно, придется это детализировать и приводить примеры из собственного опыта.
6. Тестирование производительности:
«Как тестируют производительность? Какие проблемы могут быть с производительностью?»
Правильный и подробный ответ покажет, что ты хорошо знаешь свою работу, и возможно даже в будущем сможешь управлять другими тестировщиками. Тестирование производительности оценивает скорость работы программы, а также проверяет, есть ли в ней проблемные места. Подробный, обстоятельный ответ покажет, что кандидат умеет оценивать и предвидеть возможные проблемы, например с другими тестировщиками, или с ценой рабочих инструментов. Описание “частых проблемных мест” в приложении покажет, что у кандидата есть скилл решения проблем.
7. Unit-тестирование:
«Что такое покрытие?»
Ответ: это покрытие кода тестами, то есть это “масштаб и глубина тестирования” данного продукта. Этот важнейший показатель в твоей будущей работе. Непокрытый тестами код вряд ли может считаться надежным и отправляться на прод. Это вопрос для общей оценки, подходишь ли ты для этой работы в целом, понимаешь ли базовые термины.
8. Тест-кейсы.
«А приходилось ли тебе писать тест-кейсы, не имея под рукой документации?»
Нужно было бы сказать «Да», если бы это было правдой, это показало бы, что ты опытнейший, гибкий, очень компетентный тестировщик. Но такого опыта у тебя, скорее всего, нет, поэтому можно ответить, что ты “выполнял задания в составе команды тестировщиков, делал тщательный анализ, разбирал старые тесты, и консультировался с разработчиками”. Покажи, что ты можешь объяснить все нюансы, что хотя у тебя нет опыта — но ты обладаешь инициативой и быстро учишься; что ты командный игрок, понимающий нюансы.
9. Тест-лиды.
«Поможешь сотруднику, у которого возникли проблемы?»
Это вопрос на креативность и скилл коммуникации. Интервьюеры хотят убедиться, что ты можешь мотивировать других, хотя бы иногда играть роль “наставника” у более слабых коллег. Покажи, что хочешь улучшать не только сами продукты, но и продуктивность команды. Расскажи о своем опыте обучения других людей (даже если он минимальный), помощи им, наставничества, и может даже выдвигай свои идеи по обучению сотрудников.
10. Работа в команде.
«Любишь работать в команде?»
Звучит как легкий вопрос, и быстрый ответ на него — “Да”, но вслед за ним обычно следует еще несколько вопросов, которые и позволят понять, приемлемый ли ты кандидат. Это из сферы вопросов “не технических”, но критически важных, и ответы интервьюеры выслушивают внимательно. Ответ нужен такой, который покажет, что ты на 100% командный игрок. Чтобы закрепить успех, надо подчеркнуть, что ты способен принимать вещи, не всегда вписывающиеся в принятые стандарты, но которые ведут команду к успеху.
Подведем итоги
Собеседование — это стресс. Готовься хорошо. Целый раздел на нашем сайте — к твоим услугам.