Вот и у меня нашлась тема, которой я могу поделиться с Хабр сообществом. Надеюсь данная статья получится не только познавательной, но и интересной.
Входные данные:
Локейшн: Днепропетровск.
Позиция: Junior Automation QA Engineer.
Технологии: C#, Selenium, MSTest, TeamCity, Hibernate.
Так получилось, что пару месяцев назад я оказался на лавке запасных в одной большой компании. Клиент решил поделить нашу команду автотестеров на 2(хорошо, что не на ноль) и так как у меня на этом проекте срок работы был невелик, то я попал в резерв. Внутренних проектов не ожидалось, а в резерве обычно сидеть скучно и невыгодно в денежном плане. Так я начал ходить на интервью.
Перед тем, как пойти в первый раз, хорошенько погуглив, я не нашел ни одной хорошей статьи, которая бы описывала вопросы собеседования именно по автотестированию, поэтому пришлось учиться на своих ошибках. Это и есть основная причина написания данного материала.
Перед тем как передать структуру собеседований, нужно понимать типы проектов, которые ищут автомейшенов. В основном это веб используя Джаву, Селениум, ТестНГ и Мавен(это как раз то, что я искал). По популярности дальше идет си шарп, а потом питон и руби(все с Селениумом). По десктопным был проект на СилкТест и на Ранорекс.
Я сходил на несколько интервью. Где-то не понравилось мне, где-то не понравили меня — это не особо важно.
Вот в таком порядке это было:
1. Первая контора в которой я побывал, была не аутсорсинговая, что довольно редко в Днепре, особенно если считать только те, которые ищут Автомейшенов. В плане интервью, это удобно, так как все решается за один этап. Но само интервью меня немного удивило. Сто процентов вопросов были по мануальному тестированию. В компании также поинтересовались, сколько процентов времени я готов заниматься мануальным тестированием. Для меня стало понятно, что они ищут мануала, который будет ради экономия времени автоматизировать свои тест кейсы.
2. Вторая контора, наверное задавала самые подходящие для должности автомейшена вопросы. Почти все вопросы были по Селениуму, парочку по SQL запросам и ООП. Объясняется это тем, что собеседование проводило два автотестера.
3. Тут было все очень структурировано. Автотестер, который недавно перешел в девелопмент пришел с листочком, на котором был список вопросов и начал задавать по порядку. Вопросов 15 на джаву, 10 на мануальное тестирование и 10 на авто. С вопросами по джаве, как мне показалось, немного перегнули палку.
4. В этой конторе, у меня было собеседование на два разных проекта. На обоих проектах дали задание. В первом попросили протестировать сайт их клиента, это было задание на дом. Сами тесты были не сложные, около 5 штук. Нужно было сделать проект в эклипсе, используя мавен, ТестНГ, Селениум, а также Пейдж обджект паттерн. На интервью был разбор задания и параллельно вопросы по джаве мануал и автотестированию.
Второй проект мне дал задание на самом интервью. Там было около 7 задач чисто на программирование: метод который разворачивает массив(первый элемент заменяет на последний и так далее), метод который проверяет есть ли в двух массивах одинаковые элементы, метод который узнает сколько цифр в числе и тому подобное. Само интервью было в основном просто общение и нужно было прочитать код их автотеста.
Вот общий список основных вопросов, которые звучали на этих интервью:
По девелопменту:
1. Три принципа ООП.
2. Коллекции java.
3. Иерархия исключений java.
4. Методы .hashcode() и .equals(), их реализация.
5. Реализация HashMap.
6. Разница интерфейса и абстрактного класса.
7. Методы класса Object в java.
8. Паттерны(обычно перечислить с какими работал).
9. Слово статик.
10. Внутренние классы.
По мануальному тестированию:
1. Разница приорити и северити.
2. Структура тест плана.
3. Структура тест кейса.
4. Дизайн техники тестирования.
5. Типы тестирования.
6. Уровни тестирования.
7. Баг репорт.
По автотестированию:
1. Виды селекторов.
2. Недостатки, приемущества xpath и почему.
3. Паттерны для тестирования.
4. Имплисит и эксплисит wait в вебдрайвере.
5. Разница junit и testNG.
6. Как работает мавен.
7. TDD и BDD(JBehave).
Почти в каждом месте давали такие маленькие задания:
1. Существует две таблички в базе данных. Нужно составить SQL запрос. Запрос обязательно имел join.
2. Показывали html и просили написать несколько xpath или других селекторов.
3. Давали форму регистрации или подобную и просили протестировать(то есть озвучить, все мануальные тест кейсы).
Всегда спрашивали про опыт работы с:
1. Базами данных(MS SQL server, Oracle, MySQL...).
2. CI(TeamCity, Jenkins...).
3. Системами контроля версий(Git, mercurial...).
4. Баг трекинговыми системами(jira, tfs...).
Как вы наверно заметили, общих правил по собеседованиям нет, для автотестеров — в особенности. В данной професии это сильно зависит от специализации самих интервьюверов. Поэтому советую вам готовиться по всем пунктам. Я такой тип человека, который пообещает меньше, а выполнит больше. И это плохое качество на интервью. Поэтому когда у вас спрашивают вопросы по опыту работы с чем-то, твердо отвечайте «да» (даже если опыт самый минимальный — из статьи на Хабре, например), а потом после интервью идите и зубрите эту технологию. Замечания, которые вам сделали на собеседовании, необязательно оправданные, не воспринимайте их как 100% истину, старайтесь отстоять свое мнение. Часто задают вопросы, что лучше — А или Б? Не выбирайте один вариант, а расскажите ситуации в каких вы бы выбрали первый вариант, а в каких второй.
И помните: все лишнее, что вы скажете, может быть (и скорее всего будет) использовано против вас.
Забросать вопросами проще простого, куда труднее попасть в цель. Поэтому для интервьюверов советую грузить кандидатов, по основным технологиям с которыми он работал в прошлой компании. Если он хорошо знает их, то и ваши сможет быстро осилить. А удивляться и отказывать кандидату из-за того, что он не знает простейших вещей, которые вы используете в своем проекте — это не разумно, в работе он скорее всего разберется с этим за несколько минут. Помимо этого учитывайте тот факт, с кем вы хотите работать — с тем, кто вызубрил информацию, но при этом не осознает что он делает и зачем; либо с тем, кто хранит меньше знаний в голове, но более сообразителен и обучаем. Ведь тот, кто обучаем, сможет с легкостью перестроиться, зубрилке же понадобится значительно больше времени чтобы «заучить» новые технологии и работать и далее по принципу «monkey business».
Выходные данные:
Локейшн: Днепропетровск.
Позиция: Middle Automation QA Engineer.
Технологии: Java, Selenium, Junit, DBunit, Jenkins.
Желаю вам успешных интервью и достижения новых высот! Не забывайте: «Лёгким делается всё то, к чему приложишь старание».
Автор: volnoboy