Начните с риска и oracle, затем выберите самый дешёвый уровень теста, который даст полезное доказательство. Название инструмента само по себе не является стратегией.
Вопросы и ответы
11 подробных ответов
01Что такое классы эквивалентности? Разбейте на классы поле возраста 18–65.
middle
Короткий ответ: Классы эквивалентности (equivalence partitioning) — это разбиение области входных данных на группы, внутри которых система ведёт себя одинаково, поэтому достаточно проверить одного представителя от каждого класса. Для возраста 18–65 берём один валидный класс и три-четыре невалидных.
Подробно:
- Идея — если 20 и 40 обрабатываются одним и тем же кодом, то тест с одним из них покрывает весь класс; перебирать все значения бессмысленно.
- Валидный класс — 18–65 (представитель, например, 30).
- Невалидные классы — обязательно несколько: слишком мало, слишком много, не число, пустое поле.
- Экономия — вместо перебора 48 валидных значений (и бесконечного числа невалидных) — 5 осмысленных тестов.
| Класс | Представитель | Ожидание |
|---|---|---|
| Валидный 18–65 | 30 | принято |
| < 18 | 10 | ошибка |
| > 65 | 80 | ошибка |
| Не число | "abc" | ошибка валидации |
| Пусто | "" | ошибка «обязательное поле» |
⚠️ Частая ошибка: назвать только валидный класс и забыть про невалидные — а именно на них интервьюер и ждёт, что вы вспомните про "abc", пустое поле и границы.
02Что такое анализ граничных значений и как он связан с классами эквивалентности?
middle
Короткий ответ: Анализ граничных значений (boundary value analysis, BVA) — это проверка значений на краях классов эквивалентности и вокруг них, потому что дефекты кластеризуются именно на границах. BVA — прямое продолжение классов эквивалентности: сначала делим домен на классы, потом целимся в их края.
Подробно:
- Почему края — типичные баги живут в условиях
>=vs>, off-by-one, неверная граница диапазона. - Правило трёх точек — для каждой границы берём значение до неё, на ней и сразу после.
- Для 18–65 — нижняя граница: 17 / 18 / 19; верхняя: 64 / 65 / 66.
- Связь с EP — классы говорят какие группы проверять, BVA говорит где внутри группы искать ошибку.
невалидно │ валидно 18..65 │ невалидно
────────────┼────────────────┼────────────
17 │ 18 65 │ 66
↑нет│ ↑да ↑да │ ↑нет
⚠️ Частая ошибка: проверить только одну сторону границы (только 18, но не 17) или только валидную сторону — тогда off-by-one на верхней границе спокойно уедет в прод.
03Что такое pairwise-тестирование и какую проблему оно решает?
middle
Короткий ответ: Pairwise (попарное) тестирование — это техника, где вместо полного перебора комбинаций параметров покрываются все пары значений. Она решает комбинаторный взрыв: полная матрица параметров растёт мультипликативно, а большинство багов вызывается взаимодействием не более двух параметров.
Подробно:
- Проблема — 3 браузера × 3 ОС × 3 локали = 27 комбинаций; четвёртый параметр — уже 81, пятый — 243.
- Гипотеза — эмпирически большинство дефектов зависит от одного параметра или пары, а не от тройного стечения.
- Решение — набор тестов, где каждая пара значений (например, Chrome+Windows, Chrome+macOS) встречается хотя бы раз.
- Результат — с 27 комбинаций сжимаемся до ~9 при сохранении покрытия всех пар (генерируется инструментами вроде PICT/Allpairs).
| Полный перебор | Pairwise | |
|---|---|---|
| 3×3×3 | 27 тестов | ~9 тестов |
| Покрытие | все тройки | все пары |
| Риск | 0 | пропуск дефектов от 3+ параметров |
⚠️ Частая ошибка: не суметь назвать trade-off. Pairwise экономит усилия, но не ловит баги, требующие совпадения трёх и более параметров — про это нужно честно сказать интервьюеру.
04Когда применять таблицу решений (decision table)?
middle
Короткий ответ: Таблицу решений применяют, когда результат зависит от комбинации нескольких независимых условий и нужно систематически покрыть все их сочетания. Она перечисляет условия и ожидаемые действия в виде матрицы и ловит пропущенные комбинации бизнес-правил.
Подробно:
- Признак применимости — в требованиях появляются «если… И… ИЛИ…» с несколькими флагами (лояльность, сумма, промокод).
- Структура — строки условий сверху, строки действий снизу; каждый столбец — одно правило.
- Полнота — N булевых условий дают 2^N комбинаций (здесь 2³ = 8); «не важно» (—) схлопывает их в меньшее число правил.
- Ценность — визуально видно, какая комбинация в требованиях не описана.
| Условие | R1 | R2 | R3 | R4 | R5 |
|---|---|---|---|---|---|
| Уровень лояльности Gold | Да | Да | Да | Нет | Нет |
| Сумма > 5000 | Да | Нет | Нет | — | — |
| Есть промокод | — | Да | Нет | Да | Нет |
| → Скидка | 20% | 15% | 10% | 5% | 0% |
⚠️ Частая ошибка: проверять условия по отдельности вместо их комбинаций — именно на стыке правил («Gold + промокод») чаще всего и живёт баг. Типичный вопрос банковских и e-com раундов.
05Что такое тестирование переходов состояний? Приведите пример.
middle
Короткий ответ: Тестирование переходов состояний (state transition testing) применяют к системам, где объект проходит через набор статусов, а поведение зависит от текущего состояния. Мы проверяем валидные переходы, запрещённые переходы и краевые (начальное/терминальное) состояния.
Подробно:
- Модель — заказ живёт по цепочке: New → Paid → Shipped → Delivered.
- Валидные переходы — каждый разрешённый шаг должен работать (Paid → Shipped).
- Запрещённые переходы — система обязана отклонять невозможное (Delivered → New, повторная оплата Paid → Paid).
- Краевые состояния — что происходит в начальном (New без оплаты) и терминальном (Delivered — дальше некуда).
New ──pay──► Paid ──ship──► Shipped ──deliver──► Delivered
│ │
└── cancel ──► Cancelled (Delivered ─X─► New) запрещён
⚠️ Частая ошибка: проверить только «зелёный» путь по статусам и не протестировать запрещённые переходы — а именно возможность нелегально откатить статус (отгрузить уже доставленный заказ) чаще всего и оказывается дырой.
06Когда достаточно лёгкого списка проверок вместо полноценных тест-кейсов?
junior
Короткий ответ: Полноценный тест-кейс с предусловиями, шагами и ожидаемым результатом нужен там, где важна воспроизводимость и трассируемость: аудит, комплаенс, сложные многошаговые флоу. Лёгкий чек-лист достаточен для регрессии по стабильным фичам и exploratory-сессий, где важнее скорость.
Подробно:
- Тест-кейс — формальный документ, любой может повторить шаг в шаг; дорого писать и поддерживать.
- Чек-лист — список того, что проверить, без детальных шагов; быстро составить, гибко использовать.
- Критерий выбора — цена поддержки против требований к строгости и аудируемости.
| Тест-кейс | Лёгкий список проверок | |
|---|---|---|
| Детализация | шаги + ожидаемый результат | пункты «что проверить» |
| Когда | аудит, комплаенс, сложные флоу | регрессия по стабильному, exploratory |
| Цена | высокая | низкая |
| Повторяемость | точная | зависит от инженера |
⚠️ Частая ошибка: тянуть тяжёлые формальные тест-кейсы туда, где хватает списка проверок, и утонуть в поддержке документации вместо реального тестирования. Интервьюер хочет услышать обоснование выбора при нехватке времени.
07Чем тест-план отличается от тест-стратегии?
junior
Короткий ответ: Тест-стратегия — это высокоуровневый, переиспользуемый подход к тестированию уровня организации или продукта (какие виды тестирования, инструменты, стандарты). Тест-план — это конкретный документ под проект или релиз: scope, сроки, ресурсы, риски, критерии выхода.
Подробно:
- Уровень — стратегия задаёт принципы «как мы вообще тестируем», план приземляет их на конкретный релиз.
- Срок жизни — стратегия стабильна и меняется редко; план живёт от релиза к релизу.
- Содержимое — стратегия: подходы, типы тестов, среды, стандарты; план: что, кто, когда, чем, критерии готовности.
| Критерий | Тест-стратегия | Тест-план |
|---|---|---|
| Уровень | организация / продукт | проект / релиз |
| Срок жизни | долгий, стабильный | короткий, под релиз |
| Отвечает на | как тестируем в принципе | что тестируем сейчас |
| Содержимое | подходы, типы, стандарты | scope, сроки, ресурсы, риски |
⚠️ Частая ошибка: употреблять эти термины как взаимозаменяемые. Если на собеседовании назвать план стратегией, интервьюер сразу считывает поверхностное знание процесса.
08Как приоритизировать тесты, если до релиза остался один день?
middle
Короткий ответ: Использую risk-based подход: сначала критичные бизнес-пути и деньги, потом самые частые сценарии, потом недавно изменённый и исторически багованный код. Цель — за оставшееся время закрыть максимум риска, а не «протестировать всё».
Подробно (порядок приоритета):
- Критичные бизнес-пути — то, без чего продукт не приносит денег: логин, оформление заказа, оплата.
- Часто используемые фичи — где большинство пользователей, там дороже баг.
- Регуляторные и платёжные флоу — цена ошибки не только в деньгах, но и в штрафах.
- Недавно изменённый код — свежие правки = свежие дефекты; смотрю диф релиза.
- Исторически проблемные зоны — модули с прошлыми инцидентами по багтрекеру.
- Всё остальное — если останется время; иначе осознанный риск.
риск = вероятность дефекта × ущерб
сортируем тесты по убыванию риска ─► идём сверху вниз, пока не кончится день
⚠️ Частая ошибка: ответить «протестирую всё важное» без фреймворка. Интервьюер ждёт именно критерий приоритизации (риск = вероятность × ущерб) и осознанное решение, что НЕ тестируем.
09Какие тесты стоит автоматизировать, а какие оставить ручными?
middle
Короткий ответ: Автоматизировать стоит стабильные, повторяемые и критичные проверки с высоким ROI — регрессию, smoke, API. Ручными оставить то, что автоматизировать дорого или бессмысленно: быстро меняющийся UI, разовые exploratory-проверки, оценку визуальных нюансов и юзабилити.
Подробно:
- Кандидаты на автоматизацию — прогоняются часто, стабильный интерфейс, детерминированный результат, дорогой ручной прогон.
- Оставить руками — новый или нестабильный UI (автотест сломается раньше, чем окупится), exploratory, визуал и UX.
- Критерий — ROI: экономия от повторных прогонов минус стоимость написания и поддержки теста.
| Автоматизировать | Оставить ручным |
|---|---|
| Регрессия, smoke | Exploratory-сессии |
| API- и бэкенд-проверки | Разовые проверки |
| Стабильные критичные пути | Быстро меняющийся UI |
| Нагрузочное, data-driven | Визуал, юзабилити, вёрстка |
⚠️ Частая ошибка: ответить «автоматизируем всё» без оценки стоимости поддержки. Автотест по нестабильному UI ломается каждый спринт и съедает больше времени, чем экономит — это отрицательный ROI.
10Что такое позитивные и негативные тесты? Приведите примеры для поля email.
junior
Короткий ответ: Позитивные тесты проверяют, что система работает на валидных данных (happy path). Негативные проверяют, что система корректно обрабатывает невалидный ввод — не падает, не пропускает мусор, а показывает внятную ошибку.
Подробно:
- Позитивные — валидный ввод даёт ожидаемый результат:
user@mail.comпринимается. - Негативные — невалидный ввод отклоняется с понятной ошибкой, а не 500-й: пустое, без @, инъекция.
- Баланс — негативных сценариев обычно больше, чем позитивных: невалидных состояний всегда больше, чем валидных.
| Тип | Значение | Ожидание |
|---|---|---|
| Позитив | user@mail.com |
принято |
| Негатив | usermail.com (нет @) |
ошибка формата |
| Негатив | "" (пусто) |
«обязательное поле» |
| Негатив | строка в 300 символов | отклонено по длине |
| Негатив | a@b.com' OR 1=1-- |
экранировано, не выполнено |
⚠️ Частая ошибка: покрыть только happy path и отчитаться «работает». Реальные баги и уязвимости живут в негативных сценариях — пустой ввод, спецсимволы, инъекции.
11Что такое use case и чем он отличается от тест-кейса?
middle
Короткий ответ: Use case описывает, как актор достигает цели во взаимодействии с системой: основной поток плюс альтернативные и исключительные. Тест-кейс — это конкретная проверка с шагами и ожидаемым результатом. Из одного use case выводится множество тест-кейсов.
Подробно:
- Use case — уровень требований: актор, предусловия, основной поток, альтернативы, исключения. Отвечает «что должна уметь система».
- Тест-кейс — уровень проверки: конкретные данные, шаги, ожидаемый результат. Отвечает «как убедиться, что работает».
- Связь — один use case «Оплатить заказ» порождает тест-кейсы: успешная оплата, недостаточно средств, истёкшая карта, таймаут шлюза.
Use case «Оплатить заказ»
│
┌────────┼─────────┬──────────────┐
▼ ▼ ▼ ▼
успех нет денег карта истекла таймаут
(TC-1) (TC-2) (TC-3) (TC-4)
⚠️ Частая ошибка: считать use case и тест-кейс одним документом под разными названиями. Use case описывает поведение, тест-кейс его проверяет; из одного сценария всегда рождается веер проверок, включая негативные.
Источники
Источники и редакционная политика
Материалы RecallDeck сопоставлены с официальной документацией и открытыми публикациями компаний, когда первичный источник доступен. Мы не связаны с упомянутыми работодателями, не публикуем конфиденциальные задания и не продаём места в подборках. Формат найма может меняться — уточняйте его у рекрутера.
От чтения к воспроизведению
Отрепетируйте полный цикл интервью.
RecallDeck возвращает сложные темы по расписанию и помогает удерживать в памяти язык, SQL, архитектуру и поведенческие истории.