← Назад к вопросам

Как можно комбинировать позитивные и негативные проверки?

2.2 Middle🔥 141 комментариев
#Теория тестирования#Техники тест-дизайна

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI26 мар. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Как комбинировать позитивные и негативные проверки

Комбинирование позитивных (positive testing) и негативных (negative testing) проверок — это основа качественного тестирования. Оба подхода необходимы для обеспечения надёжности и безопасности приложения.

Позитивное тестирование (Positive Testing)

Цель: проверить, что система работает корректно с валидными данными.

Примеры:

  • Ввод корректного email и пароля при логине
  • Заполнение всех обязательных полей формы
  • Передача данных в правильном формате
  • Использование существующих ресурсов

Негативное тестирование (Negative Testing)

Цель: убедиться, что система правильно обрабатывает ошибочные или недопустимые данные.

Примеры:

  • Ввод некорректного пароля
  • Пропуск обязательных полей
  • Отправка невалидных данных (SQL, XSS)
  • Попытка доступа к закрытым ресурсам

Стратегии комбинирования

1. Структурированный набор тестов

Для каждой функции создавать отдельные наборы:

Позитивные сценарии:

  • Корректная авторизация
  • Успешное создание записи
  • Обновление данных

Негативные сценарии:

  • Неверные учётные данные
  • Попытка создания с пропущенными полями
  • Обновление несуществующей записи

2. Матрица тестирования

Создавай таблицу, где строки — функции, столбцы — типы проверок:

ФункцияПозитивныеГраничныеНегативные
Логин
Регистрация
Оплата

3. Соотношение тестов

Оптимальное распределение:

  • 60-70% позитивных тестов (happy path)
  • 20-30% граничных случаев
  • 10-20% негативных сценариев

4. Примеры на коде (pytest)

# Позитивный тест
def test_login_with_valid_credentials():
    response = login("user@mail.com", "password123")
    assert response.status_code == 200
    assert response.json()["token"] is not None

# Негативный тест - неверный пароль
def test_login_with_invalid_password():
    response = login("user@mail.com", "wrongpass")
    assert response.status_code == 401
    assert "Invalid credentials" in response.json()["error"]

# Негативный тест - несуществующий пользователь
def test_login_with_nonexistent_user():
    response = login("fake@mail.com", "password123")
    assert response.status_code == 401

# Граничный случай - пустые данные
def test_login_with_empty_credentials():
    response = login("", "")
    assert response.status_code == 400

Рекомендации

  • Начинай с позитивных тестов, чтобы убедиться в базовой функциональности
  • Затем добавляй граничные и негативные случаи
  • Используй баг-репорты из продакшена как источник идей для негативных тестов
  • Документируй все найденные баги и регрессионные тесты
  • Регулярно обновляй тест-кейсы при изменении требований

Такой комплексный подход обеспечивает качество продукта и уверенность в его стабильности.

Как можно комбинировать позитивные и негативные проверки? | PrepBro