http://telegra.ph/Junior-Automation-QA-voprosy-na-sobesedovanii-11-21
Последние полтора месяца я проходила хитрый квест под названием «Найди работу автоматизатора тестирования». В идеале хотелось писать на Питоне и писать что-нибудь интересное. После публикации резюме на hh и linkedin мне прислали штук 80 вакансий (от джуниора-мануальщика без опыта до лида группы автоматизаторов) + ещё десяток-полтора я нашла сама. Потом было около 20 собеседований в 16 компаний (от 1 до 4 на фирму) по скайпу, телефону и лично. В результате одну фирму, предложившую наиболее вкусные для меня вещи, я выбрала.
Хочу здесь кратко просуммировать, что хотят слышать на таких собеседованиях, о чём спрашивают и как вообще себя ведут разные фирмы.
По структуре:
В среднем предполагается 3 разговора: с hr, техническое интервью и финальное интервью. Иногда где-нибудь между элементами впихивается тестовое задание. Многие вопросы дублируются на всех этапах, потому что редко где настроено нормальное внутреннее общение 🙂
Личный опыт:
- Что, когда, где и как тестировали. Что руками, что автотестами. Полезно классифицировать свой опыт в духе «это было функциональное тестирование с элементами серого ящика».
- Как был организован процесс (например, если это скрам, то как именно он был реализован). Из кого состояла команда, кто за что отвечал, с кем вы взаимодействовали.
- Описать все технологии, которые использовали. Языки, базы, СI, если было. Быть готовым схематично нарисовать проект на листе бумаге.
- «Почему ушли с прошлого места работы» — вопрос задают просто все и всегда. Нужно иметь наготове дипломатичный ответ, в котором вы не покажете себя злопамятным нервным идиотом 🙂 (E.g. Плохой ответ: «Да там все козлы, и мне приходилось заниматься скучным бредом!». Хороший ответ: «Закрылся проект, и я хотел(а) развиваться вот в эту сторону, а таких возможностей в фирме не было»)
- Чего хотите от работы в будущем? Опыта, денег, знаний? Как будете выбирать из трёх одинаковых предложений?
Теория тестирования:
- Виды тестирования (черный-белый ящики, функциональное, регресс, смоук, нагрузочное, статическое-динамическое… вот это всё).
- Тестовая документация. Из чего состоит баг репорт? Как создать тесткейс по требованиям? Чем отличается keyword-driven от data-driven?
- Как пишется тестовый план и зачем?
- Какие знаете метрики тестирования и когда они используются?
- Что такое риски, как и зачем их вычисляют?
- Конфликты: Что вы будете делать, если разработчик написал не то, что в требованиях и отказывается исправлять? Что делать, если требования неполные? Что делать, если времени мало и протестировать всё не получится? Если вы пришли в проект, ничего не знаете, а документации нет, как вы будете его изучать?
- Предлагают что-нибудь протестировать. Например, лифт. Или строку ввода текста. Или что-нибудь похитрее, например, там две строки, в одну вводите дату рождения, в другую — адрес, а на выходе — доступные мобильные операторы. В этот момент нужно помнить, что можно задавать вопросы о требованиях (А лифт должен останавливаться на промежуточном этаже, если его оттуда вызвали?), не ограничиваться ручными-функциональными тестами и единственной платформой.
- Любят спрашивать про нагрузочное тестирование и безопасность, даже у людей, у которых нет в этом опыта.
- Если есть опыт с какими-то фреймворками тестирования, то про них будут спрашивать детально.
- Если есть опыт руководства группой, то кем, когда и сколько времени? А что вы делали, если люди плохо работали? Как решали внутренние разборки?
Про тестирование веба:
- Что такое Selenium, какие его основные методы? Какие виды assert`ов бывают? Implicit/explicit wait.
- Какие бывают селекторы? Кто лучше x-path или css и почему? Иногда предлагают прямо на бумажке или в браузере написать селектор для какого-нибудь элемента
- Что такое REST, какие у него есть виды запросов? Как строится запрос и что приходит в ответ?
- Что такое SOAP, какой у него запрос? Что такое wsdl, как строится его файл? И какой ответ приходит.
- Что быстрее — REST или SOAP? А что безопаснее?
- Если есть опыт c Postman или SoapUI, то описать, что там, где и как настраивается.
- Если умеете настраивать тестирование в CI, то будьте готовы рассказать, как это делается.
- Зачем нужно кроссбраузерное тестирование?
Про тестирования десктопов и мобильных:
У меня такого опыта мало, поэтому меня особенно не спрашивали.
- Хорошо бы знать, какие есть особенности и того, и другого. Где искать логи, как локализовать ошибку, вот всё это.
Основы языка программирования:
Я уже писала выше, что собеседовалась на Питон. Но при этом половина собеседующих пыталась задавать мне вопросы по Джаве. Считается, что это такой must-have язык, поэтому хотя бы читать простой код на нём всё равно нужно уметь.
- Типы данных. Чем отличается list от tuple?
- Что такое декоратор и где используется?
- Что такое потоки и зачем они нужны?
- Как записать данные в файл? А в базу данных?
- Как получить переменные окружения?
- Какими стандартными библиотеками вы пользовались и зачем?
Задания по программированию:
На личных собеседованиях код предлагают писать на листе бумаги. На скайповых — в гугл-доке или (о, редкое счастье) в каком-нибудь онлайн-интерпретаторе.
- Прочитать код и найти ошибку (обычно логическую, например одну и ту же переменную в цикле вычисляют).
- Написать метод, который будет бесконечно печатать числа от 10 до 1.
- Написать метод, который вернёт строку в обратном порядке.
- Написать мап (метод принимает метод и список аргументов и прогоняет все аргументы через метод).
- Написать класс для связанного списка (у объекта есть значение и ссылка на следующий объект). Потом сделать метод, чтобы он инвертировал список.
- Написать методы для калькулятора (сложение, вычитание, вот это всё), а потом покрыть их юнит-тестами.
Базы данных:
Всех интересует только SQL, и ничего кроме него.
- Что такое join, какие они бывают и зачем?
- Что делает group by? Как отсортировать результат по возрастанию? Как получить результаты которые содержат строку поиска, но не обязательно равны ей?
- Часто предлагают сходу на листе бумаги написать селект. Обычно есть 2-3 таблицы, и нужно джойнами объединить их и получить какую-нибудь строку.
OCи:
- Если нужен Windows, обычно спрашивают, как понять, почему что-нибудь упало.
- Если Linux, то спрашивают про логи, и где они лежат.
- Ещё в Linux хорошо знать командную строку (как искать в тексте файла? Как найти файл? Как открыть файл на сервере? Как подключиться по ssh? Как получить список процессов?)
- Ещё полезно знать, как его устанавливать, и что там происходит. Например, как и зачем существует файл подкачки.
Другое:
- Полезен опыт с виртуальными машинами. Если его нет, то хотя бы знать, как они используются в тестировании. И тот факт, что иногда приложение на виртуальной машине падает с багом, а на реальной — не падает. Вот такая засада.
- Полезны сети и протоколы. Я в них не рублю и прямо об этом говорила. Но в теории хорошо бы знать TCP/IP.
- Иногда спрашивают какую-нибудь математику (скажем, перевести 16-ричное число в 2-ичное).
- Интересуются опытом скриптов на bash, но писать их ни разу не просили.
- В требованиях часто пишут git, но тоже почему-то ни разу не спрашивали.
- Все хотят английский на уровне «не ниже intermediate». На деле собеседование на английском у меня было всего одно (и то за границу). Обычно по-английски задают один вопрос в духе «опишите свой прошлый проект» или «какие у вас хобби?», и снова возвращаются к русскому.
Тестовые задания:
Дают очень редко. У меня их было всего три, и все очень разные:
- Написать смоук-тесты для молотка.
- Протестировать один плагин к Идее.
- Написать скрипт, который будет хитро искать определённую строчку в файле.
В целом обычно все стараются решить всё на собеседовании, когда нет возможности читерить.
NB! Отдельно подчеркну, что за все слова в своём резюме нужно отвечать. Например (реальный случай) вам может попасться зануда, который будет читать каждую строчку резюме и требовать пояснений. Ещё очень часто встречается собеседующий, который не готовился к встрече. Он печально изучает ваше резюме и ищет там вдохновение для вопросов.
Также (банально, но факт) нужно погуглить все слова, которые есть в вакансии. Чтобы при случае говорить не «я не знаю, что это за фигня», а «у меня нет опыта с этой фигнёй, но я знаю, что она делает вот то и это».