Техника анализа классов эквивалентности (Equivalence Partitioning) – это метод проектирования тестовых случаев, основанный на разделении входных данных (или выходных условий) на классы, представители которых будут обрабатываться программой схожим образом. Тестирование одного представителя из каждого класса считается достаточным для покрытия всего класса.
Основная идея: Если тест на одном представителе класса выявляет ошибку, то, вероятно, тест на любом другом представителе того же класса тоже выявит ошибку. Если тест на одном представителе не выявляет ошибку, то, вероятно, тест на любом другом представителе того же класса тоже не выявит ошибки.
Применение:
- Идентификация классов эквивалентности:
- Определяются допустимые и недопустимые классы для каждого входного поля (числовой диапазон, набор строк, булевы значения и т.д.).
- Для числовых диапазонов:
- Допустимый диапазон.
- Числа меньше нижней границы (недопустимый класс).
- Числа больше верхней границы (недопустимый класс).
- Для наборов значений:
- Допустимые значения.
- Недопустимые значения (например, строки в поле для чисел).
- Например, для поля "Возраст" от 18 до 65 лет:
- Допустимый класс: 18-65 (например, 25, 40, 60)
- Недопустимый класс: < 18 (например, 17, 0)
- Недопустимый класс: > 65 (например, 66, 100)
- Создание тестовых случаев:
- Выбирается по одному представителю из каждого идентифицированного класса (допустимого и недопустимого).
- Создаются тестовые случаи с выбранными представителями в качестве входных данных.
Пример:
Форма для заказа, поле "Количество товара", допустимое значение от 1 до 99.
| Класс эквивалентности | Тип | Представители для тестирования |
|---|
| Меньше 1 | Недоп. | 0, -5 |
| От 1 до 99 | Доп. | 1, 50, 99 |
| Больше 99 | Недоп. | 100, 1000 |
| Нечисловые значения | Недоп. | "abc", " " |
Из каждого класса выбирается хотя бы один представитель для создания тестового случая. Например, для этого поля будет как минимум 4-6 тестовых случая, покрывающих все идентифицированные классы.
Преимущества:
- Уменьшает избыточность тестовых случаев.
- Помогает систематизировать процесс тестирования.
- Обеспечивает хорошее тестовое покрытие с меньшим количеством тестов по сравнению с тестированием каждого возможного входного значения.
Недостатки:
- Может не выявить ошибки на граничных значениях (часто используется в комбинации с анализом граничных значений).
- Эффективность зависит от правильности идентификации классов эквивалентности.