Skip to content
IRC-CodingIRC-Coding
Методы тестированияUnit TestIntegration TestEnd to End TestBlackboxWhiteboxTDDRegression TestLoad Test

Методы тестирования: Unit, Integration, E2E и другие

Классификация методов тестирования: Unit, Integration, System тесты, Blackbox, Whitebox, TDD и подходы к тестированию.

S

schutzgeist

2 min read
Методы тестирования: Unit, Integration, E2E и другие

Методы и виды тестирования

Этот материал представляет собой справочное определение методов тестирования и их классификации, включая контрольные вопросы и теги.

Суть вопроса

Кто тестирует? – Человек (вручную) или машина (автоматически), разработчик или пользователь.
Что тестируется? – 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 как типичные виды тестов

Ключевые компоненты

  1. Классификация тестов (Кто, Что, Как, Когда, Зачем)
  2. Уровни тестирования (unit, интеграция, система)
  3. Подходы тестирования (Bottom-Up, Top-Down, blackbox, whitebox)
  4. Test doubles (stub, mock, fake, spy)
  5. Получение тестовых случаев (классы эквивалентности, граничные значения, покрытие)
  6. Автоматизация тестов (фреймворки, CI, отчёты)
  7. Управление тестовыми данными (fixtures, factories, seed)
  8. Процесс тестирования (планирование, выполнение, анализ, протокол)
  9. Обеспечение качества (ревью, аудиты, метрики)
  10. Инструменты (фреймворки тестирования, 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)
  • Проверяемое качество (регрессионные тесты)
  • Снижение затрат на сбои (нагрузочные тесты)

Минусы

  • Затраты на поддержку тестов
  • Нестабильные тесты при неясных зависимостях
  • Фокус на “цифры” вместо пользы без чётких целей

Типичные контрольные вопросы (с кратким ответом)

  1. Blackbox vs Whitebox? Blackbox: только через интерфейсы; whitebox: знание внутренней структуры.
  2. Unit vs интеграция? Unit: изолированно; интеграция: реальное взаимодействие компонентов.
  3. Что такое TDD? Test-Driven Development: красный (тест падает) → зелёный (тест проходит) → рефакторинг.
  4. Свойства хороших unit-тестов? Корректный, изолированный, быстрый, информативный, поддерживаемый, простой в запуске.
  5. Методы получения тестовых случаев? Классы эквивалентности, анализ граничных значений, покрытие ветвей/путей.

Ключевые источники

  1. https://martinfowler.com/articles/practical-test-pyramid.html
  2. https://testing.googleblog.com
  3. https://www.istqb.org
Назад к блогу
Share:

Nächster Artikel in Качество программного обеспечения

Weiterlesen
Обеспечение качества: CI/CD, Code Reviews и тесты

Похожие статьи