Какие знаешь виды тестов для Backend разработчиков

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

Ответ

Unit-тесты - проверяют отдельные функции/методы. Пример:

func TestAdd(t *testing.T) {
    result := Add(2, 3)
    if result != 5 {
        t.Errorf("Expected 5, got %d", result)
    }
}

Интеграционные тесты - проверяют взаимодействие компонентов (например, с БД). Пример:

func TestUserRepo_Create(t *testing.T) {
    db := setupTestDB()
    repo := NewUserRepo(db)

    err := repo.Create(User{Name: "Test"})
    if err != nil {
        t.Fatal(err)
    }
}

E2E-тесты - проверяют полный workflow системы через API. Используют инструменты вроде Postman или код:

func TestAPI_CreateUser(t *testing.T) {
    req := httptest.NewRequest("POST", "/users", strings.NewReader(`{"name":"Test"}`))
    w := httptest.NewRecorder()

    router.ServeHTTP(w, req)
    if w.Code != http.StatusCreated {
        t.Errorf("Expected 201, got %d", w.Code)
    }
}

Также бывают нагрузочные тесты (JMeter, k6), тесты безопасности (OWASP ZAP), smoke-тесты.