Skip to content

Вопросы на собеседовании: QA-инженер

100 реальных вопросов с образцовыми ответами и пояснениями для уровня Middle.

Смотреть пример резюме: QA-инженер

Тренировка флешкарточками

Интервальное повторение · Hunter Pass

Вопросы

selenium

Неявные и явные ожидания работают на разных уровнях, поэтому я их не смешиваю.

  • Неявное ожидание глобально опрашивает каждый поиск элемента, а явное опрашивает одно условие в конкретной точке.
  • При смешивании суммарное время становится непредсказуемым из-за взаимодействия опросов драйвера и явного условия.
  • Я ставлю неявное ожидание в ноль и использую явные условия, которые показывают, чего ждёт тест.

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

playwright

Playwright автоматически ждёт готовности элемента к действию, но готовность приложения может требовать отдельного сигнала.

  • Перед кликом он ждёт, пока элемент будет в DOM, видим, стабилен, доступен и не перекрыт.
  • Этого мало, если данные ещё загружаются, отложенное действие не сработало или проверка зависит от фонового запроса.
  • Я жду реальный сигнал через проверку, конкретный ответ сети или состояние интерфейса, появляющееся после готовности данных.

Зачем это спрашивают: Знание границы авто-ожиданий и переход к синхронизации на уровне ответов и проверок отделяют реальных пользователей Playwright от читателей списка фич.

locators

Я выбираю стабильные и осмысленные локаторы, а длинные XPath-цепочки оставляю только для неизменяемого легаси-DOM.

  • Первый выбор это согласованный тестовый атрибут вроде data-testid, устойчивый к изменениям стилей и текста.
  • Затем идут роль и доступное имя, после них стабильные ID или короткие CSS-селекторы.
  • Длинные позиционные XPath-цепочки описывают вёрстку вместо смысла и ломаются при обычном рефакторинге DOM.

Зачем это спрашивают: Иерархия с testid во главе плюс сотрудничество с разработчиками по атрибутам показывают, что кандидат считает стабильность локаторов задачей дизайна, а не везения.

pom

Page Object должен описывать страницу и действия пользователя, но не владеть ожиданиями и сценарием теста.

  • В нём находятся локаторы страницы, осмысленные действия и навигация с возвратом следующего Page Object.
  • Проверки, выбор тестовых данных и логика сценария остаются в тесте, чтобы его цель была видна.
  • Я держу объекты компактными и делю большие страницы на компоненты вроде шапки, таблицы и модального окна.

Зачем это спрашивают: Проверки вне page object-ов и компонентная декомпозиция дают два правила сопровождаемости, показывающие, что кандидат содержал настоящий POM-набор.

Сложные предусловия я создаю через самый быстрый надёжный путь без UI, оставляя интерфейс для проверяемого поведения.

  • Вызовы API или фабрика данных через сервисный слой могут подготовить подписку и прошлые заказы до теста.
  • Подготовка через регистрацию и оформление заказа замедляет тесты и позволяет одному раннему сбою сломать много несвязанных кейсов.
  • Прямые вставки в базу я использую только при отсутствии API, поскольку они обходят бизнес-правила и могут создать невозможное состояние.

Зачем это спрашивают: Сеять через API, тестировать через UI и есть ключевой принцип автоматизации middle-уровня, а осторожность с сырыми вставками в базу показывает понимание причин.

seleniumcypressplaywright

Selenium, Cypress и Playwright я выбираю по архитектуре, экосистеме и ограничениям проекта.

  • Selenium работает через WebDriver и широко поддерживает языки, браузеры и гриды, но синхронизацией в основном управляет команда.
  • Cypress работает рядом с приложением в браузере и удобен для отладки и ожиданий, но исторически имел ограничения вкладок, доменов и браузеров.
  • Playwright даёт автоожидания, перехват сети, трейсы и параллельность, а Selenium лучше подходит к существующей Java-экосистеме или гриду.

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

uxtesting

Я жду положительный признак готовности приложения, а не просто исчезновение индикатора загрузки.

  • Надёжным сигналом служат видимые данные, конкретный питающий экран ответ или состояние вроде data-loaded.
  • Исчезновение спиннера ненадёжно, поскольку между цепочками запросов может возникнуть ложный момент готовности.
  • Фиксированные паузы ещё хуже: на медленном окружении их не хватает, а на быстром они тратят время.

