← Назад к вопросам
Как можно комбинировать позитивные и негативные проверки?
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
Рекомендации
- Начинай с позитивных тестов, чтобы убедиться в базовой функциональности
- Затем добавляй граничные и негативные случаи
- Используй баг-репорты из продакшена как источник идей для негативных тестов
- Документируй все найденные баги и регрессионные тесты
- Регулярно обновляй тест-кейсы при изменении требований
Такой комплексный подход обеспечивает качество продукта и уверенность в его стабильности.