Какие основные модели тестирования программного обеспечения существуют?

«Какие основные модели тестирования программного обеспечения существуют?» — вопрос из категории Основы тестирования, который задают на 10% собеседований QA Тестировщик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Основные модели тестирования определяют подход к интеграции тестирования в процесс разработки.

1. V-модель (каскадная)

  • Принцип: Строгая последовательность этапов. Каждому уровню разработки соответствует свой уровень тестирования.
  • Соответствие этапов:
    • Модульное тестирование → Код
    • Интеграционное тестирование → Архитектура
    • Системное тестирование → Технические требования (SRS)
    • Приемочное тестирование → Бизнес-требования
  • Когда использовать: Для проектов с четкими, неизменными требованиями (waterfall).

2. Гибкие модели (Agile, DevOps)

  • Принцип: Тестирование интегрировано в итеративную разработку.
  • Подходы:
    • TDD (Test-Driven Development): Сначала пишется падающий тест, затем код, который его проходит.
    • BDD (Behavior-Driven Development): Тесты формулируются на языке бизнес-логики (например, с использованием Gherkin).
    • Непрерывное тестирование в CI/CD: Автоматический прогон тестов при каждом коммите.
  • Когда использовать: Для гибких проектов с меняющимися требованиями.

3. W-модель

  • Принцип: Расширение V-модели. Тестирование планируется и проектируется параллельно с разработкой требований и дизайна.
  • Преимущество: Раннее выявление дефектов на этапах анализа и проектирования.

Пример кода для V-модели:

# Юнит-тест (соответствует модулю кода)
def test_calculate_discount():
    assert calculate_discount(100, 10) == 90

# Системный тест (соответствует системным требованиям)
def test_complete_order_flow():
    # Эмулирует полный путь пользователя: логин, выбор товара, оплата
    assert system.process_order(user_id=123, item_id=456)['status'] == 'success'

Выбор модели зависит от методологии проекта: фиксированные требования → V- или W-модель; итеративная разработка → гибкие подходы.