Зачем это спрашивают: Ожидание позитивного сигнала против отсутствия спиннера дает тонкое, но выстраданное различие, определяющее инженеров, чинивших флаки из-за лоадеров.

StaleElementReferenceException означает, что сохранённый элемент ссылается на заменённый или отсоединённый DOM-узел.

  • Изменения состояния во фреймворках вроде React часто заменяют поддеревья и делают кешированные ссылки устаревшими.
  • Правильный фикс ищет элемент в момент взаимодействия и повторяет поиск при устаревании, а не кеширует ссылку между действиями.
  • Локаторы Playwright разрешаются заново для каждого действия, и обёртки Selenium могут следовать тому же подходу.

Зачем это спрашивают: Объяснение перерисовки как первопричины и переразрешения локаторов как дизайнерского фикса показывает понимание глубже, чем ловить исключение и слепо ретраить.

testing

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

  • Зависимости вызывают каскадные сбои и превращают одну регрессию во множество ложных красных тестов.
  • Каждый тест сам создаёт данные с уникальными идентификаторами и не полагается на предыдущий тест или общий аккаунт.
  • Случайный порядок выполнения в CI выявляет скрытые связи до того, как они станут привычной практикой.

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

soft-skillsauthe2e

Я переиспользую состояние авторизации по ролям, чтобы логин не занимал основное время E2E-набора.

  • Я вхожу через API или один раз через UI, сохраняю cookies либо storage state и передаю их в контекст теста.
  • Сам UI-сценарий входа остаётся в небольшом отдельном наборе и не повторяется в каждом тесте.
  • Я учитываю истечение токена и выдаю параллельным воркерам разных пользователей, чтобы они не мешали друг другу.

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

dom

Iframe и shadow DOM требуют явно учитывать разные границы поиска элементов.

  • Selenium переключается в iframe и обратно, а Playwright обращается к нему через frameLocator.
  • Открытые shadow root доступны современным CSS-запросам Playwright и Selenium, но для закрытых нужен тестовый хук от разработчиков.
  • Работу с фреймами и shadow root я прячу в Page Object, чтобы код сценария оставался понятным.

Зачем это спрашивают: Знание механики переключения контекста и различия открытых и закрытых shadow root-ов указывает на живой опыт с современными компонентными UI.

testing

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

  • Для загрузки передаю небольшую фикстуру из репозитория в input через setInputFiles или sendKeys, а выбор файла перехватываю лишь для кастомных виджетов.
  • Для скачивания отключаю запрос подтверждения, жду событие загрузки и проверяю имя и размер файла.
  • Форматы вроде CSV или PDF я разбираю и проверяю по содержимому, поскольку появление файла не доказывает его корректность.

Зачем это спрашивают: Обход системных диалогов через input-элемент и проверка содержимого скачанного, а не только существования, и есть прощупываемые практические детали.

debuggingartifacts

Каждое падение UI-теста в CI должно автоматически сохранять достаточно данных для удалённой диагностики.

  • Я собираю скриншот падения, видео прогона, консоль браузера, сетевые логи и по возможности трейс Playwright.
  • Трейс или видео показывают состояние UI, консоль выявляет клиентские ошибки, а сеть отделяет сбой интерфейса от ошибки бэкенда.
  • Автоматический сбор артефактов обязателен, иначе падения только в CI приходится долго воспроизводить локально.

Зачем это спрашивают: Последовательность триажа и использование артефактов для разделения фронтовых и бэкендных причин показывают, что кандидат реально отлаживает падения CI, а не перезапускает их.

pyramid

Для каждого риска я выбираю самый дешёвый уровень тестирования, который надёжно его обнаружит.

  • Юнит- и интеграционные тесты покрывают бизнес-логику и границы, а контрактные и API-тесты проверяют валидацию, права и ошибки сервиса.
  • На уровне E2E остаются несколько путей, доказывающих, что части вместе завершают критичные процессы вроде оформления и оплаты.
  • Так не возникает перевёрнутая пирамида из медленных UI-тестов, повторяющих миллисекундные проверки нижних уровней.

Зачем это спрашивают: Вопрос про самый дешёвый ловящий слой даёт операционную форму пирамиды и показывает, что кандидат применяет её пофичево, а не рисует треугольник.

