Методы и виды тестирования
Этот материал представляет собой справочное определение методов тестирования и их классификации, включая контрольные вопросы и теги.
Суть вопроса
Кто тестирует? – Человек (вручную) или машина (автоматически), разработчик или пользователь.
Что тестируется? – Unit (компонент), интеграция, система (E2E).
Как тестируется? – Bottom-Up/Top-Down, статически/динамически, Blackbox/Whitebox, исследовательски.
Когда тестируется? – До/после, приёмка.
Зачем тестируется? – Регрессия, нагрузка/производительность, smoke-тест.
Краткое описание
Кто тестирует?
- Разработчик: Unit, интеграция, контракт, статический анализ, TDD
- QA/тестировщик: системные тесты, E2E, исследовательское тестирование, приёмка
- Машина: автоматизированная регрессия, нагрузочное тестирование, CI-конвейеры
Что тестируется?
- Unit-тест: изолированный класс/функция
- Интеграционный тест: взаимодействие компонентов (БД, сеть)
- Системный/E2E-тест: полный пользовательский сценарий через UI и инфраструктуру
Как тестируется?
- Bottom-Up: сначала маленькие единицы, потом интеграция
- Top-Down: сначала заглушки, потом реальные компоненты
- Статическое: анализ кода без выполнения (lint, проверка безопасности)
- Динамическое: код выполняется (unit, интеграция, E2E)
- Blackbox: только через интерфейсы, без знания внутреннего устройства
- Whitebox: знание внутренней структуры, покрытие ветвей/путей
- Исследовательское: опытное, неподготовленное тестирование
Когда и зачем
- До (фаза разработки): TDD, unit, статический анализ
- После: системные тесты, приёмка, регрессия
- Регрессия: убедиться, что изменения ничего не сломали
- Нагрузка: проверить поведение под пиковой нагрузкой
- Smoke: быстрая проверка, работают ли ключевые функции после развёртывания
Контрольные вопросы
- Уверенно различать классификацию тестов (Кто, Что, Как, Когда, Зачем)
- Чётко разделять unit, интеграцию и E2E
- Применять blackbox и whitebox (с примерами)
- Test doubles: stub vs mock
- Свойства хороших unit-тестов (корректный, изолированный, быстрый, информативный, поддерживаемый)
- Получение тестовых случаев: классы эквивалентности, анализ граничных значений, покрытие ветвей/путей
- Процесс тестирования: выбор, критерии, данные, протокол, анализ
- TDD: цикл красный-зелёный-рефакторинг
- Регрессия, нагрузка, smoke как типичные виды тестов
Ключевые компоненты
- Классификация тестов (Кто, Что, Как, Когда, Зачем)
- Уровни тестирования (unit, интеграция, система)
- Подходы тестирования (Bottom-Up, Top-Down, blackbox, whitebox)
- Test doubles (stub, mock, fake, spy)
- Получение тестовых случаев (классы эквивалентности, граничные значения, покрытие)
- Автоматизация тестов (фреймворки, CI, отчёты)
- Управление тестовыми данными (fixtures, factories, seed)
- Процесс тестирования (планирование, выполнение, анализ, протокол)
- Обеспечение качества (ревью, аудиты, метрики)
- Инструменты (фреймворки тестирования, mock-библиотеки, CI/CD)
Практический пример (обработка заказов)
Unit (Whitebox):
- Класс: RabattService
- Метод: berechneRabatt(kunde, artikel)
- Тестовый случай: новый клиент, стандартный товар → ожидается 0 %
- Покрытие: все ветви (тип клиента, тип товара)
Integration (Blackbox):
- Компоненты: Service → Repository → DB
- Тест: сохранение/чтение заказа с реальным DB-контейнером
- Критерий: сохранённые данные = ожидаемые данные
E2E (Top-Down):
- Flow: браузер → портал → API → БД → message broker
- Сценарий: создать заказ, имитировать платёж
- Ожидание: видно подтверждение, запись в БД, событие
Regression (автоматизированная):
- Раньше: заказ с 5 товарами, 10 % скидка → 110 €
- Теперь: то же самое → должно остаться 110 €
Нагрузочное тестирование:
- Профиль нагрузки: 500 пользователей одновременно, 10 с
- Критерий: 95-й перцентиль времени ответа <300 мс, нет ошибок
Smoke:
- После развёртывания: вход в систему, поиск товара, добавление в корзину
- Критерий: все 3 действия успешны
Плюсы и минусы
Плюсы
- Систематическое покрытие рисков
- Раннее выявление ошибок (unit/TDD)
- Проверяемое качество (регрессионные тесты)
- Снижение затрат на сбои (нагрузочные тесты)
Минусы
- Затраты на поддержку тестов
- Нестабильные тесты при неясных зависимостях
- Фокус на “цифры” вместо пользы без чётких целей
Типичные контрольные вопросы (с кратким ответом)
- Blackbox vs Whitebox? Blackbox: только через интерфейсы; whitebox: знание внутренней структуры.
- Unit vs интеграция? Unit: изолированно; интеграция: реальное взаимодействие компонентов.
- Что такое TDD? Test-Driven Development: красный (тест падает) → зелёный (тест проходит) → рефакторинг.
- Свойства хороших unit-тестов? Корректный, изолированный, быстрый, информативный, поддерживаемый, простой в запуске.
- Методы получения тестовых случаев? Классы эквивалентности, анализ граничных значений, покрытие ветвей/путей.
Ключевые источники
- https://martinfowler.com/articles/practical-test-pyramid.html
- https://testing.googleblog.com
- https://www.istqb.org



