Ответ
Класс эквивалентности (Equivalence Class) — это техника тест-дизайна, при которой все возможные входные данные для тестируемого модуля разбиваются на группы (классы), внутри которых поведение системы ожидается идентичным. Тестирование одного значения из класса считается достаточным для проверки всего класса.
Цель:
Значительно сократить количество тестовых случаев при сохранении высокого покрытия.
Алгоритм применения:
- Определите входные условия (поля, параметры).
- Выделите валидные и невалидные классы эквивалентности.
- Для каждого класса создайте минимум один тестовый случай.
Практический пример:
Функция: Валидация скидочного купона. Скидка применяется, если сумма заказа от 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) == "Отклонён"
Связь с другими техниками: Часто используется вместе с анализом граничных значений, который фокусируется на тестировании значений на границах классов (как в примере выше).