Я автоматизирую сценарии, где повторяемость и риск регрессии оправдывают стоимость разработки и поддержки.

  • Основные успешные пути, границы и права на уровне API, а также проверки каждого релиза обычно стоит автоматизировать.
  • Одноразовое исследование, быстро меняющийся UI и субъективную оценку внешнего вида часто дешевле и лучше проверять вручную.
  • Я объясняю, что автоматизация является сопровождаемым кодом, а исследовательское тестирование остаётся полноценной частью плана.

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

Жёсткие или мягкие проверки я выбираю по тому, сохраняют ли смысл следующие шаги после сбоя.

  • Жёсткая проверка сразу останавливает тест, когда дальнейшие действия зависят от проваленного предусловия.
  • Мягкие проверки собирают независимые расхождения, например по нескольким полям формы или колонкам отчёта, и выводят их вместе.
  • Если фреймворк требует финальный assert-all, я обеспечиваю его через фикстуру, чтобы забытый вызов не дал ложный успех.

Зачем это спрашивают: Подбор стиля проверок под зависимость шагов плюс знание ловушки забытого assert-all отражают реальный опыт сопровождения фреймворка.

config

Единый механизм конфигурации на основе профилей позволяет запускать один набор без правок на разных окружениях.

  • Один переключатель выбирает базовые URL, ссылки на учётные данные, фичефлаги и таймауты из переменных окружения или файлов профиля.
  • CI получает секреты из защищённого хранилища, а локальный запуск использует игнорируемый env-файл.
  • Тесты обращаются к логическим именам вроде администратора или платёжной песочницы и не содержат значений конкретного окружения.

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

visualregression

Визуальное регрессионное тестирование сравнивает снимки интерфейса с утверждёнными эталонами и требует осознанного охвата.

  • Инструменты используют попиксельное или визуальное сравнение, пороги и исключённые зоны для динамического содержимого перед ручным ревью.
  • Подход окупается для стабильных дизайн-систем, библиотек компонентов и важных страниц, где случайные изменения CSS критичны.
  • Я стабилизирую данные и анимации, избегаю изменчивых полных страниц и проверяю обновления эталонов в PR.

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

responsivecoverage

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

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

Зачем это спрашивают: Разделение стратегий адаптивного веба и натива с размером матрицы реальных устройств от аналитики показывает прагматичный мобильный опыт.

Широкое функциональное покрытие я запускаю в одном основном браузере, а кросс-браузерные проверки направляю на реальные различия движков.

  • Полный набор обычно работает в Chromium, поскольку большинство функциональных дефектов не зависит от браузера.
  • Критичные пути и чувствительные к браузеру случаи рендеринга, ввода или API дополнительно идут в Firefox и WebKit.
  • Матрицу определяет продуктовая аналитика, а браузеры с малой долей получают задокументированный смоук или не покрываются.

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

