Вопросы на собеседовании: QA-инженер
100 реальных вопросов с образцовыми ответами и пояснениями для уровня Senior.
Смотреть пример резюме: QA-инженер →Тренировка флешкарточками
Интервальное повторение · Hunter Pass
Вопросы
Используйте локальную для каждого сервиса пирамиду с долями 70% unit, 18% component, 7% integration, 4% contract и 1% E2E, сместив верхние слои к 8 критичным сервисам.
- Для портфеля из 10 000 тестов выделите 7 000 unit, 1 800 component, 700 integration, 400 contract и 100 E2E-тестов; в pull request запускайте все unit и component-тесты, а также контракты измененных сервисов.
- Назначьте каждому критичному сервису 10 E2E-сценариев и 20 контрактов поставщика или потребителя, а оставшиеся 20 E2E-сценариев и 240 контрактов распределите между другими 42 сервисами без дублирования проверок между слоями.
- Разбейте проверки pull request на 24 шарда с целевым временем 10 минут и оставьте 2 минуты на подготовку; межсервисные integration-тесты и полный набор из 100 E2E-сценариев запускайте ночью в пределах 90 минут.
- Блокируйте слияние при результате ниже 100% для unit, component и contract-тестов измененных сервисов, p95 времени pull request выше 12 минут или доле успешных ночных E2E-прогонов ниже 99% за 30 запусков.
Зачем это спрашивают: Такое распределение сохраняет основную обратную связь дешевой и локальной, а дорогие межсервисные проверки сосредотачивает на критичных бизнес-путях.
Для каждого pull request запускайте затронутые unit, component и contract-тесты, а широкие integration и E2E-проверки перенесите в очередь слияния и прогоны по расписанию.
- Ограничьте pull request 16 вычислительными минутами: 2 unit-шарда, 2 component-шарда и 1 contract-шард стоят 15 вычислительных минут и параллельно завершаются за 4 минуты.
- Для 120 pull request это потребляет 1 800 вычислительных минут и оставляет 600 минут на десять 12-минутных integration-шардов и двадцать четыре 20-минутных E2E-шарда, распределенных между очередью слияния и ночными прогонами.
- Выбирайте затронутые тесты по графу зависимостей, но всегда включайте контракты каждого измененного API или схемы события и один дымовой E2E-сценарий для изменений оформления заказа или аутентификации.
- Блокируйте слияние, если выбранные тесты не прошли, общее время превысило 10 минут или выбор затронутых тестов на полном повторном прогоне за 30 дней находит менее 99% ранее падавших тестов.
Зачем это спрашивают: Такое расписание соблюдает вычислительный бюджет и SLA быстрой обратной связи, не исключая дорогие системные проверки.
Распределите 300 сценариев пропорционально произведению ущерба и частоты изменений, сохранив минимум одного дымового сценария для каждого сервиса.
- Суммарный вес платежных сервисов равен 240, пользовательских процессов 270, внутренних сервисов 60, всего 570 баллов риска.
- Зарезервируйте 60 сценариев как по одному дымовому на сервис, затем распределите 240 сценариев по риску: 101 платежным, 114 пользовательским и 25 внутренним сервисам.
- Итоговое распределение составит 113 платежных сценариев, 132 пользовательских сценария и 55 внутренних сценариев, с упором на контракты и integration-пути на границах высокого риска.
- Считайте работу завершенной только при 100% покрытии требований с ущербом 5, наличии хотя бы одного негативного теста на каждую критичную границу и минимум одного исполняемого дымового сценария на сервис.
Зачем это спрашивают: Прозрачная оценка риска направляет ограниченный запас сценариев на часто меняющееся поведение с высоким ущербом, сохраняя базовое покрытие всех сервисов.
Сразу проверяйте измененный код и за два измеримых релиза повышайте общие пороги покрытия ветвей и mutation score, не считая покрытия строк достаточным.
- Для pull request требуйте минимум 85% покрытия строк и 75% ветвей в измененном коде, не допускайте общего падения более чем на 0,5 процентного пункта и запускайте мутанты только в измененных модулях с лимитом 3 минуты.
- В первом релизе установите общие пороги 82% строк, 65% ветвей и 50% mutation score; во втором поднимите их до 84%, 70% и 60% после классификации выживших мутантов и добавления тестов.
- Ночью тестируйте мутациями высокорисковые модули до исчерпания 25 минут, отдавая приоритет платежам, авторизации и парсингу; остальные модули ротируйте так, чтобы каждый сервис анализировался не реже раза в 14 дней.
- Отклоняйте изменение при mutation score измененного кода ниже 70%, более чем 5 неклассифицированных выживших или зависших мутантах либо покрытии ветвей ниже порога релиза.
Зачем это спрашивают: Пороги ветвей и мутаций обнаруживают слабые проверки, скрытые высоким покрытием строк, и соблюдают оба ограничения CI.
Объедините 30 детерминированных примеров со 10 000 сгенерированных случаев на валюту вокруг явных инвариантов цены и генераторов с приоритетом границ.
- Сохраните примеры для скидок 0%, 1%, 69% и 70%, количества 1 и 10 000, налогов 0% и 30%, включая правила округления каждой валюты.
- Сгенерируйте всего 120 000 случаев из допустимых взвешенных диапазонов, выбирая 40% значений на границах и рядом с ними, и сокращайте каждый контрпример до минимального набора валюты, количества, скидки и налога.
- Проверяйте неотрицательный итог, монотонный рост итога при увеличении количества, невозможность роста суммы до налога из-за скидки и совпадение с эталонной decimal-реализацией с допуском в одну минимальную денежную единицу.
- Блокируйте слияние, если хотя бы один из 30 примеров или сгенерированных случаев с фиксированным seed не прошел за 6 минут, каждый инвариант проверен менее 10 000 раз либо seed ошибки не сохранен как регрессионный пример.
Зачем это спрашивают: Свойства экономно покрывают большое числовое пространство, а выбранные границы сохраняют понятные доказательства известных бизнес-правил.
Опишите процесс конечным автоматом и генерируйте пути с покрытием переходов, ролей и инвариантов вместо полного перебора последовательностей.
- Создайте условия модели для всех 18 разрешенных и 11 запрещенных переходов, затем жадно подберите пути, покрывающие каждый разрешенный переход для каждой допустимой роли и каждый запрещенный переход хотя бы один раз.
- Генерируйте 500 запусков с фиксированным seed длиной от 1 до 12, направляя 50% выборов к редко покрываемым переходам и сокращая ошибку до кратчайшей воспроизводящей последовательности.
- После каждого шага сравнивайте состояние модели с API и проверяйте неизменяемость конечного состояния, права роли, идемпотентность повторных команд и сохранение итоговой суммы заказа.
- Блокируйте слияние при покрытии переходов ниже 100%, принятии хотя бы одного запрещенного перехода, превышении 8 минут для 500 запусков или расхождении состояния модели и системы.
Зачем это спрашивают: Конечный автомат дает систематическое покрытие последовательностей без комбинаторной стоимости перебора всех возможных путей.
Проверяйте схемы событий и обработчики локально, семантику брокера в integration-тестах, а E2E оставьте для небольшого набора бизнес-процессов с измерением времени под реалистичной нагрузкой.
- Добавьте consumer-driven контракты для всех 14 топиков, включая совместимость схем, обязательные заголовки, ключи партиций и примеры дублирующихся и пришедших не по порядку событий; запускайте их при каждом изменении поставщика или потребителя.
- В component-тестах каждого обработчика подавайте дубликаты, пропуски, перестановки и исчерпание повторов, проверяя идемпотентное состояние и ровно один бизнес-эффект при доставке как минимум один раз.
- Запускайте broker-backed integration-тесты 9 сервисов с нагрузкой 2 000 событий в секунду на 10 минут, измеряя отставание потребителей, отправку в dead-letter, полноту корреляции и время сходимости.
- Установите gate: 100% совместимости контрактов, ноль дублированных бизнес-эффектов, p99 сходимости ниже 30 секунд, снижение оценочного времени отставания потребителей ниже 5 секунд за 2 минуты и отсутствие некоррелированных событий.
Зачем это спрашивают: Послойное тестирование событий отделяет детерминированную корректность обработчиков от поведения брокера и гарантий сквозной сходимости.
Используйте ограниченный pairwise-массив для регулярного покрытия и добавьте обязательные высокорисковые комбинации вне сгенерированного набора.
- Сгенерируйте pairwise-строки для 8 флагов, способа оплаты, локали и устройства, исключив запрещенные зависимостями флагов конфигурации; ограничьте набор 80 допустимыми строками.
- Добавьте 24 фиксированные строки для каждого способа оплаты в 4 локалях на 2 классах устройств, затем 16 строк для всех включенных, всех выключенных и ранжированных по риску взаимодействий флагов, получив максимум 120 конфигураций.
- Выполняйте component-тесты для всех 120 строк, а E2E только для 24 комбинаций оплаты, локали и устройства, распределив их по шардам с общим временем менее 20 минут.
- Блокируйте слияние при покрытии допустимых пар ниже 100%, падении любой обязательной строки, наличии непокрытой тройки оплаты, локали и устройства или числе конфигураций выше 120.
Зачем это спрашивают: Ограниченный pairwise-набор сокращает пространство конфигураций, а явные строки сохраняют комбинации, чей бизнес-риск выше силы парного покрытия.
Автоматизируйте детерминированные проверки со стабильным оракулом, сократите браузерную автоматизацию до критичных путей и исключите субъективные или дорогие проверки из регрессии на каждое изменение.
- Автоматизируйте все 320 API-проверок, полный прогон которых занимает около 1,8 вычислительного часа, и запускайте затронутую область в pull request, а полный набор раз в ночь.
- Оставьте 30 критичных браузерных путей стоимостью 1,5 вычислительного часа на прогон и помещайте в карантин любой тест с нестабильностью выше 1%, пока не исправлена синхронизация или изоляция.
- Для 50 визуальных проверок оставьте 10 автоматических структурных утверждений и еженедельную ручную выборку из 40 пунктов, а каждую из 40 аппаратных проверок выполняйте дважды в неделю за $640.
- Блокируйте слияние при результате ниже 100% выбранных API и критичных браузерных проверок, нестабильности браузерных тестов выше 1% за 100 запусков, недельной стоимости выше $1 000 или времени выше 30 вычислительных часов.
Зачем это спрашивают: Границу автоматизации определяют качество оракула, стабильность выполнения и предельная стоимость, а не общее количество доступных проверок.
Распределите исследовательское время по текущему риску изменений, сохраните резерв на открытия и завершайте каждый чартер по полученным доказательствам, а не только по времени.
- Назначьте по 16 часов каждому из 6 критичных доменов, всего 96 часов, по 6 часов 7 из 14 ежемесячных доменов среднего риска, всего 42 часа, и ротируйте 6 стабильных доменов по 2 часа, всего 12 часов.
- Оставшиеся 10 часов зарезервируйте для междоменных чартеров, выбранных по пробелам автоматизации, новым комбинациям флагов и рискам на границах данных, обнаруженным в цикле.
- Используйте двухчасовые блоки с указанным риском, набором данных и оракулом: 90 минут на исследование и 30 минут на подготовку, заметки о покрытии и фиксацию доказательств.
- Разрешайте выпуск только после завершения всех 80 запланированных сессий, достижения каждым критичным чартером заявленной границы покрытия и отсутствия нерешенных находок высокой серьезности в проверенной области.
Зачем это спрашивают: Количественный бюджет чартеров сохраняет сфокусированный ручной поиск и делает область, доказательства и завершение измеримыми.
Используйте Playwright для новых тестов на TypeScript, а Selenium оставьте только как ограниченный legacy-контур с постепенным переносом ценных Java-сценариев.
- Playwright дает единый TypeScript API для Chromium, Firefox и WebKit, тогда как Cypress не дает сопоставимого покрытия WebKit, а Selenium подходит для уже сделанных вложений в Java.
- Начальное разделение составляет 75% на Playwright и 25% на Selenium: это исключает рискованное переписывание 1 200 тестов и не позволяет Java-контуру расти дальше.
- Переносите тесты по бизнес-сценариям, а не построчно, и удаляйте Selenium-сценарий только после прохождения его замены на Playwright в том же браузере и окружении.
- Примите архитектуру после пилота на 200 тестах, если стабильность прохождения составляет не менее 98% за 20 запусков, время укладывается в оценку с отклонением до 15% и нет пробела в обязательных браузерных возможностях.
Зачем это спрашивают: Такое разделение учитывает конкретные ограничения браузеров и языков, не превращая прежние вложения во фреймворк в постоянное архитектурное дублирование.
Начните с 12 шардов по 4 worker-процесса и затем настройте значения по измеренной загрузке, а не наращивайте параллелизм вслепую.
- Последовательная работа занимает 6 000 × 24 секунды = 40 часов, а 48 параллельных worker-процессов дают теоретический минимум 50 минут.
- При эффективности параллелизма 70% ожидаемое время составит около 71 минуты, оставляя 19 минут на дисбаланс шардов, настройку, загрузку артефактов и повторы.
- Используйте sharding Playwright для распределения файлов между 12 CI-задачами, а worker-процессы для выполнения внутри каждой задачи, изолировав учетные записи, порты и каталоги результатов.
- Примите конфигурацию, если p95 времени за 20 сборок ниже 90 минут, самый медленный шард отстает от медианного не более чем на 20%, а загрузка CPU и памяти остается ниже 85%.
Зачем это спрашивают: Разделение распределения по шардам и параллелизма worker-процессов делает расчет мощности наблюдаемым и защищает целевое время от конкуренции за ресурсы.
Предоставьте около 100 браузерных слотов с учетом запаса и распределите их по данным использования браузеров в продакшене, а не поровну.
- Требуемый параллелизм равен 8 000 × 30 ÷ 4 500 ÷ 0,65 = 82,1, поэтому 83 слота составляют математический минимум, а 100 слотов добавляют около 20% эксплуатационного запаса.
- Если доли использования равны 60% Chrome, 25% Firefox и 15% Edge, зарезервируйте 60, 25 и 15 слотов, разрешив направлять свободную мощность через stereotypes и правила очереди Grid.
- Рассчитывайте каждый узел по измеренным CPU и памяти одного браузерного процесса, ограничьте число сессий на узел и пересоздавайте узлы для очистки зависших процессов вместо объявления неподтвержденной мощности.
- Примите Grid, если p95 ожидания в очереди ниже 2 минут, загрузка слотов в обычный пик остается ниже 85%, а 20 последовательных запусков укладываются в 75 минут при доле повторов из-за узлов не выше 0,2%.
Зачем это спрашивают: Число слотов сочетает расчет нагрузки с измеренной эффективностью Grid и запасом на реальный разброс потребления браузерных процессов.
Временно оставьте Cypress для 2 930 совместимых тестов, а 270 сценариев с особыми браузерными требованиями реализуйте в Playwright под единым CI-контрактом.
- Cypress cy.origin покрывает многие переходы между origin, но его командная модель не считает 2 одновременные вкладки полноценными управляемыми страницами, тогда как browser contexts и объекты Page в Playwright это поддерживают.
- Контур исключений составляет 270 ÷ 3 200 = 8,4% набора: этого достаточно для контролируемого внедрения, но недостаточно, чтобы менять поведение продукта ради ограничений Cypress.
- Используйте общие подготовку окружения, API тестовых данных, формат отчетов и классификацию сбоев для обоих runner-процессов, но не делите между ними абстракции страниц конкретного фреймворка.
- Примите разделение после 20 последовательных успешных запусков всех 270 сценариев с flake ниже 0,5%, если второй runner добавляет менее 10 минут или 15% стоимости CI; иначе запланируйте полный перенос на Playwright.
Зачем это спрашивают: Измеряемая граница между двумя runner-процессами сохраняет сделанные вложения и дает браузерную модель для требуемого поведения между origin и вкладками.
Введите версионируемый контракт селекторов с совместной ответственностью продукта и QA, отдавая приоритет семантическим локаторам и явным test ID для стабильных бизнес-элементов.
- Предпочитайте role, label и доступное имя, когда они входят в пользовательский контракт; используйте data-testid для динамических таблиц, повторяющихся подписей, canvas-элементов и элементов с локализованным текстом.
- Запретите CSS-классы, селекторы по глубине DOM и позиционные nth-child в тестах приложения, потому что стили и раскладка не являются контрактами автоматизации.
- Сначала переведите 500 наиболее изменчивых тестов; сокращение их 40 еженедельных ошибок селекторов на 80% устранит 32 сбоя в неделю до масштабирования подхода на все 3 000 тестов.
- Примите контракт, когда не менее 95% селекторов проходят статические lint-правила, ошибки из-за селекторов составляют менее 0,2% запусков в течение 4 недель, а у каждого нового test ID есть ответственный со стороны продукта.
Зачем это спрашивают: Контракт селекторов превращает тестируемость в явный интерфейс и измеряет успех снижением сбоев, а не количеством test ID.
Распределите набор на 3 380 component-проверок, 1 300 page-проверок и 520 flow-проверок, разрешая зависимости только в направлении от flows к pages и затем к components.
- Component-объекты предоставляют поведение и состояние виджета, например выбор даты или чтение валидации, не зная маршрутов, пользователей и внешних процессов.
- Page-объекты объединяют компоненты и отвечают за готовность и действия страницы, а flow-объекты координируют бизнес-процессы между страницами без дублирования селекторов.
- Оставляйте assertions в тестах, кроме переиспользуемых предикатов состояния, и не создавайте один base page, накапливающий несвязанные ожидания и навигацию.
- Примите слои, если не менее 90% селекторов имеют одного владельца в component или page, ни один flow не содержит сырых селекторов, а 520 сквозных тестов работают без повторяющихся последовательностей входа и навигации.
Зачем это спрашивают: Три слоя связывают границы абстракций с измеренным распределением тестов и не дают крупным page-объектам превратиться во второй фреймворк приложения.
Создавайте отдельный storage state для каждой роли в setup-проекте и выдавайте каждому параллельному worker-процессу изолированные изменяемые данные через worker-scoped fixtures.
- Повторный вход стоит 3 600 × 7 секунд = 7 часов суммарного браузерного времени, а загрузка storage state примерно за 1 секунду сокращает эту работу приблизительно до 1 часа перед учетом параллелизма.
- Создавайте 8 состояний ролей через поддерживаемый API или UI setup, храните их как короткоживущие CI-артефакты и не используйте состояние дольше срока токена или за пределами целевого окружения.
- Применяйте worker-scoped аренду учетных записей для тестов, меняющих серверные данные, и test-scoped fixtures для страниц и одноразовых записей, очищая данные через API вместо медленного UI teardown.
- Примите схему, если настройка аутентификации занимает менее 5% общего времени, 50 повторных параллельных запусков не показывают пересечений данных, а восстановление после истечения состояния работает без ручных перезапусков.
Зачем это спрашивают: Разделение переиспользуемого состояния личности и изолированных изменяемых данных убирает цену повторного входа без связи тестов через общие учетные записи.
Считайте 252 нестабильных результата в день абсолютным бюджетом и снижайте рабочий показатель с помощью детерминированной синхронизации и ответственного карантина.
- Дневной объем равен 7 000 × 12 = 84 000 запусков, а 84 000 × 0,003 = 252 допустимых нестабильных результата, измеряемых до повторов, чтобы повторы не скрывали нестабильность.
- Замените фиксированные паузы на web-first assertions Playwright, проверки готовности locator, явные предикаты ответа и сигналы готовности приложения, связанные с нужным тесту состоянием.
- Разрешите только 1 повтор в CI для диагностики, прикладывайте trace, сеть, консоль и скриншоты, а тест помещайте в карантин только с ответственным, ссылкой на дефект и сроком 7 дней.
- Примите правила, если flake до повторов остается ниже 0,3% в течение 4 недель, статическая проверка не находит фиксированных ожиданий, а в карантине находится менее 1% из 7 000 тестов.
Зачем это спрашивают: Подсчет нестабильности до повторов и обязательные детерминированные сигналы готовности превращают бюджет в инженерное ограничение, а не корректировку отчета.
Используйте риск-ориентированную стратегию screenshot в Playwright с 720 полноэкранными baseline для 60 критичных маршрутов и component-level baseline для остальных визуальных состояний.
- Наивная матрица равна 420 × 3 × 2 × 2 = 5 040 снимков, а 60 × 3 × 2 × 2 = 720 защищают критичные маршруты выручки и навигации при обозримом объеме проверки.
- Остальные 360 маршрутов покрывайте через стабильные component stories и снимки конкретных элементов, избегая повторных полноэкранных изображений, где большую часть пикселей занимает общая оболочка.
- Зафиксируйте версии браузеров, шрифты, локаль, часы, анимации, данные и viewport; маскируйте только действительно недетерминированные области и используйте небольшой документированный пиксельный порог вместо широкой погрешности.
- Примите систему, если каждое изменение baseline одобряется человеком, необъясненные отличия блокируют слияние, доля ложных срабатываний ниже 2%, а критичная visual-задача завершается за 20 минут.
Зачем это спрашивают: Распределение по риску сохраняет полезный визуальный сигнал и ограничивает комбинаторный объем baseline и ручной проверки.
Используйте матрицу, взвешенную по реальному использованию: 6 000 случаев в pull request, расширенную ночную проверку и небольшой контрактный набор на реальных устройствах.
- Полная матрица равна 5 000 × 4 × 3 = 60 000 случаев, поэтому в каждом pull request запускайте все 5 000 тестов на основном настольном профиле Chromium, 500 критичных тестов на WebKit iPhone и 500 на настольном Firefox.
- Ночью запускайте 500 критичных тестов на 8 приоритетных сочетаниях браузера и устройства, получая 4 000 случаев, а полные 60 000 случаев оставьте для еженедельного окна мощности.
- Выполняйте 100 проверок аутентификации, загрузки файлов, оплаты, камеры и скачивания на реальных устройствах Safari iOS и Chrome Android, потому что эмуляция Playwright воспроизводит не все особенности браузера и ОС.
- Примите матрицу, если она покрывает не менее 95% продакшен-трафика по весу браузеров и устройств, p95 pull request остается ниже 30 минут и за 2 релизных цикла не пропущено ни одного дефекта совместимости серьезности 1.
Зачем это спрашивают: Расписание концентрирует быструю обратную связь на основной платформе, сохраняя периодическую широту и проверку на реальных устройствах для возможностей, которые не гарантирует эмуляция.
Закрытые вопросы
- 21
API должен выдерживать 600 RPS в течение 10 минут при p95 не более 400 мс, p99 не более 800 мс и доле ошибок ниже 1%. Базовая итерация k6 занимает 1,2 секунды. Как настроить и принять тест с открытой моделью поступления запросов?
load-testingapiconfig - 22
Распределенный тест JMeter должен создать 12 000 RPS. Один генератор стабильно выдает 1 800 RPS при CPU 65%, средний ответ занимает 8 КБ, а обязательный запас генератора равен 25%. Сколько генераторов нужно и как проверить схему?
validationdistributedgenerators - 23
Нужно создать 15 000 HTTP RPS и 500 постоянных WebSocket-сессий в 10-минутной CI-задаче; JavaScript знают 4 из 6 инженеров, Python знает 1, Java знает 1, а генератор ограничен 1 ГБ памяти. Что выбрать: k6, JMeter, Gatling или Locust, и какими данными подтвердить выбор?
load-testingjavascriptgenerators - 24
Кандидат в релиз выдает 2 400 RPS в течение 15 минут при p95 280 мс, p99 760 мс и 0,2% ошибок. SLO на 2 200 RPS требует p95 не более 300 мс, p99 не более 700 мс и менее 0,5% ошибок. Можно ли одобрить релиз?
slo - 25
Промышленный трафик состоит из 70% горячих чтений из кэша, 20% чтений теплых ключей с одним промахом за тест и 10% уникальных холодных чтений. Как построить 10-минутный тест на 5 000 RPS без нереалистично высокой доли попаданий в кэш?
caching - 26
Обычная нагрузка равна 1 000 RPS, рекламная кампания может поднять ее до 5 000 RPS на 60 секунд, а предел мощности неизвестен. Какие spike- и stress-тесты провести и какое численное решение даст каждый из них?
performance-testingcapacity - 27
Спроектируйте 18-часовой soak-тест на 1 500 RPS для сервиса, который после прогрева использует 4,2 ГБ памяти, имеет p95 300 мс и 400 открытых соединений. Какие пороги наклона определят успех или провал?
designmemory - 28
Закрытый тест использует 200 пользователей и показывает p95 900 мс при 200 RPS, но требование равно 1 000 RPS, а ответ может замедляться до 2 секунд. Валиден ли результат и как устранить coordinated omission?
- 29
Три генератора обработали 1 миллион, 3 миллиона и 6 миллионов запросов и сообщили p95 100 мс, 200 мс и 400 мс. Можно ли принять SLO p95 300 мс, усреднив эти процентили?
concurrencygeneratorsslo - 30
Тестовая среда имеет четверть вычислительной мощности промышленной и выдерживает 450 RPS при p95 250 мс; промышленная среда должна поддерживать 1 500 RPS, а CI дает 5 минут на pull request и 30 минут по расписанию. Как использовать малую среду и построить два уровня тестирования?
designperformance - 31
Пайплайн pull request обрабатывает 120 изменений в день: сборка артефакта занимает 2 минуты, 6 000 unit-тестов идут 3 минуты, 600 выбранных component-тестов 6 минут, contract-тесты 4 минуты, а 30 браузерных smoke-тестов требуют 8 минут после двухминутного деплоя. Как построить DAG с p95 ниже 13 минут и не тратить ресурсы зря, если 18% изменений падают?
unitcontractdeployment - 32
Регрессионный набор потребляет 960 раннер-минут, CI-платформа разрешает 100 воркеров, а требуемое время p95 равно 12 минутам. Как вы спроектируете сбалансированные по длительности шарды?
shardingdesignregression - 33
В пиковый час в merge queue поступают 40 одобренных пул-реквестов, проверочный набор занимает 15 минут, доступны только четыре изолированных окружения, а 4 процента изменений падают. Как удержать p95 ожидания в очереди ниже 35 минут?
code-reviewvalidationdata-structures - 34
В монорепозитории 200 сервисов и 25 000 тестов; полный набор занимает 180 минут, но обратная связь по пул-реквесту должна укладываться в 15 минут. Как применить отбор по графу зависимостей и не потерять полную подстраховку?
monorepodependenciesfeedback - 35
Вы создаёте 180 эфемерных тестовых окружений в день; запуск каждого сейчас занимает 12 минут, тесты идут 35 минут, затем окружение простаивает 60 минут, а стоимость равна $0,02 за минуту окружения. Как уложиться в $250 в день и запускать окружение не дольше 7 минут?
test-environments - 36
Сервис собирается 70 раз в день, каждая сборка занимает 8 минут, а повторная сборка между тестами пул-реквеста, staging и релиза дала 0,8 процента несовпадений бинарных файлов. Как вы спроектируете тестирование неизменяемого артефакта?
designimmutabilityartifacts - 37
Пайплайн запускает 10 000 тестов с исторической долей успешного первого прогона 99,6 процента, линейным покрытием 82 процента и целевым временем 20 минут. Какие числовые quality gates вы зададите, чтобы общие проценты не скрывали плохое изменение?
coveragequality-gatesaggregation - 38
Каждому из 40 интеграционных шардов нужны приложение, PostgreSQL, Redis и Kafka; тестовый кластер Kubernetes допускает 60 подов, каждый шард занимает 6 минут, а бюджет пайплайна равен 18 минутам. Как вы разместите зависимости?
postgresshardingredis - 39
Монорепозиторий запускает 12 000 тестов для 120 pull request в день; 70% тестов герметичны, каждый в среднем занимает 30 секунд, а CI должен сократить runner-минуты на 50% без повторного использования результата после изменения любого значимого входа. Как спроектировать кеш результатов тестов?
code-reviewdesignmonorepo - 40
CI выполняет 50 000 тестов в день и выдаёт 1 500 падений примерно из 120 первопричин, но инженеры должны получать правильного владельца и доказательства не позднее 15 минут. Как вы спроектируете наблюдаемость результатов и маршрутизацию?
designobservabilitytesting - 41
Три сервиса публикуют 48 REST-операций, в CI есть лимит на 240 контрактных тестов, но написанные вручную моки регулярно расходятся с файлами OpenAPI. Как построить измеримую архитектуру тестирования OpenAPI?
contractmockingrest - 42
У tenant API есть 12 защищенных эндпоинтов, 3 роли, 3 состояния учетных данных (валидные, просроченные, отсутствующие) и 2 цели (свой tenant, чужой tenant). Как реализовать матрицу авторизации 12 × 3 × 3 × 2 = 216 и негативные проверки payload, не скрывая дефекты авторизации?
coveragedefectsendpoints - 43
Одного провайдера используют 14 приложений в системе из 18 сервисов, причем у каждого потребителя может быть 3 активные версии. Как применить Pact Broker и can-i-deploy, чтобы не выпустить несовместимую версию провайдера или потребителя?
contractdeployment - 44
У REST API v1 есть 27 активных клиентов во время перехода на v2, а платформа публикует 8 типов Kafka-событий, потребители которых могут отставать на 2 релиза при хранении трафика за 14 дней. Как тестировать обратную совместимость синхронных и асинхронных контрактов?
restkafkaasync - 45
Набор содержит 600 тестов для 15 таблиц, фабричные данные не охватывают production-сегмент с 18% пустых профилей, в production есть 4,2 миллиона строк, а копирование сырых production-данных запрещено. Как совместить фабрики и анонимизированные данные production-формы?
anonymizationfundamentalstesting - 46
Нужно маскировать 2,4 миллиона записей в 6 связанных таблицах блоками по 50 000 строк, сохранив связи, уникальность, форматы и одинаковый результат повторных запусков. Как реализовать и проверить детерминированное маскирование?
joins - 47
CI выполняет 60 прогонов в день с 8 параллельными workers, общие схемы и очереди конфликтуют, а тесту производительности нужно эксклюзивное окно на 45 минут со стабильной базой из 10 миллионов записей. Как разделить эфемерные и общие среды и гарантировать очистку?
schemaperformancedata-structures - 48
Для одного релиза до выпуска нашли 120 валидных дефектов: S1=2, S2=8, S3=30, S4=80. За следующие 30 дней в production нашли 20 относящихся к релизу дефектов: S1=1, S2=3, S3=6, S4=10. При весах серьезности 8, 5, 2, 1 рассчитайте escape rate и определите release gate.
severity-prioritydefectsaws - 49
У 10 дефектов релиза время от обнаружения до финальной проверки в production составило 2, 3, 4, 5, 6, 8, 10, 12, 20 и 40 часов, причем 40-часовой дефект переоткрыли после первого закрытия. Как рассчитать перцентили defect MTTR и правильно сохранить жизненный цикл?
percentilesclosuresdefects - 50
За 30 дней 120 тестов сначала упали, а затем прошли без изменения кода, при 20 000 выполнениях тестов; time-to-signal p50=7 и p90=18 минут; 6 из 80 production-изменений потребовали rollback или defect hotfix; взвешенный escape=11%; пройдено 4 960 из 5 000 контрактных проверок. Постройте сбалансированный dashboard с точными decision gates.
defectsrollback - 51
За последние 200 запусков CI красными были 28, из них 24 прошли при повторном запуске, а команда включила до 3 слепых повторов за 4 часа до релиза. Что вы сделаете?
- 52
Сценарий платежного callback в Playwright падает в 11 из 80 запусков: интерфейс иногда обновляется за 2,1 секунды, а тест ждет фиксированные 2 секунды. До закрытия релизного окна осталось 90 минут. Что вы сделаете?
playwrightcallbacks - 53
Двенадцать API-тестов проходят отдельно, но 9 падают при случайном порядке набора из 240 тестов; все 9 используют одну учетную запись клиента и оставляют разные состояния подписки. Что вы сделаете?
api - 54
За 6 недель набор тестов для pull request вырос с 18 до 57 минут, лимит CI равен 35 минутам, а 14 из последних 40 сборок отменили до получения результата. Что вы сделаете?
- 55
Запуск CI с 8 шардами завершается за 34 минуты: один шард работает 31 минуту, самый быстрый 7 минут, а 46 тяжелых спецификаций распределены только по количеству файлов. Что вы сделаете?
sharding - 56
После релиза интерфейса падают 168 из 420 тестов Playwright из-за смены сгенерированных CSS-классов, но ручная проверка 25 критичных действий не находит дефектов продукта. Что вы сделаете?
defectsplaywrightcss - 57
Релиз checkout изменил поток с 3 шагов на 2, и теперь 96 из 150 сценариев Cypress падают на удаленной странице подтверждения за 70 минут до конца релизной проверки. Что вы сделаете?
validationcypress - 58
Автоматическое обновление Chrome приводит к ошибке запуска сессии в 73% из 600 тестов Selenium; Firefox остается зеленым, а до релиза 2 часа. Что вы сделаете?
seleniumsessionsestimation - 59
Сервис тестовых артефактов отвечает 503 для 100% заданий, за последние 90 минут заблокированы 62 запуска CI, а решение о релизе нужно принять через 60 минут. Что вы сделаете?
artifacts - 60
За 45 минут до релиза падают 9 из 1800 тестов: 7 совпадают с известными сигнатурами нестабильности, а 2 новых сбоя затрагивают сброс пароля и итоговую сумму счета. Бизнес просит общее исключение. Что вы сделаете?
flakypasswords - 61
Релиз 8.14 показывает неверную дату продления 18 400 пользователям; 620 продлений завершились ошибкой, а до отката поддержка получила 73 обращения. Что вы сделаете за первые 24 часа и как предотвратите такой же пропуск?
rollback - 62
Повтор платежного вебхука в релизе 5.6 дважды списал деньги у 214 клиентов в 286 транзакциях, хотя все 340 автоматизированных платежных тестов прошли. Как вы отреагируете и измените систему тестирования?
system-designresiliencewebhooks - 63
Инцидент INC-417 заблокировал вход 3 200 пользователям после сброса пароля, хотя покрытие аутентификации составляло 91%. Какие данные вы соберете и какие 1 или 2 исправления выберете?
authpasswordscoverage - 64
Доля дефектов, дошедших до прода, выросла с 1,8% до 3,1%, 4,7% и 6,2% в релизах 21-24, а частота осталась 2 релиза в неделю. Как вы исследуете и развернете тренд?
defects - 65
Критический сценарий выплат был зеленым в 126 тестах из-за мока банка, но в проде банк отклонил 9% из 4 800 выплат после изменения поведения тайм-аутов. Что вы измените?
resiliencedependenciestesting - 66
Релиз 3.9 прошел стенд, но 41% из 12 000 загрузок в проде завершились ошибкой, потому что стенд использовал хранилище версии 7.2, а прод версии 6.8. Как вы восстановите сервис и закроете разрыв окружений?
- 67
После API v32 17% из 90 000 загрузок мобильных профилей завершились ошибкой, потому что сервис вернул null для поля, объявленного обязательной строкой. Почему тесты это пропустили и что вы внедрите?
apifundamentals - 68
Задержка поиска p95 выросла с 480 мс до 2,4 секунды в релизе 11.3 и затронула 1,6 млн запросов до обнаружения, хотя набор производительности оставался зеленым. Как вы диагностируете проблему и предотвратите повтор?
latencyqueries - 69
Экспорт счетов повредил 6 700 из 240 000 записей с именами не на латинице и отрицательными корректировками, хотя 58 тестов экспорта прошли. Как вы сверите данные и устраните слепую зону?
testing - 70
Релиз 6.2 сделал кнопку оплаты невидимой при масштабе 200% и удалил ее доступное имя, затронув примерно 14 000 сессий клавиатурных и слабовидящих пользователей до поступления 96 обращений. Что вы сделаете дальше?
estimationsessions - 71
Нагрузочный тест выдержал 12 000 запросов в секунду при p99 180 мс, но в продакшене p99 достиг 2,4 секунды всего при 3 000 запросов в секунду. В тесте было 90% кешированных чтений, а в продакшене 45% трафика составляют записи и есть несколько горячих аккаунтов. Что вы решите и измените?
cachingload-testing - 72
При 8 000 виртуальных пользователей процессор генератора нагрузки загружен на 100%, а сеть на 95%, тогда как сервис использует 42% процессора; пропускная способность перестает расти, а время ответа выглядит стабильным. Как вы поступите с таким результатом?
soft-skillsthroughput - 73
Проверка производительности отклоняет сборки при p95 выше 450 мс, но 10 прогонов неизменной базовой версии дают от 410 до 470 мс, и 3 из них не проходят. Один прогон новой сборки показал 455 мс. Какое корректирующее решение вы примете?
performance - 74
Все 38 потребительских контрактов Pact проходят, но релиз провайдера вызывает ответы HTTP 400 для 17% запросов оформления заказа, потому что разрешенное матчером поле в продакшене равно null. Что вы сделаете помимо повторного запуска Pact?
contracthttpfundamentals - 75
Песочница платежного провайдера принимает запросы API v2 за 300 мс, но продакшен уже перешел на v3, отклоняет 12% таких запросов и доставляет вебхуки через 8 минут вместо 10 секунд. Как вы отреагируете?
webhooks - 76
Шесть команд используют одно тестовое окружение; полный набор тестов нестабилен в 14% прогонов, а сбои коррелируют с параллельными запусками, которые повторно используют идентификаторы аккаунтов и оставляют 30 000 записей. Каково ваше немедленное и долгосрочное решение?
flakytest-environments - 77
Эфемерные тестовые окружения должны удаляться через 6 часов, но инвентаризация показывает 312 активных окружений, 47 из них старше 72 часов, а месячные расходы выросли с 4 000 до 18 000 долларов. Что вы предпримете?
test-environments - 78
Тест на 10 миллионах равномерно распределенных строк показывает p99 запроса 90 мс, но в продакшене он равен 1,8 секунды, потому что на самый активный 1% арендаторов приходится 64% строк. Что вы измените перед одобрением оптимизации?
queriesdistributedoptimization - 79
Миграция прошла на 2 миллионах строк в стейджинге, но в продакшене 240 миллионов строк и 7% устаревших значений null; бэкфилл удерживает блокировки 11 минут, а отставание очереди достигает 25 минут. Что вы решите?
fundamentalsdata-structuresmigrations - 80
В релизе есть 12 функциональных флагов, но тесты покрыли только состояния все выключено и все включено; сочетание флагов A и D, региона ЕС и клиента ниже версии 5.4 вызывает повторные платежи у 9% этой группы. Как вы отреагируете?
cohortsfeature-flagstesting - 81
За 3 часа до релиза падают 27 из 1 800 автотестов в 6 группах, а тестовая среда показывает повышенное число ошибок базы данных. Как вы отделите дефекты продукта от нестабильных тестов и сбоев среды и примете решение о релизе?
defectstest-environmentsdatabase - 82
Известный дефект приводит к исчезновению сохранённых фильтров примерно у 7% из 120 000 активных пользователей в месяц, но данные не теряются навсегда, а обходной путь занимает около 20 секунд. Выпустите ли вы релиз через 4 часа?
estimationdefects - 83
Из-за задержки сборки окно тестирования сокращено с 18 до 6 часов, при этом есть 420 регрессионных сценариев и 4 тестировщика. Как вы сохраните обоснованность решения о релизе?
- 84
За 90 минут до запуска руководитель просит обойти критерий в 98% успешных критических тестов, потому что текущий результат равен 92% и падают 12 из 150 тестов. Что вы сделаете?
testing - 85
Во время инцидента, затронувшего 18% транзакций, хотфикс меняет 46 строк в логике повторных попыток оплаты, а команда хочет развернуть его в продакшене за 35 минут. Как вы оцените риск?
incidentstransactionsdeployment - 86
На встрече по решению о запуске 99,3% из 2 400 автотестов успешны и тестовый выпуск на 5% трафика не показывает ухудшения метрик, но исследовательское тестирование выявило 2 случая потери черновика в 40 попытках. Каково ваше решение?
exploratorymonitoringdeployment-strategies - 87
За 2 часа до релиза прямое развёртывание проходит все 310 критических тестов, но никто не проверил откат миграции, затрагивающей 14 миллионов строк. Можно ли продолжать релиз?
deploymentrollbackmigrations - 88
За 1 день до релиза матрица совместимости заполнена, кроме Safari 16 на iOS 15, которым пользуются 11% активных пользователей, а изменённый сценарий загрузки принимает файлы до 25 МБ. Что вы решите?
- 89
За 5 часов до релиза сканер безопасности выдаёт 73 находки; 72 совпадают с шумным правилом для сгенерированных файлов, но 1 новая критическая находка с оценкой 9,8 может разрешать доступ к аккаунту без аутентификации. Как вы обработаете этот критерий?
soft-skills - 90
Как вы проверите в продакшене новый сервис ранжирования поиска и ограничите риск, если обычный трафик равен 60 000 запросов в минуту, а откат занимает 4 минуты?
rollback - 91
Джуниор отвечает за набор из 120 UI-тестов: в 38 используются фиксированные паузы от 2 до 5 секунд, в 64 используются абсолютные XPath-селекторы, а 18 падают минимум в 7 из 100 прогонов CI. Что должен сделать сеньор, как джуниор должен исправить и представить работу и какие числовые доказательства нужны перед одобрением?
locators - 92
QA уровня мидл задаёт для каждого нестабильного теста 3 повтора: теперь дашборд показывает итоговый pass rate 99,5%, но с первой попытки проходят только 91% тестов в 500 прогонах, а повтор нужен 46 тестам. Что должен сделать сеньор, как менти должен исправить и представить подход и какие числовые критерии выхода применить?
flakyresilience - 93
Менти отправляет 75 API-тестов, которые проверяют только статус 2xx и непустое тело ответа; мутационное тестирование оставляет незамеченными 23 дефекта контракта ответа или побочных эффектов. Что должен сделать сеньор, как менти должен усилить и представить набор и какие числовые проверки должны блокировать приёмку?
defectsapi - 94
Менти моделирует нагрузку как 1 000 пользователей в цикле без пауз, хотя пик продакшена составляет 900 запросов в секунду при распределении 60% просмотра, 25% поиска, 10% обновления и 5% экспорта. Что должен сделать сеньор, как менти должен исправить и представить модель и какие числовые проверки должны её подтвердить?
validationload-testing - 95
Восемьдесят параллельных тестов используют общие 5 аккаунтов клиентов и один изменяемый заказ, из-за чего коллизии данных возникают в 14% прогонов. Что должен сделать сеньор, как менти должен перепроектировать и представить владение тестовыми данными и какие числовые проверки докажут изоляцию?
ownershiptesting - 96
Менти открывает PR автоматизации на 4 800 строк в 37 файлах, который меняет раннер, политику повторов, отчётность и фикстуры, но не добавляет тестов самого фреймворка. Что должен сделать сеньор, как менти должен перестроить и представить изменение и какие числовые гейты применить?
fixturescode-reviewresilience - 97
Менти заводит баг с заголовком Checkout broken, одним скриншотом, без версии сборки, окружения и логов, хотя ошибка возникает в 3 из 10 попыток. Что должен сделать сеньор, как менти должен улучшить и представить отчёт и какие числовые доказательства сделают его готовым к триажу?
- 98
План запуска от менти содержит 210 happy path сценариев для платёжного сервиса с 25 000 транзакций в день, но упускает риски отката схемы, дублирующихся вебхуков и расхождения часов. Что должен сделать сеньор, как менти должен исправить и представить план и какие числовые критерии покажут достаточное покрытие рисков?
transactionsschemacoverage - 99
Дашборд менти заявляет 94% покрытия автоматизацией, считая выполненные сценарии относительно требований, но включает пропущенные и устаревшие тесты, тогда как актуальная автоматизированная проверка есть только у 52% из 40 критических пользовательских путей. Что должен сделать сеньор, как менти должен исправить и представить метрику и какая числовая проверка предотвратит повторение вводящего в заблуждение отчёта?
coveragemonitoringvalidation - 100
Инцидент в продакшене создаёт дублирующиеся возвраты для 1 800 заказов и риск потери 72 000 долларов, потому что менти не включил тест идемпотентности в релизный набор. Что должен сделать сеньор, как менти должен исправить и представить пробел и какие числовые проверки должны закрыть действие?
incidentsidempotency