Что такое класс эквивалентности (Equivalence Class) в тест-дизайне?

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

Ответ

Класс эквивалентности (Equivalence Class) — это техника тест-дизайна, при которой все возможные входные данные для тестируемого модуля разбиваются на группы (классы), внутри которых поведение системы ожидается идентичным. Тестирование одного значения из класса считается достаточным для проверки всего класса.

Цель:

Значительно сократить количество тестовых случаев при сохранении высокого покрытия.

Алгоритм применения:

  1. Определите входные условия (поля, параметры).
  2. Выделите валидные и невалидные классы эквивалентности.
  3. Для каждого класса создайте минимум один тестовый случай.

Практический пример:

Функция: Валидация скидочного купона. Скидка применяется, если сумма заказа от 1000 до 10000 рублей включительно.

Класс эквивалентности Диапазон / Описание Ожидаемый результат Пример тестового значения
Валидный класс 1 Граничное нижнее значение Принят 1000
Валидный класс 2 Значение внутри диапазона Принят 5000
Валидный класс 3 Граничное верхнее значение Принят 10000
Невалидный класс 1 Меньше нижней границы Отклонён 999
Невалидный класс 2 Больше верхней границы Отклонён 10001
Невалидный класс 3 Нечисловое значение Отклонён "abc"

Код теста (псевдокод):

def test_discount_coupon(order_amount):
    if 1000 <= order_amount <= 10000:
        return "Принят"
    else:
        return "Отклонён"

# Достаточно протестировать по одному значению из каждого класса
assert test_discount_coupon(1000) == "Принят"
assert test_discount_coupon(5000) == "Принят"
assert test_discount_coupon(999) == "Отклонён"
assert test_discount_coupon(10001) == "Отклонён"

Связь с другими техниками: Часто используется вместе с анализом граничных значений, который фокусируется на тестировании значений на границах классов (как в примере выше).