Что такое интеграционное тестирование

«Что такое интеграционное тестирование» — вопрос из категории Тестирование, который задают на 23% собеседований Golang Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Интеграционные тесты проверяют взаимодействие между несколькими компонентами системы. Они отличаются от юнит-тестов тем, что тестируют не изолированные модули, а их совместную работу, включая внешние зависимости (БД, API и т.д.).

Пример в Go с тестированием HTTP-обработчика и БД:

func TestUserHandler(t *testing.T) {
    db := setupTestDB() // тестовая БД
    defer db.Close()

    handler := NewUserHandler(db)
    server := httptest.NewServer(handler)
    defer server.Close()

    resp, err := http.Get(server.URL + "/users/1")
    if err != nil {
        t.Fatal(err)
    }

    if resp.StatusCode != http.StatusOK {
        t.Errorf("expected 200, got %d", resp.StatusCode)
    }
    // проверка тела ответа...
}

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

  • Тестируют взаимодействие компонентов
  • Требуют настройки тестового окружения
  • Медленнее юнит-тестов
  • Часто используют тестовые двойники (mock, stub) для внешних сервисов