Основы тестирования
Базовые понятия тестирования ПО — QA против QC, уровни и виды тестирования, жизненный цикл дефекта и место тестирования в SDLC.
21 вопросов
JuniorТеорияОчень частоВ чём разница между black-box, white-box и grey-box тестированием?
В чём разница между black-box, white-box и grey-box тестированием?
Black-box проверяет поведение через интерфейс без знания внутренностей — фокус на требованиях. White-box проверяет с полным доступом к коду и структуре — фокус на путях и ветках. Grey-box сочетает оба: вы тестируете снаружи, но используете частичное знание внутренностей (БД, API) для более умных проверок.
Типичные ошибки
- ✗Менять местами black-box (без внутренностей) и white-box (полные внутренности)
- ✗Говорить, что grey-box не требует знаний вообще
- ✗Привязывать цвета к артефакту UI, а не к объёму знаний о внутренностях
Уточняющие вопросы
- →Какой уровень тестирования обычно white-box?
- →Приведите пример, где знание grey-box улучшает black-box проверку.
JuniorТеорияОчень частоЧто такое баг-репорт и что он должен содержать?
Что такое баг-репорт и что он должен содержать?
Баг-репорт — это задокументированное описание дефекта, позволяющее другим воспроизвести и исправить его. Основные поля: чёткий заголовок/summary, окружение, предусловия, нумерованные шаги воспроизведения, ожидаемый результат против фактического, severity и priority, а также вложения (скриншоты, скринкасты, логи, стектрейсы). Пара ожидаемое-против-фактического — его сердце.
Типичные ошибки
- ✗Опускать шаги воспроизведения или делать их ненумерованными и расплывчатыми
- ✗Не указывать ожидаемый результат, давая только фактический
- ✗Забывать детали окружения, из-за чего баг не воспроизводится
Уточняющие вопросы
- →Почему нужны и ожидаемый, и фактический результат, а не только фактический?
- →Что делает заголовок баг-репорта хорошим, а не расплывчатым?
JuniorТеорияОчень частоВ чём разница между severity и priority дефекта?
В чём разница между severity и priority дефекта?
Severity — насколько сильно дефект влияет на работу системы (blocker, critical, major, minor) — техническая оценка, обычно выставляемая тестировщиком. Priority — насколько срочно его надо исправить — управленческая оценка, выставляемая лидом/менеджером по влиянию на бизнес. Они независимы: опечатка в логотипе может быть low severity, но high priority.
Типичные ошибки
- ✗Говорить, что severity и priority всегда растут и падают вместе
- ✗Приписывать оба решения одной и той же роли
- ✗Путать, что из них технический ущерб, а что — бизнес-срочность
Уточняющие вопросы
- →Приведите пример дефекта с high severity, но low priority.
- →Кто обычно выставляет severity, а кто priority?
MiddleТеорияОчень частоЧем отличаются smoke- и regression-тестирование и как отбирать кейсы для каждого?
Чем отличаются smoke- и regression-тестирование и как отбирать кейсы для каждого?
Smoke-тестирование — поверхностная широкая проверка, что критичные пути сборки работают и её есть смысл тестировать дальше; небольшой быстрый набор, запускаемый первым на каждой сборке. Regression-тестирование перепроверяет, что новые изменения не сломали существующую функциональность; оно шире и глубже. Smoke-кейсы отбирают по критичности — те немногие потоки, что обязаны работать; regression — по анализу влияния: области, которых изменение могло коснуться, плюс исторически хрупкие места. Для мелкого хотфикса хватит smoke вокруг правки.
Типичные ошибки
- ✗Приравнивать глубину smoke к глубине регресса
- ✗Отбирать regression-кейсы без анализа влияния
- ✗Гонять полный регресс на каждый тривиальный хотфикс
Уточняющие вопросы
- →Когда хотфикс всё же потребует полного регресса, несмотря на малый размер?
- →Как smoke-тестирование связано с приёмкой сборки в CI?
JuniorТеорияЧастоКаковы распространённые причины багов в ПО?
Каковы распространённые причины багов в ПО?
Баги возникают в основном из-за человеческих факторов и пробелов в процессе: человеческие ошибки в проектировании и кодировании, требования, меняющиеся посреди проекта, непонятые или неоднозначные спецификации, нехватка времени, вынуждающая срезать углы, плохая приоритизация того, что тестировать, путаница между версиями ПО и сама сложность системы. Большинство дефектов восходит к коммуникации и требованиям, а не только к опечаткам в коде.
Типичные ошибки
- ✗Сводить все баги только к опечаткам в коде
- ✗Игнорировать требования и коммуникацию как корневую причину
- ✗Забывать, что нехватка времени и сложность порождают дефекты
Уточняющие вопросы
- →На какую из этих причин тестировщик может повлиять сильнее всего?
- →Как раннее тестирование снижает дефекты, связанные с требованиями?
JuniorТеорияЧастоЧем различаются error, defect и failure в цепочке ISTQB?
Чем различаются error, defect и failure в цепочке ISTQB?
Error (ошибка) — человеческое действие, дающее неверный результат, например разработчик неправильно понял требование. Эта ошибка вносит defect (дефект, fault) в код или документ. Когда дефектный код выполняется и ведёт себя неверно, наблюдаемый в эксплуатации результат — failure (сбой). Цепочка: error → defect → failure — причина-человек, статический изъян, эффект в рантайме.
Типичные ошибки
- ✗Переворачивать направление причинно-следственной цепочки
- ✗Считать три термина взаимозаменяемыми синонимами
- ✗Говорить, что defect всегда виден без запуска кода
Уточняющие вопросы
- →Может ли defect существовать, ни разу не вызвав failure?
- →На каком звене этой цепочки вмешивается статическое тестирование?
JuniorТеорияЧастоВ чём разница между позитивным и негативным тестированием?
В чём разница между позитивным и негативным тестированием?
Позитивное тестирование подаёт валидные данные и ожидаемые сценарии, чтобы убедиться, что система делает то, что должна («счастливый путь»). Негативное подаёт невалидные данные, неверные форматы и неожиданные действия, чтобы убедиться, что система корректно их отклоняет — показывает ошибку, когда должна, и не падает. Хорошая практика: сначала позитив, затем негатив.
Типичные ошибки
- ✗Менять местами, что использует валидный, а что невалидный ввод
- ✗Начинать сессию с негативных кейсов раньше позитивных
- ✗Считать, что негативное тестирование — это то же, что security-тестирование
Уточняющие вопросы
- →Почему рекомендуют сначала прогонять позитивные кейсы, а потом негативные?
- →Приведите два негативных кейса для числового поля ввода.
JuniorТеорияЧастоКакие этапы у жизненного цикла ПО и где в нём место тестирования?
Какие этапы у жизненного цикла ПО и где в нём место тестирования?
Жизненный цикл ПО охватывает период от первой концепции до момента, когда продукт больше нельзя использовать. Типичные этапы: идея и требования, дизайн, реализация, тестирование, развёртывание и настройка, эксплуатация и поддержка и в итоге вывод из эксплуатации. Тестирование — не один поздний этап: оно идёт через весь цикл — требования проверяют статически, код динамически, а поддержка продолжает проверять исправления в проде.
Типичные ошибки
- ✗Считать тестирование одним этапом только после разработки
- ✗Путать жизненный цикл ПО с жизненным циклом дефекта
- ✗Опускать этапы эксплуатации, поддержки и вывода из эксплуатации
Уточняющие вопросы
- →Как меняется стоимость исправления дефекта по этим этапам?
- →Какому этапу прежде всего помогает статическое тестирование?
JuniorТеорияЧастоНазовите уровни тестирования: unit, integration, system, acceptance.
Назовите уровни тестирования: unit, integration, system, acceptance.
Unit-тесты проверяют отдельный компонент в изоляции. Integration-тесты — взаимодействие между компонентами. System-тестирование валидирует весь интегрированный продукт по требованиям. Acceptance-тестирование подтверждает соответствие бизнес-нуждам и готовность к выпуску.
Типичные ошибки
- ✗Путать integration (взаимодействие компонентов) с system (весь продукт)
- ✗Считать acceptance просто ещё одним внутренним прогоном QA
- ✗Думать, что unit-тесты задействуют несколько компонентов вместе
Уточняющие вопросы
- →Кто обычно выполняет acceptance-тестирование?
- →Зачем изолировать unit с помощью моков или стабов?
JuniorТеорияЧастоЧем функциональное тестирование отличается от нефункционального? Что такое smoke, regression, sanity?
Чем функциональное тестирование отличается от нефункционального? Что такое smoke, regression, sanity?
Функциональное тестирование проверяет, что система делает, по требованиям; нефункциональное — насколько хорошо она это делает (производительность, безопасность, удобство). Smoke — поверхностная проверка приёмки сборки; sanity — узкая проверка одной правки; regression перепроверяет существующие фичи после изменений.
Типичные ошибки
- ✗Менять местами определения функционального (что) и нефункционального (насколько хорошо)
- ✗Путать smoke (широкий поверхностный) с sanity (узкий точечный)
- ✗Думать, что regression — это тест только изменённого кода
Уточняющие вопросы
- →Когда запускать smoke, а когда полный regression?
- →Назовите два нефункциональных атрибута качества.
JuniorТеорияЧастоВ чём разница между верификацией и валидацией?
В чём разница между верификацией и валидацией?
Верификация проверяет, что продукт построен по спецификации — «правильно ли мы строим продукт?». Валидация проверяет, что продукт отвечает реальным потребностям и назначению пользователя — «тот ли продукт мы строим?». Верификация сверяет с требованиями/дизайном, валидация — с фактическими ожиданиями.
Типичные ошибки
- ✗Менять местами две мнемоники (тот ли продукт против правильно ли строим)
- ✗Думать, что обе сверяют только с письменной спецификацией
- ✗Считать, что валидация происходит только в самом конце проекта
Уточняющие вопросы
- →Приведите пример ПО, которое проходит верификацию, но не проходит валидацию.
- →Какая из двух больше опирается на статические техники обзора?
MiddleТеорияЧастоОпишите жизненный цикл дефекта: состояния от new до closed/reopened.
Опишите жизненный цикл дефекта: состояния от new до closed/reopened.
Дефект проходит New → Assigned → Open (в работе) → Fixed → Retest, затем Closed, если подтверждён. Если правка не прошла retest, он становится Reopened и снова входит в цикл исправления. Невалидные или дублирующие отчёты получают статус Rejected или Duplicate, а не исправляются.
Типичные ошибки
- ✗Пропускать шаг Retest перед Closed
- ✗Забывать терминальные пути Rejected и Duplicate
- ✗Путать, кто исправляет (разработчик) и кто проверяет (тестировщик)
Уточняющие вопросы
- →На каком уровне обычно перепроверяют исправленный дефект?
- →Какой статус подходит отчёту, который не воспроизводится?
MiddleТеорияЧастоЧем критерии приостановки тестирования отличаются от критериев выхода (завершения)?
Чем критерии приостановки тестирования отличаются от критериев выхода (завершения)?
Критерии приостановки временно останавливают тестирование, когда продолжать бессмысленно — блокирующий дефект, слишком много багов, нет доступов/сборок или изменились требования; тестирование возобновляется, когда блокер устранён. Критерии выхода (завершения) завершают тестирование на этом цикле: запланированные тесты пройдены, покрытие и риск приемлемы, не осталось открытых blocker/critical дефектов (или вышли время/бюджет).
Типичные ошибки
- ✗Считать приостановку (временную) и выход (финальный) одним и тем же
- ✗Говорить, что выход всегда требует ноль дефектов любой severity
- ✗Игнорировать покрытие и риск при определении критериев завершения
Уточняющие вопросы
- →Назовите два события, которые приостановят тестирование посреди цикла.
- →Можно ли завершить тестирование с открытыми low-severity дефектами? Почему?
MiddleТеорияЧастоЧем STLC отличается от SDLC и как они соотносятся по фазам?
Чем STLC отличается от SDLC и как они соотносятся по фазам?
SDLC — это общий жизненный цикл ПО: требования, проектирование, разработка, тестирование, развёртывание, сопровождение. STLC — вложенный в него цикл, специфичный для тестирования: анализ требований, планирование, дизайн тестов, настройка окружения, выполнение и закрытие. STLC идёт параллельно, а не после SDLC.
Типичные ошибки
- ✗Считать, что STLC стартует только после полного завершения разработки SDLC
- ✗Менять местами, какая аббревиатура — более широкий цикл
- ✗Перечислять только выполнение, забывая фазы планирования/дизайна/закрытия
Уточняющие вопросы
- →Какая фаза STLC порождает тест-план?
- →Как раннее включение STLC связано с превентивной целью QA?
MiddleТеорияЧастоНазовите семь принципов тестирования ISTQB и поясните два из них.
Назовите семь принципов тестирования ISTQB и поясните два из них.
Семь: тестирование показывает наличие дефектов (но не их отсутствие); исчерпывающее тестирование невозможно; раннее тестирование экономит время и деньги; дефекты скапливаются; парадокс пестицида (повтор одних тестов перестаёт находить новые дефекты); тестирование зависит от контекста; заблуждение об отсутствии ошибок (система без багов бесполезна, если не отвечает нуждам пользователя).
Типичные ошибки
- ✗Утверждать, что тестирование доказывает отсутствие дефектов (оно показывает только наличие)
- ✗Путать скопление дефектов с равномерным распределением
- ✗Забывать, что парадокс пестицида требует обновления тест-кейсов
Уточняющие вопросы
- →Почему исчерпывающее тестирование невозможно даже для маленькой формы?
- →Как на практике противодействовать парадоксу пестицида?
JuniorТеорияИногдаВ чём разница между QA, QC и тестированием?
В чём разница между QA, QC и тестированием?
QA — это процессно-ориентированная деятельность: предотвращает дефекты, улучшая весь процесс разработки. QC ориентирован на продукт и выявляет дефекты в готовом продукте. Тестирование — одна из техник QC: запуск продукта для поиска дефектов.
Типичные ошибки
- ✗Считать QA и QC синонимами вместо процессно- и продукто-ориентированных
- ✗Называть тестирование надмножеством QA, а не подмножеством-техникой QC
- ✗Считать, что QA выполняется только после сборки продукта
Уточняющие вопросы
- →Приведите один конкретный QA-активити, не являющийся тестированием.
- →Почему предотвращение дефекта обычно дешевле его обнаружения?
MiddleТеорияИногдаЧто вы проверяете, прежде чем закрыть баг как «не воспроизводится»?
Что вы проверяете, прежде чем закрыть баг как «не воспроизводится»?
Не закрывайте его после одной неудачной попытки. Повторите точные шаги на сборке, окружении и аккаунте репортёра, ведь дефект доходит до Closed только через реальную верификацию. Перечитайте отчёт на пропущенные предусловия, данные или тайминг, повторите устройство и сеть репортёра и просмотрите логи и крэш-репорты. Закрывайте, только когда он действительно не воспроизводится.
Типичные ошибки
- ✗Закрывать после одной неудачной попытки вместо реальной верификации
- ✗Винить репортёра, не повторив его окружение и данные
- ✗Игнорировать логи и крэш-репорты с момента сбоя
Уточняющие вопросы
- →Какие поля отчёта чаще всего объясняют неудачное воспроизведение?
- →Когда уместно попросить у репортёра скринкаст?
MiddleТеорияИногдаКакие атрибуты делают требование хорошим и тестируемым?
Какие атрибуты делают требование хорошим и тестируемым?
Хорошее требование полное (ничего не упущено), однозначное (одна трактовка), непротиворечивое (не конфликтует с другими), необходимое, осуществимое и — главное — тестируемое/проверяемое: можно написать проверку, подтверждающую или опровергающую его. Требование, которое нельзя проверить, дефектно, ведь никакой тест не докажет, что оно выполнено.
Типичные ошибки
- ✗Опускать тестируемость/проверяемость из атрибутов качества
- ✗Путать детальное требование с однозначным
- ✗Думать, что требование должно описывать реализацию
Уточняющие вопросы
- →Почему непроверяемое требование считается дефектным?
- →Как переписать «страница должна грузиться быстро», чтобы стало тестируемым?
SeniorТеорияИногдаЧто такое shift-left testing, зачем он нужен и какие у него компромиссы?
Что такое shift-left testing, зачем он нужен и какие у него компромиссы?
Shift-left сдвигает тестирование раньше по циклу — ревью требований, unit-тесты вместе с кодом, проверка каждой сборки — чтобы дефекты ловились, пока их дёшево чинить. Компромиссы: больше усилий на старте, потребность в тестируемом дизайне и давление на ещё нестабильные ранние спецификации.
Типичные ошибки
- ✗Определять shift-left как тестирование позже, а не раньше
- ✗Игнорировать, что раннее тестирование требует тестируемого дизайна и достаточно стабильных спеков
- ✗Утверждать, что он убирает всё позднее тестирование, а не дополняет его
Уточняющие вопросы
- →Как unit-тесты воплощают shift-left на фазе разработки?
- →Когда слишком ранний сдвиг тратит усилия на нестабильные требования?
SeniorТеорияИногдаЧто такое shift-right тестирование и как пострелизный мониторинг поддерживает качество?
Что такое shift-right тестирование и как пострелизный мониторинг поддерживает качество?
Shift-right расширяет тестирование в продакшн — мониторинг, логирование, алерты, метрики пользователей — чтобы дефекты, всплывающие лишь под реальной нагрузкой, ловились быстро. Он дополняет shift-left, а не заменяет: shift-right ловит просочившиеся дефекты и возвращает их в жизненный цикл дефекта. Компромисс: он реагирует на проблемы, которые пользователи уже могли встретить.
Типичные ошибки
- ✗Называть shift-right заменой раннего shift-left тестирования
- ✗Сводить его к позднему пред-релизному тесту без наблюдения за продакшном
- ✗Игнорировать, что он реагирует на дефекты, которые пользователи уже могли встретить
Уточняющие вопросы
- →Какие продакшн-сигналы вы бы мониторили, чтобы поймать просочившийся дефект?
- →Как поэтапный canary-релиз ограничивает радиус поражения регрессии?
JuniorТеорияРедкоЧто такое тестирование ПО и какова его цель?
Что такое тестирование ПО и какова его цель?
Тестирование — это процесс проверки соответствия реального поведения продукта ожидаемому. Его цель — найти дефекты, снизить риски и дать заинтересованным лицам уверенность в качестве, а не доказать отсутствие багов. Оно охватывает весь жизненный цикл — и статически (анализ документации), и динамически (запуск системы).
Типичные ошибки
- ✗Утверждать, что тестирование доказывает отсутствие дефектов, а не снижает риск
- ✗Считать тестирование только финальной динамической фазой после разработки
- ✗Забывать, что информирование заинтересованных лиц — часть цели
Уточняющие вопросы
- →Почему тестирование не может доказать, что ПО полностью без дефектов?
- →В чём разница между статическим и динамическим тестированием?