Из каких ключевых компонентов состоит тестовая модель (test harness)?

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

Ответ

Тестовая модель (test harness) — это инфраструктура для автоматизированного выполнения тестов. Её основные компоненты:

1. Ядро выполнения:

  • Тестовый раннер: Запускает тесты (например, JUnit Runner, pytest).
  • Тестовые сценарии (Test Cases): Набор шагов, данных и проверок.

2. Данные и окружение:

  • Тестовые данные: Входные значения и ожидаемые результаты.
  • Конфигурация: Настройки БД, API, переменные среды.
  • Моки и стабы: Заглушки для изоляции тестируемого модуля.

3. Управление и отчетность:

  • Система сборки/CI: Интеграция (Jenkins, GitLab CI).
  • Логирование: Запись деталей выполнения.
  • Генератор отчетов: Визуализация результатов (Allure, отчёт JUnit).

Пример структуры на Java (JUnit 5):

import org.junit.jupiter.api.*;
import static org.junit.jupiter.api.Assertions.*;

class CalculatorTest {
    private Calculator calc; // Тестируемый объект

    @BeforeEach
    void setUp() {
        calc = new Calculator(); // Подготовка окружения (инициализация)
    }

    @Test
    @DisplayName("Проверка сложения двух положительных чисел")
    void testAddition() {
        // Данные
        int a = 2;
        int b = 3;
        int expected = 5;

        // Действие и проверка (Assertion)
        int actual = calc.add(a, b);
        assertEquals(expected, actual, "2 + 3 должно быть 5");
    }

    @AfterEach
    void tearDown() {
        calc = null; // Очистка окружения после теста
    }
}

Критерии качества: Модель должна быть воспроизводимой, изолированной, поддерживаемой и предоставлять понятные отчёты.