Финал марафона · урок 18
90 вопросов на собеседование автоматизатора
Пройти собеседование с котом Борисом
Пять вопросов голосом или текстом, уточнения и разбор каждого ответа. Без входа.
Повторяются минимум в половине изученных источников.
Встречаются в отдельных интервью или зависят от проекта.
Узкие темы — готовь после основной базы или под вакансию.
76РедкоПродвинутый PlaywrightЧто такое HAR и когда его replay полезен?
Как ответить на собеседовании
HAR сохраняет сетевой трафик, который Playwright может использовать для воспроизведения ответов. Это ускоряет детерминированные тесты, но запись устаревает и не проверяет живой backend.
Пример из практики
В PomidorQA HAR replay я не применял, поэтому так и скажу. Использовал бы его для стабильного воспроизведения внешнего каталога, но оставил бы отдельную проверку живой интеграции и следил за устареванием записи.
77РедкоПродвинутый PlaywrightКак тестировать время и таймеры без реального ожидания?
Как ответить на собеседовании
Использовать Clock API для управления Date, setTimeout и ходом времени. Это делает сценарий быстрее и детерминированнее, если приложение не зависит от внешнего серверного времени.
Пример из практики
Clock API в учебном проекте я не использовал. Для правила «отменить не позже чем за два часа» он позволил бы двигать время без реального ожидания, если серверное время тоже контролируется.
78РедкоПродвинутый PlaywrightЧем visual comparison отличается от обычной assertion?
Как ответить на собеседовании
Сравнивает скриншот с эталоном и ловит непредвиденные визуальные изменения. Нужны стабильные шрифты, ОС, данные, анимации и обоснованный порог различий.
Пример из практики
Visual regression в PomidorQA не входил в базовый курс. Если бы добавлял, зафиксировал бы ОС, браузер, шрифты, данные и анимации, иначе получил бы шум вместо полезного сигнала.
79РедкоПродвинутый PlaywrightЧто реально проверяет accessibility scan?
Как ответить на собеседовании
Автоматический скан находит часть нарушений правил, но не доказывает полную доступность продукта. Нужны клавиатурная навигация, screen reader и ручная оценка смысла интерфейса.
Пример из практики
Автоматический accessibility scan я в проект не добавлял. На реальной задаче совместил бы его с клавиатурной проверкой и ручным проходом screen reader — один scan не доказывает доступность.
80РедкоПродвинутый PlaywrightКогда использовать component testing вместо E2E?
Как ответить на собеседовании
Когда важно проверить компонент в браузерном рендеринге с контролируемыми props и зависимостями, не поднимая весь продукт. Он быстрее E2E, но не закрывает интеграцию реальных страниц и backend.
Пример из практики
Component testing в PomidorQA я не использовал. Для сложной модалки бронирования он мог бы быстро проверить props и состояния, но финальный пользовательский путь всё равно оставил бы в E2E.
81РедкоПродвинутый PlaywrightКак service worker может помешать network interception?
Как ответить на собеседовании
Запрос может обслуживаться service worker и не дойти до маршрута, который ожидает тест. Для диагностики проверяют владение запросом и при необходимости блокируют service workers в тестовом context.
Пример из практики
С service worker в PomidorQA я не работал. Если route не видит ожидаемый запрос, я сначала проверю, не обслуживает ли его service worker, и при необходимости отключу его в тестовом context.
82РедкоПродвинутый PlaywrightКак тестировать WebSocket?
Как ответить на собеседовании
Наблюдать соединение и frames, синхронизировать действие с ожидаемым сообщением и проверять UI или состояние. Нельзя подменять проверку бизнес-результата фактом открытия сокета.
Пример из практики
WebSocket в проекте курса не было. Для чата или live-статуса я бы дождался нужного frame, а затем проверил изменение UI — открытое соединение само по себе ещё не бизнес-результат.
83РедкоПродвинутый PlaywrightЧем worker-scoped fixture отличается от test-scoped?
Как ответить на собеседовании
Test-scoped создаётся для каждого теста, worker-scoped — один раз на worker. Второй вариант экономит дорогой setup, но ресурс должен выдерживать совместное использование тестами этого worker.
Пример из практики
Worker-scoped fixture я бы взял для дорогого неизменяемого ресурса, например отдельного аккаунта на worker. Данные конкретного бронирования оставил бы test-scoped, чтобы тесты не делили состояние.
84РедкоПродвинутый PlaywrightКак проверить поведение при offline или плохой сети?
Как ответить на собеседовании
Контролировать offline/context и задержки на уровне маршрутизации или окружения, затем проверять пользовательское состояние: retry, кеш, сообщение и восстановление. Один искусственный timeout мало что доказывает.
Пример из практики
Offline-сценарий в PomidorQA я не реализовывал. Если бы делал, проверил бы сообщение пользователю, возможность retry и восстановление после возврата сети, а не только искусственный timeout.
85РедкоАрхитектура тестовКогда Screenplay может быть лучше POM?
Как ответить на собеседовании
В большом домене с несколькими ролями и переиспользуемыми tasks/questions он лучше разделяет намерение и способ взаимодействия. Для небольшого набора цена абстракций часто выше пользы.
Пример из практики
В учебном наборе POM был понятнее и дешевле. Screenplay я бы рассматривал, если появятся десятки ролей и повторяемых задач; ради пяти страниц такая абстракция только усложнит чтение.
86РедкоАрхитектура тестовКакие два принципа SOLID особенно полезны в тестовом фреймворке?
Как ответить на собеседовании
Обычно проще защитить SRP и dependency inversion: у класса одна причина для изменения, инфраструктурные детали зависят от контрактов. Важнее показать реальный рефакторинг, чем расшифровать все буквы.
Пример из практики
В ProfilePage я применяю SRP: он отвечает за профиль, а API-клиент — за запросы. Инверсию зависимостей подключал бы там, где нужно менять реализацию клиента или окружения, а не ради названия паттерна.
87РедкоJavaScript и TypeScriptЧто такое closure и где оно встречается в автотестах?
Как ответить на собеседовании
Функция сохраняет доступ к лексическому окружению после завершения внешней функции. Так можно создавать фабрики данных, конфигурируемые helpers и счётчики, но скрытое изменяемое состояние усложняет тесты.
Пример из практики
Фабрика makeUser замыкает runId и создаёт уникальные данные без передачи одного аргумента в каждый вызов. Но изменяемый счётчик внутри closure я бы использовал осторожно — он может связать тесты.
88РедкоJavaScript и TypeScriptЧем unknown отличается от any?
Как ответить на собеседовании
unknown принимает любое значение, но не позволяет использовать его без narrowing. any отключает проверку и распространяется по коду, поэтому unknown безопаснее на границе с внешними данными.
Пример из практики
Данные JSON от внешнего сервиса я принимаю как unknown и сначала проверяю схему. any дал бы обращаться к любому полю и лишил бы меня пользы TypeScript на самой опасной границе.
89РедкоЗапуск и масштабированиеКак сбалансировать шарды, если тесты разной длительности?
Как ответить на собеседовании
Использовать исторические длительности или fullyParallel, чтобы делить работу ближе к отдельным тестам, затем сравнить время каждого шарда. Деление только по количеству файлов часто оставляет один длинный хвост.
Пример из практики
Если один файл идёт 20 минут, а остальные по минуте, деление по числу файлов даст перекос. Я бы использовал историю длительностей или более мелкое распределение и сравнил время всех шардов.
90РедкоПроект и опытКак вы бы тестировали AI-функцию с недетерминированным ответом?
Как ответить на собеседовании
Разделить детерминированные контракты и вероятностное качество: схема, безопасность и tool calls проверяются строго, качество — на датасете с метриками и порогами. Один ожидаемый текст здесь хрупок и малоинформативен.
Пример из практики
AI-функции в базовом PomidorQA нет, поэтому реального опыта не приписываю. На таком проекте я бы строго проверял схему и безопасность, а качество ответов измерял на наборе примеров с порогами, а не одним ожидаемым текстом.