Как сокращать количество тест-кейсов, сохраняя покрытие?

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

Ответ

Эффективные техники сокращения тест-кейсов:

  1. Параметризация тестов:
    
    # Пример на pytest
    import pytest

@pytest.mark.parametrize("username,password,expected", [ ("admin", "Admin123!", "SUCCESS"), # валидные данные ("", "password", "EMPTY_USERNAME"), # пустой логин ("user", "", "EMPTY_PASSWORD"), # пустой пароль ("user", "weak", "WEAK_PASSWORD"), # слабый пароль ]) def test_login(username, password, expected): result = login(username, password) assert result.status == expected


2. **Data-Driven Testing (DDT):**
```python
# Чтение тестовых данных из CSV/JSON
import csv
import pytest

def load_test_data():
    with open('test_data.csv') as f:
        reader = csv.DictReader(f)
        return list(reader)

@pytest.mark.parametrize("test_case", load_test_data())
def test_with_external_data(test_case):
    # Использование данных из внешнего источника
    pass
  1. Объединение проверок в одном тесте:

    # Вместо отдельных тестов для каждой проверки
    def test_user_creation():
    user = create_user("test@example.com", "Test123")
    
    # Множественные assertions в одном тесте
    assert user.id is not None
    assert user.email == "test@example.com"
    assert user.is_active is True
    assert user.created_at <= datetime.now()
  2. Использование шаблонов тест-кейсов:

    # BDD-подход с Cucumber/Gherkin
    Feature: User Registration
    Scenario Template: Register with different email formats
    Given I am on registration page
    When I enter email "<email>" and password "<password>"
    Then I should see "<result>"
    
    Examples:
      | email              | password   | result               |
      | valid@email.com    | Pass123!   | Registration success |
      | invalid-email      | Pass123!   | Invalid email format |
      | valid@email.com    | weak       | Password too weak    |
  3. Применение комбинаторных техник:

    • Попарное тестирование (Pairwise): покрытие всех пар значений параметров
    • Ортогональные массивы: систематическое сокращение комбинаций

Преимущества подхода:

  • Уменьшение дублирования кода
  • Упрощение поддержки тестов
  • Улучшение читаемости
  • Более быстрое выполнение тестовой suite