Начните с риска и oracle, затем выберите самый дешёвый уровень теста, который даст полезное доказательство. Название инструмента само по себе не является стратегией.
Вопросы и ответы
15 подробных ответов
01В чём разница между верификацией и валидацией?
junior
Короткий ответ: Верификация отвечает на вопрос «делаем ли мы продукт правильно» — соответствует ли он спецификации и требованиям. Валидация отвечает «делаем ли мы правильный продукт» — решает ли он реальную задачу пользователя. Verification — про соответствие документам, validation — про соответствие ожиданиям.
Подробно:
- Верификация — проверка соответствия артефакта его спецификации. Часто статическая: ревью требований, инспекция кода, сверка с ТЗ. Отвечает: «построили ли по чертежу?».
- Валидация — проверка, что готовая система закрывает потребность пользователя. Обычно динамическая: реальное выполнение, приёмочное тестирование, демо заказчику. Отвечает: «а нужен ли был этот чертёж?».
- Порядок — верификация раньше и дешевле, валидация ближе к релизу.
| Критерий | Верификация | Валидация |
|---|---|---|
| Вопрос | делаем правильно? | делаем правильное? |
| Эталон | спецификация | нужды пользователя |
| Тип | чаще статическая | чаще динамическая |
| Пример | ревью, инспекция | приёмочный тест, демо |
⚠️ Частая ошибка: сыпать примерами («ревью — это верификация») без двух чеканных формулировок «делаем ли правильно» / «делаем ли правильное». Именно их слушает интервьюер.
02Какие уровни тестирования существуют и кто за какой отвечает?
junior
Короткий ответ: По ISTQB четыре уровня: модульное (unit), интеграционное, системное и приёмочное. Юнит-тесты пишут разработчики, интеграцию — разработчики и QA, системное — QA, приёмочное — QA вместе с заказчиком/бизнесом. Уровни отражают форму пирамиды: чем ниже, тем больше и дешевле тесты.
Подробно:
- Unit — отдельный модуль/функция в изоляции. Владелец — разработчик, обычно в CI на каждый коммит.
- Integration — взаимодействие модулей и внешних систем (API, БД). Владелец — разработчик и/или QA.
- System — вся система целиком против требований, end-to-end. Владелец — QA.
- Acceptance (UAT) — готова ли система к передаче с точки зрения бизнеса. Владелец — заказчик/PO при поддержке QA.
| Уровень | Что проверяет | Кто отвечает |
|---|---|---|
| Unit | отдельный модуль | разработчик |
| Integration | связки модулей/API | разработчик + QA |
| System | систему целиком | QA |
| Acceptance | готовность для бизнеса | заказчик + QA |
⚠️ Частая ошибка: путать уровни тестирования с видами (smoke, регрессия, нагрузочное). Уровень — это про масштаб объекта, вид — про цель проверки; они ортогональны.
03Какие виды тестирования вы знаете и как их классифицировать?
junior
Короткий ответ: Виды тестирования удобнее не перечислять списком, а раскладывать по осям классификации: по цели (функциональное / нефункциональное), по знанию кода (black / white / grey box), по степени автоматизации (ручное / автоматизированное) и по этапу/цели прогона (smoke, регрессия, приёмочное). Структура важнее длины списка.
Подробно:
- По цели — функциональное (что делает система) vs нефункциональное (производительность, безопасность, юзабилити).
- По доступу к коду — black box (без кода), white box (полное знание), grey box (частичное).
- По автоматизации — ручное vs автоматизированное.
- По этапу/цели прогона — smoke, sanity, регрессия, приёмочное.
| Ось классификации | Варианты |
|---|---|
| Цель | функциональное / нефункциональное |
| Знание кода | black / white / grey box |
| Автоматизация | ручное / авто |
| Этап прогона | smoke / sanity / регрессия / приёмка |
⚠️ Частая ошибка: вывалить кучу терминов («нагрузочное, дымовое, регрессионное, юзабилити…») без логики группировки. Интервьюер оценивает системность мышления, а не длину списка.
04Чем smoke-тестирование отличается от sanity-тестирования?
junior
Короткий ответ: Smoke — широкая и поверхностная проверка, что билд вообще живой и его имеет смысл тестировать дальше (ключевые функции запускаются). Sanity — узкая и глубокая проверка одного конкретного фикса или фичи после изменения. Smoke — «в ширину», sanity — «в глубину».
Подробно:
- Smoke — прогоняем основные сценарии по верхам сразу после сборки: логин открывается, главные страницы грузятся. Если билд «дымит» — возвращаем разработчику, не тратя время на детальное тестирование.
- Sanity — после точечного изменения проверяем, что именно эта область работает корректно, обычно без полного регресса.
- Формализация — smoke чаще автоматизирован и задокументирован, sanity бывает неформальным.
| Критерий | Smoke | Sanity |
|---|---|---|
| Охват | широкий, весь билд | узкий, одна область |
| Глубина | поверхностный | глубокий |
| Когда | сразу после сборки | после точечного фикса |
| Цель | билд пригоден к тесту? | фикс работает? |
⚠️ Частая ошибка: использовать smoke и sanity как синонимы. Это классический трап-вопрос: разница именно в паре «широкий-поверхностный» против «узкий-глубокий».
05В чём разница между регрессионным тестированием и retest?
junior
Короткий ответ: Retest (перепроверка) подтверждает, что конкретный заведённый баг исправлен — прогоняем ровно те же шаги, что и в баг-репорте. Регрессия проверяет, что этот фикс (или любое другое изменение) не сломал остальную, ранее работавшую функциональность вокруг.
Подробно:
- Retest — идёт по шагам конкретного дефекта, ожидая, что теперь баг воспроизвести не удаётся. Выполняется точечно и только на пофикшенных багах.
- Регрессия — набор тестов по смежной и ключевой функциональности; отвечает на вопрос «не сломалось ли то, что раньше работало». Хороший кандидат на автоматизацию, так как повторяется на каждом релизе.
- Порядок — сперва retest (баг закрыт?), затем регрессия вокруг.
фикс бага #123
│
┌──────┴───────┐
▼ ▼
retest #123 регрессия
(те же шаги) (смежные фичи —
баг ушёл? ничего не сломалось?)
⚠️ Частая ошибка: смешивать понятия — «я перетестировал, значит сделал регрессию». Retest — про один баг по тем же шагам, регрессия — про сохранность всего остального.
06Чем отличаются black box, white box и grey box подходы?
junior
Короткий ответ: Ось различия — насколько тестировщик знает внутреннее устройство системы. Black box — только вход/выход, взгляд пользователя, без доступа к коду. White box — полное знание кода и структуры (юнит-тесты, покрытие ветвей). Grey box — частичное знание: например, знаешь схему БД и API, но не исходники.
Подробно:
- Black box — тестируем поведение по требованиям, не заглядывая в код. Техники: классы эквивалентности, граничные значения. Взгляд конечного пользователя.
- White box — тестируем структуру: ветви, условия, пути. Нужен доступ к коду; типично для разработчиков и юнит-тестов.
- Grey box — гибрид: часть внутренностей известна (структура БД, контракты API), что помогает точнее готовить данные и проверять интеграции.
| Подход | Знание кода | Кто и техники |
|---|---|---|
| Black box | нет | QA; эквивалентность, границы |
| White box | полное | dev; покрытие ветвей/путей |
| Grey box | частичное | интеграция, security, API |
⚠️ Частая ошибка: путать эти методы с уровнями тестирования (unit / integration / system). Box-подход — про доступ к коду, уровень — про масштаб объекта; на одном уровне можно применять разные подходы.
07Что такое SDLC и STLC и как они связаны?
junior
Короткий ответ: SDLC (Software Development Life Cycle) — весь жизненный цикл разработки продукта от идеи до поддержки. STLC (Software Testing Life Cycle) — цикл тестирования внутри него: от анализа требований до закрытия тестов. STLC не идёт «после разработки», а вплетён в SDLC с самых ранних фаз (shift-left).
Подробно:
- SDLC — фазы: требования → проектирование → разработка → тестирование → внедрение → поддержка.
- STLC — фазы: анализ требований → планирование → дизайн тест-кейсов → подготовка окружения → выполнение → закрытие.
- Связь (shift-left) — тестирование стартует уже на анализе требований (ищем неясности и противоречия статически), а не только на готовом билде.
Анализ треб. → Планирование → Дизайн кейсов
→ Настройка окружения → Выполнение → Закрытие
⚠️ Частая ошибка: считать SDLC и STLC одним и тем же или ставить тестирование только «в конце, после разработки». Ранний старт STLC (shift-left) ловит дефекты, когда чинить их дешевле всего.
08Назовите семь принципов тестирования по ISTQB.
middle
Короткий ответ: Семь принципов ISTQB: тестирование показывает наличие дефектов, а не их отсутствие; исчерпывающее тестирование невозможно; раннее тестирование экономит деньги; дефекты кластеризуются; парадокс пестицида; тестирование зависит от контекста; заблуждение об отсутствии ошибок.
Подробно:
- Наличие дефектов — тесты доказывают, что баги есть, но не могут доказать, что их нет.
- Исчерпывающее невозможно — все комбинации входов не проверить; нужны приоритеты и риск-анализ.
- Раннее тестирование — чем раньше найден дефект, тем дешевле фикс (shift-left).
- Кластеризация дефектов — ~80% багов концентрируются в ~20% модулей (принцип Парето).
- Парадокс пестицида — одни и те же тесты со временем перестают находить новое; кейсы надо обновлять.
- Зависимость от контекста — банкинг и игру тестируют по-разному.
- Заблуждение об отсутствии ошибок — продукт без багов, но не решающий задачу пользователя, всё равно провальный.
⚠️ Частая ошибка: путать «заблуждение об отсутствии ошибок» (нашли все баги, но продукт не тот) с «невозможностью исчерпывающего тестирования» (нельзя проверить всё). Это разные принципы.
09Что такое пирамида тестирования и почему UI-тестов должно быть меньше всего?
middle
Короткий ответ: Пирамида тестирования — модель распределения автотестов по слоям: много быстрых и дешёвых unit-тестов в основании, меньше API/интеграционных в середине и минимум медленных UI/E2E-тестов на вершине. UI-тестов меньше всего, потому что они самые медленные, хрупкие (флаки) и дорогие в поддержке.
Подробно:
- Unit (основание) — тысячи тестов, миллисекунды, ловят баги на уровне логики, быстрый фидбэк разработчику.
- Integration / API (середина) — проверяют связки и контракты; их меньше, они медленнее.
- UI / E2E (вершина) — их единицы, гоняют через реальный интерфейс; медленные, ломаются от любой мелочи в вёрстке, дорого чинить.
/\ UI / E2E — мало, медленно, флаки
/ \
/----\ Integration / API
/ \
/--------\ Unit — много, быстро, дёшево
⚠️ Частая ошибка: назвать слои, но не объяснить «почему». Интервьюер ждёт именно причину: скорость обратной связи и стоимость поддержки. Перевёрнутая пирамида (много E2E) — антипаттерн «ice-cream cone».
10Чем функциональное тестирование отличается от нефункционального?
junior
Короткий ответ: Функциональное тестирование проверяет, что система делает — соответствует ли поведение требованиям (кнопка «Оплатить» списывает деньги). Нефункциональное проверяет, насколько хорошо она это делает — производительность, безопасность, юзабилити, надёжность (оплата проходит за 2 секунды под нагрузкой).
Подробно:
- Функциональное — по функциональным требованиям: логин, поиск, оформление заказа, расчёты. Ответ «да/нет: работает как в спеке».
- Нефункциональное — по атрибутам качества: скорость, устойчивость к нагрузке, защищённость, доступность, удобство. Ответ измеряется в цифрах (latency, RPS, uptime).
- Оба нужны — функционально верная, но тормозящая или дырявая по безопасности система всё равно непригодна.
| Критерий | Функциональное | Нефункциональное |
|---|---|---|
| Вопрос | что делает? | насколько хорошо? |
| Эталон | функц. требования | атрибуты качества |
| Примеры | логин, поиск, оплата | нагрузка, security, usability |
| Оценка | да/нет | метрики (мс, RPS, %) |
⚠️ Частая ошибка: давать определения без примеров и без чеканной пары «что делает» vs «насколько хорошо». Пример на каждую сторону закрывает вопрос.
11В чём разница между load-, stress-, soak- и spike-тестированием?
middle
Короткий ответ: Это четыре вида нагрузочного тестирования по профилю нагрузки. Load — ожидаемая/пиковая штатная нагрузка. Stress — за пределы возможностей, до точки отказа. Soak (endurance) — умеренная нагрузка на длинной дистанции (утечки памяти, деградация). Spike — резкий короткий всплеск и возврат.
Подробно:
- Load — держим прогнозируемое число пользователей; проверяем, что метрики (latency, RPS) в SLA.
- Stress — наращиваем нагрузку выше нормы, чтобы найти точку отказа и понять, как система деградирует и восстанавливается.
- Soak / endurance — часы-сутки под нагрузкой; ловим утечки памяти, распухание логов, деградацию во времени.
- Spike — мгновенный скачок (распродажа, рассылка) и резкий спад; проверяем эластичность и авто-скейлинг.
| Вид | Профиль нагрузки | Что ищем |
|---|---|---|
| Load | ожидаемый пик | соответствие SLA |
| Stress | выше предела | точку отказа |
| Soak | долго, стабильно | утечки, деградацию |
| Spike | резкий всплеск | эластичность |
⚠️ Частая ошибка: смешивать load и stress. Load — «выдержит ли штатную нагрузку», stress — «где сломается и как поведёт себя за пределом». Даже ручной QA обязан знать эту таксономию.
12Что такое исследовательское (exploratory) тестирование и когда оно эффективнее тест-кейсов?
middle
Короткий ответ: Исследовательское тестирование — это одновременное изучение продукта, проектирование и выполнение тестов без заранее написанных сценариев, управляемое опытом и суждением тестировщика. Оно эффективнее скриптов на новых или плохо специфицированных фичах, при проверке юзабилити и поиске edge-cases, где заранее не угадать все проверки.
Подробно:
- Суть — тестировщик учится на ходу: результат каждого шага подсказывает следующий. Дизайн и выполнение слиты воедино.
- Когда сильнее — новая фича без чётких требований, юзабилити, «а что если», охота на неочевидные баги, нехватка времени на формальные кейсы.
- Session-based (SBTM) — чтобы это не было хаосом: фиксированный тайм-бокс (60–90 мин), charter (цель сессии) и заметки по ходу.
| Критерий | Exploratory | Scripted |
|---|---|---|
| Сценарии | по ходу | заранее написаны |
| Сильно на | новом, неясном, UX | стабильном, регрессе |
| Управление | charter + сессии | тест-кейсы |
| Повторяемость | ниже | высокая |
⚠️ Частая ошибка: называть exploratory «хаотичным тыканьем без плана». Это структурированный подход: session-based testing, charters и логи сессий делают его управляемым и отчётным.
13Что такое статическое и динамическое тестирование? Приведите примеры.
middle
Короткий ответ: Статическое тестирование проверяет артефакты без выполнения кода — ревью и анализ. Динамическое проверяет систему во время выполнения — реальный запуск с входными данными. Статика ловит дефекты раньше и дешевле, динамика проверяет фактическое поведение.
Подробно:
- Статическое — ревью требований, инспекция кода, walkthrough, статический анализ (линтеры, SonarQube). Находит дефекты в документах и коде до запуска, часто на этапе требований.
- Динамическое — прогон тест-кейсов, unit/integration/system, нагрузочное. Требует собранного, работающего билда.
- Экономика — исправление дефекта, найденного на ревью требований, в разы дешевле, чем в проде; отсюда ценность статики и shift-left.
| Критерий | Статическое | Динамическое |
|---|---|---|
| Выполнение кода | нет | да |
| Примеры | ревью, анализ, инспекция | unit, E2E, нагрузка |
| Когда | с этапа требований | на готовом билде |
| Ловит | дефекты в артефактах | сбои поведения |
⚠️ Частая ошибка: считать, что тестирование начинается только с готового билда. Это противоречит принципу раннего тестирования: статические проверки требований — тоже полноценное тестирование.
14Что такое «парадокс пестицида» и что с ним делать?
concept
Короткий ответ: Парадокс пестицида — один из принципов ISTQB: если гонять один и тот же набор тестов снова и снова, со временем он перестаёт находить новые дефекты. Как вредители привыкают к пестициду, так и код «иммунен» к неизменным тестам — они проверяют лишь то, что уже давно работает.
Подробно:
Что с этим делать:
- Регулярно пересматривать и обновлять кейсы — добавлять новые проверки под изменившуюся функциональность и найденные в проде баги.
- Добавлять exploratory-сессии — незаскриптованное тестирование находит то, что фиксированный набор пропускает по определению.
- Варьировать тестовые данные — новые входы, граничные значения, комбинации, а не один и тот же датасет.
- Ротировать и чистить набор — выносить устаревшие кейсы, дописывать под новые риски.
⚠️ Частая ошибка: воспринимать зелёный прогон регресса как «багов нет». Стабильно зелёные неизменные тесты чаще означают, что они просто перестали искать новое, а не что качество идеально.
15QA, QC и тестирование — это одно и то же?
junior
Короткий ответ: Нет. QA (Quality Assurance) — про процессы и предотвращение дефектов (process-oriented). QC (Quality Control) — про контроль качества уже готового продукта (product-oriented). Тестирование — это инструмент внутри QC. Отношение вложенное: QA ⊃ QC ⊃ тестирование.
Подробно:
- QA — выстраивает процессы, стандарты, ревью, чтобы дефекты не возникали (proactive, о процессе). Пример: внедрение code review и Definition of Done.
- QC — проверяет готовый продукт на соответствие требованиям, ловит уже допущенные дефекты (reactive, о продукте).
- Тестирование — конкретная активность QC: выполнение тест-кейсов, поиск багов.
┌──────────────────────────────┐
│ QA — процессы, профилактика │
│ ┌────────────────────────┐ │
│ │ QC — контроль продукта │ │
│ │ ┌─────────────────┐ │ │
│ │ │ Тестирование │ │ │
│ │ └─────────────────┘ │ │
│ └────────────────────────┘ │
└──────────────────────────────┘
⚠️ Частая ошибка: использовать QA, QC и тестирование как синонимы. Ключевое различие: QA предотвращает дефекты (процесс), QC обнаруживает их (продукт), тестирование — частный метод обнаружения.
Источники
Источники и редакционная политика
Материалы RecallDeck сопоставлены с официальной документацией и открытыми публикациями компаний, когда первичный источник доступен. Мы не связаны с упомянутыми работодателями, не публикуем конфиденциальные задания и не продаём места в подборках. Формат найма может меняться — уточняйте его у рекрутера.
От чтения к воспроизведению
Отрепетируйте полный цикл интервью.
RecallDeck возвращает сложные темы по расписанию и помогает удерживать в памяти язык, SQL, архитектуру и поведенческие истории.