Как тестировать классы эквивалентности для дискретных значений (без интервала)?

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

Ответ

Классы эквивалентности (Equivalence Partitioning) — техника тест-дизайна для группировки входных данных. Для дискретных значений (не интервалов) процесс включает:

  1. Идентификация классов: Разделение всех возможных входных данных на валидные и невалидные группы (классы эквивалентности).
  2. Выбор тестовых значений: Для каждого класса достаточно одного представительного значения.
  3. Проверка границ: Несмотря на отсутствие числового интервала, часто существуют логические границы между классами (например, переход от "валидного статуса" к "невалидному").

Пример: Функция проверки пароля, где допустимая длина — 8+ символов.

def validate_password(password: str) -> bool:
    return len(password) >= 8

Классы и тестовые данные:

  • Валидный класс: Длина >= 8. Тест: "password123" (10 символов).
  • Невалидный класс: Длина < 8. Тест: "12345" (5 символов).
  • Граничные значения: 7 ("1234567") и 8 ("12345678") символов. Тест на границе перехода между классами.

Почему это работает: Предполагается, что если один элемент класса проходит/не проходит тест, то и все остальные элементы этого класса будут вести себя одинаково. Это позволяет сократить количество тестов, сохраняя покрытие.