P
prepair.app
Пройти интервью →
EnglishУкраїнськаРусскийDeutsch
🤖

Junior QA AutomationВопросы на собеседовании QA Automation

Junior · без опыта / до 1 года

На собеседовании QA Automation проверяют знание фреймворков, паттернов автоматизации и — прежде всего — умение писать тесты, которые остаются зелёными не по случайности. Ниже — частые вопросы с эталонными ответами. Junior: базовая теория, определения и простые практические кейсы.

Попробовать — без регистрации
Готовим вопрос…

Темы для подготовки

Selenium WebDriver и Playwright
Page Object Model
Явные и неявные ожидания
API-тестирование
Интеграция с CI/CD
Flaky-тесты и их устранение

7 вопросов уровня Junior с ответами

1

Чем explicit wait отличается от implicit и что ломается при их смешивании?

Ответ

Implicit wait — глобальная настройка, заставляющая каждый поиск элемента повторяться до N секунд. Explicit ждёт конкретного условия на конкретном элементе: кликабелен, видим, присутствует. Смешивать их — классическая ошибка: таймауты складываются непредсказуемо, и поиск, который должен был быстро упасть, висит сумму обоих. Implicit ставят в ноль и везде используют explicit.

2

Почему Thread.sleep считается плохой практикой в тестах?

Ответ

Потому что он кодирует догадку. Поспал три секунды — значит либо ждал лишнего на каждом прогоне, набирая минуты по всему набору, либо не дождался в медленный день, и именно так тест становится нестабильным. Explicit wait опрашивает условие и продолжает в момент его выполнения, то есть и быстрее, и надёжнее. Sleep оправдан, только когда ждать реально нечего наблюдаемого.

3

CSS-селектор или XPath — что выбираете и почему?

Ответ

CSS быстрее, читабельнее и покрывает большинство случаев. XPath оправдан, когда нужно подняться к родителю, выбрать по видимому тексту или использовать ось — того, что CSS выразить не может. Важнее самого выбора устойчивость: селектор по data-testid переживёт редизайн, а скопированный из devtools с шестью вложенными div — нет.

4

Что такое Page Object Model и какую проблему он решает?

Ответ

Он собирает локаторы и действия одного экрана в класс, чтобы тест говорил login.submit(admin), а не перечислял поиски элементов. Решает дублирование: при изменении кнопки правится один файл вместо сорока тестов. Типичная ошибка — класть проверки внутрь page object: страница описывает экран, а решает, что правильно, тест.

5

Чем интерфейс отличается от абстрактного класса?

Ответ

Абстрактный класс может хранить состояние и конструктор и описывает, чем объект является; наследоваться можно только от одного. Интерфейс описывает, что объект умеет, и реализовать их можно много. В тестовом фреймворке это видно сразу: базовая страница с общим полем драйвера — абстрактный класс, а что-то вроде Searchable, поддерживаемое несколькими страницами, — интерфейс.

6

Почему тесты бывают нестабильными?

Ответ

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

7

Что такое StaleElementReferenceException и как его избежать?

Ответ

Значит, вы держите ссылку на элемент, который страница с тех пор перерисовала — объект указывает на узел, которого в DOM больше нет. Чаще всего появляется после обновления, перерисовывающего список или таблицу. Избегается повторным поиском вместо сохранения ссылки — ровно то, что по устройству делают локаторы Playwright и не делает поле PageFactory в Selenium.

🦎

Прочитать ответы недостаточно

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

Пройти интервью Junior QA Automation →
Бесплатно · 3 интервью в месяц

Другие уровни — QA Automation

Middle QA AutomationSenior QA AutomationВсе вопросы QA Automation

Другие специализации

🔍Junior QA ManualJunior Java Backend🐍Junior Python Backend🐘Junior PHP Backend🦫Junior Go Backend🟢Junior Node.js Backend💎Junior Ruby on Rails🟣Junior .NET Backend Developer🔷Junior C++🟨Junior JavaScript