Закрытые вопросы

  • 21

    Где ретраи допустимы во фреймворке, а где они начинают прятать баги?

    resilience
  • 22

    Ваш набор из 400 UI-тестов идёт 3 часа. Какие варианты получить обратную связь быстрее 20 минут?

    feedbacktesting
  • 23

    API-тест получил ответ 200. Что ещё вы проверяете, прежде чем считать эндпоинт протестированным?

    endpoints
  • 24

    Объясните consumer-driven контрактное тестирование с Pact и какую проблему оно решает, которую не решают E2E-интеграционные тесты.

    integratione2econtract
  • 25

    Как вы используете валидацию JSON-схем в API-тестах и от чего она защищает?

    schemaapivalidation
  • 26

    Как вы тестируете авторизацию в API за пределами проверки, что валидный токен работает?

    authtokensapi
  • 27

    Как вы тестируете идемпотентность API и почему она важна для реальных клиентов?

    idempotency
  • 28

    Что включает тщательный негативный прогон для API-эндпоинта?

    endpointstesting
  • 29

    Коллекции Postman против кодовых API-тестов на pytest или RestAssured: когда каждый инструмент уместен?

    pytestapi
  • 30

    Когда вы заглушаете внешнюю зависимость чем-то вроде WireMock, а когда тестируете против настоящей?

    schedulingdependencies
  • 31

    Как тестировать списочные эндпоинты с пагинацией, фильтрацией и сортировкой, чтобы комбинации не взорвались?

    endpointspaginationalgorithms
  • 32

    Команда выпускает API v2, а v1 должен продолжать работать. Как выглядит ваше тестирование обратной совместимости?

    api
  • 33

    Как вы тестируете асинхронные флоу, например API, принимающий задачу и позже стреляющий вебхуком?

    webhooksasync
  • 34

    Как бы вы проверили, что рейт-лимитинг API работает по спецификации?

    rate-limiting
  • 35

    Тест проверяет данные сразу после асинхронной записи и падает изредка, потому что система eventually consistent. Как чинить тест правильно?

    system-designconsistencyasync
  • 36

    Когда и как вы проверяете побочные эффекты API напрямую в базе данных?

    databaseapi
  • 37

    Сравните фикстуры, фабрики и копии продовых данных как стратегии тестовых данных. Что вы используете где?

    fixturestest-data
  • 38

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

    test-data
  • 39

    Очистка после тестов: удаление в teardown, очистка перед тестом или одноразовые окружения? Разберите трейдоффы.

    testing
  • 40

    Стейджинг ведёт себя иначе, чем прод, и баги продолжают проскальзывать в зазор. Как вы атакуете паритет окружений?

  • 41

    Продукт зависит от платёжного провайдера. Как вы тестируете платёжные флоу между песочницей и тест-дублёрами?

  • 42

    Вам передают копию продовой базы для тестирования. Что должно с ней произойти до того, как команда сможет ею пользоваться?

    databasetesting
  • 43

    Тестируемая фича зависит от времени: триалы истекают через 14 дней, отчёты закрываются в конце месяца. Как тестировать без ожидания?

    testing
  • 44

    Приведите примеры SQL-проверок, которые вы гоняете и которые ловят баги, невидимые через UI и API.

    sqlapi
  • 45

    Релиз включает миграцию схемы с трансформацией существующих данных. Как вы тестируете саму миграцию?

    schemamigrations
  • 46

    Как вы тестируете почтовые и нотификационные флоу автоматизированно?

  • 47

    Какие наборы тестов бегут на каких стадиях пайплайна в вашей идеальной схеме и какой бюджет времени получает каждая?

    ci-cd
  • 48

    Что должно быть правдой о ваших тестах, чтобы параллельный запуск в CI реально заработал?

    testing
  • 49

    Как сделать CI-отчёты по тестам действительно полезными команде, за пределами счётчика прошло-упало?

  • 50

    Какие проверки должны блокировать мердж, а какие нет? Как вы аргументируете это команде?

  • 51

    Как вы запускаете браузеры и инфраструктурные зависимости для тестов в CI-контейнерах?

    containersdependenciestesting
  • 52

    Полная регрессия на каждый коммит слишком медленная, но пропускать тесты рискованно. Как вы отбираете тесты под изменение?

    testing
  • 53

    Как должны обрабатываться тестовые креды и секреты в CI-пайплайнах?

    ci-cdsecrets
  • 54

    Пайплайн красный примерно треть дней из-за проблем окружения, и команда начала его игнорировать. Как чинить системно?

    system-designci-cd
  • 55

    Какие метрики говорят вам, что усилия по автоматизации действительно здоровы?

    monitoring
  • 56

    Ночной прогон дал 42 падения. Проведите меня через ваш утренний триаж.

    concurrency
  • 57

    Нагрузочное, стрессовое, soak- и spike-тестирование: на что отвечает каждое и какое команды пропускают себе во вред?

    testing
  • 58

    Как построить реалистичную модель нагрузки для теста вместо долбёжки одного эндпоинта?

    load-testingendpoints
  • 59

    Вы пишете сценарий на k6 или JMeter. Что параметризуете и какие критерии зачёта ставите?

    load-testing
  • 60

    Почему вы репортите p95 и p99 латентности вместо средних и о чём говорит растущий разрыв между медианой и p99?

    latency
  • 61

    Назовите классические ошибки, обесценивающие результаты перф-тестов.

    ownershipperformanceperformance-testing
  • 62

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

    latencythroughputload-testing
  • 63

    Как сделать перф-тестирование непрерывным, а не разовым упражнением перед большими релизами?

    performance-testingperformance
  • 64

    Что должно быть правдой об окружении и данных, прежде чем вы поверите числам перф-теста?

    performance-testing
  • 65

    Каковы, по вашему опыту, самые частые первопричины флакающих UI-тестов?

    flaky
  • 66

    Опишите ваш сквозной процесс работы с тестом, флакающим в CI, от обнаружения до закрытия.

    closuresconcurrencye2e
  • 67

    Тест падает в CI в 2 часа ночи, но локально проходит каждый раз. Какие различия вы расследуете?

  • 68

    Почему фиксированные sleep-ы остаются худшим инструментом синхронизации и что вы используете вместо них в каждой ситуации?

  • 69

    Как вы обнаруживаете и чините тесты, зависящие от порядка?

    testing
  • 70

    Ваши тесты стабильны, но общий стейджинг, против которого они бегут, нет. Что вы делаете?

    testing
  • 71

    Тест прошёл с ретрая, и все пошли дальше. Почему вам с этим некомфортно и что вы делаете?

    resilience
  • 72

    Как сделать флакучесть видимой и владеемой на уровне команды, а не личной борьбой QA?

  • 73

    Что отличает баг-репорт, который чинят быстро, от того, что возвращается с вопросами?

    bug-reporting
  • 74

    Severity против priority: объясните разницу на примерах, где они указывают в противоположные стороны.

    severity-priority
  • 75

    На триаж-встрече продукт хочет всё сейчас, а разработчики всё потом. В чём ваша роль между ними?

  • 76

    Разработчик возвращает ваш баг с пометкой не воспроизводится. Каков ваш следующий ход?

    debugging
  • 77

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

    debuggingtest-environments
  • 78

    Вам дают две недели на тестирование новой фичи. Как вы строите тест-стратегию и что конкретно означает risk-based?

    test-strategy
  • 79

    Компания переходит с месячных релизов на недельные. Ваш регрессионный подход должен измениться. Что вы делаете?

  • 80

    Как вы проводите исследовательское тестирование, чтобы оно давало ценность за пределами случайного кликанья?

    exploratory
  • 81

    Команда возит всё за фичефлагами. Какие новые тестовые обязательства это создаёт?

    feature-flags
  • 82

    День релиза. Что именно вы приносите на разговор go/no-go?

    governance
  • 83

    Продукт спрашивает, полностью ли протестирована фича. Покрытие кода говорит 85 процентов. Почему это не ответ и чем вы пользуетесь вместо него?

    coverage
  • 84

    Критический продовый баг требует хотфикса в течение часа. Как выглядит ваша верификация в таком ограничении?

  • 85

    Число на дашборде под вопросом: отчёт говорит одно, стейкхолдеры верят в другое. Как вы верифицируете отчёт или выход ETL?

    stakeholder-managementcommunicationetl
  • 86

    Как вы тестируете, что многошаговая операция действительно транзакционна, например создание заказа с записью в три таблицы?

    transactions
  • 87

    Продукт выходит на шести языках. Что покрывает ваше локализационное тестирование, кроме наличия переведённых строк?

    testing
  • 88

    Как выглядит реалистичный подход к тестированию доступности для команды без выделенного специалиста по accessibility?

    a11ytesting
  • 89

    Какие security-ориентированные проверки вы гоняете как QA-инженер, не будучи специалистом по безопасности?

  • 90

    Приложение агрессивно кеширует. На какие кеш-баги вы охотитесь и как?

    caching
  • 91

    Разработчик настаивает, что баг, который вы считаете критическим, минорный, и в этом спринте чинить его не будет. Как действуете?

    agile
  • 92

    За три часа до релизной отсечки вы находите серьёзный баг в ключевом флоу. Проведите меня через ваши действия.

  • 93

    Разработчики жалуются, что QA остаётся узким местом, замедляющим релизы. Как отвечаете?

    tracking
  • 94

    Когда начинается ваша тестовая работа над фичей и как выглядит shift-left в вашей реальной практике?

    shift-left
  • 95

    Пропущенный вами баг дошёл до прода и вызвал жалобы клиентов. Как вы работаете с последствиями?

    soft-skills
  • 96

    Две фичи приходят на тестирование в один день, обе помечены срочными, и продовая проблема тоже требует верификации. Как приоритизируете?

    testing
  • 97

    Разработчики пишут юнит-тесты, но считают E2E-набор проблемой QA, и он гниёт. Как вы это меняете?

    unite2e
  • 98

    Вы считаете, что команде нужно вложить два спринта в тестовую инфраструктуру, а продукт хочет фичи. Как строите кейс?

    agile
  • 99

    Команда рассматривает миграцию с Selenium на Playwright. Как вы оцениваете и снижаете риски такой миграции?

    seleniumplaywrightmigrations
  • 100

    Вы приходите в команду QA-инженером на незнакомый продукт. Как выглядят ваши первые три недели?

    joins