Тестирование — неотъемлемая часть разработки программного обеспечения. Оно позволяет выявлять ошибки, улучшать качество продукта и снижать риски для бизнеса. Однако полный перебор всех возможных входных данных часто невозможен из-за ограничений времени и ресурсов.
Здесь на помощь приходят классы эквивалентности и анализ граничных значений — техники, которые помогают оптимизировать тестовое покрытие. В статье разберем, как эти методы работают на практике, их типы и примеры применения.
Что такое классы эквивалентности
Классы эквивалентности — это группы входных данных, которые обрабатываются программой одинаково. Суть метода в том, чтобы вместо тестирования всех возможных значений проверить по одному представителю из каждого класса. Это сокращает количество тест-кейсов, сохраняя эффективность проверки.
Пример: Представим, что студент создал калькулятор для сложения двух чисел. Если каждое число может быть от 0 до 10^16, то общее количество комбинаций составит 10^32. Тестирование всех вариантов займет миллиарды лет.
Решение: Разделить входные данные на классы эквивалентности:
-
Оба числа положительные.
-
Одно число равно нулю.
-
Оба числа отрицательные.
Проверив по одному значению из каждого класса, мы убедимся, что калькулятор работает корректно для всех типов данных.
Стандартные действия по методике
Процесс применения классов эквивалентности включает несколько шагов:
Определить входные параметры. Например, поле для ввода возраста (от 18 до 99 лет).
Разделить данные на классы:
- Валидные: 18 ≤ возраст ≤ 99.
- Невалидные: возраст < 18, возраст > 99.
Выбрать тестовые значения:
- Для валидного класса: 30 лет.
- Для невалидных: 17 лет, 100 лет.
Создать тест-кейсы и проверить поведение системы.
Типы классов эквивалентности
Классы делятся на четыре типа в зависимости от комбинаций валидных и невалидных данных:
Тип
|
Описание
|
Пример
|
Weak Normal
|
Тестируются только валидные классы
|
Ввод 30 лет (валидное значение)
|
Strong Normal
|
Все комбинации валидных классов
|
Проверка всех полей формы регистрации
|
Weak Robust
|
Один невалидный класс + валидные
|
Ввод 17 лет (невалидное) + 30 лет (валидное)
|
Strong Robust
|
Все возможные комбинации невалидных классов
|
Проверка всех неверных форматов E-mail
|
Разница между классами эквивалентности и анализом граничных значений
Оба метода помогают находить ошибки, но делают это по-разному:
1. Классы эквивалентности
Группируют входные данные на основе общего поведения системы.
Если система обрабатывает несколько значений одинаково, их объединяют в один класс.
Пример: Допустим, поле принимает возраст от 1 до 100 лет.
Здесь можно выделить три класса эквивалентности:
- Валидные данные: Любое число внутри диапазона (например, 50 лет);
- Невалидные данные снизу: Числа меньше 1 (например, 0 лет);
- Невалидные данные сверху: Числа больше 100 (например, 150 лет).
Как тестируем: Берем по одному представителю из каждого класса:
-
50 (валидное);
-
0 (невалидное снизу);
-
150 (невалидное сверху).
Если система корректно обрабатывает эти примеры, считается, что она работает для всего класса.
2. Анализ граничных значений
Тестирует точки перехода между классами эквивалентности.
Ошибки чаще возникают на границах допустимых значений.
Пример: Для того же диапазона 1–100 лет граничными точками будут:
-
Минимальное валидное: 1 (первое допустимое значение);
-
Максимальное валидное: 100 (последнее допустимое значение);
-
Значения за пределами: 0 (на 1 меньше минимального), 101 (на 1 больше максимального).
Как тестируем: Проверяем все четыре значения (0, 1, 100, 101):
-
Ввод 0 → ошибка;
-
Ввод 1 → корректно;
-
Ввод 100 → корректно;
-
Ввод 101 → ошибка.
Классы эквивалентности — это как проверка «типичных случаев» (например, средняя температура пациента).
Граничные значения — как проверка «крайних» случаев (температура 36.0°C и 42.0°C, за которыми система должна среагировать).
Примеры применения классов эквивалентности в тестировании
1. Скидка при покупке
Класс
|
Тестовые значения
|
Ожидаемый результат
|
Сумма < 5000 руб.
|
3000 руб.
|
Скидка 0%
|
Сумма = 5000 руб.
|
5000 руб.
|
Скидка 10%
|
Сумма > 5000 руб.
|
6000 руб.
|
Скидка 10%
|
Система группирует суммы в три класса:
-
Недостаточная сумма (<5000) → скидки нет;
-
Граничное значение (5000) → скидка применяется;
-
Достаточная сумма (>5000) → скидка сохраняется.
2. Проверка возраста (граничные значения)
Условие: Поле принимает возраст от 18 до 99 лет.
Класс
|
Тестовые значения
|
Ожидаемый результат
|
Корректный возраст
|
25 лет
|
Успешное сохранение
|
Нижняя граница
|
17, 18, 19 лет
|
17 → ошибка, 18–19 → OK.
|
Верхняя граница
|
98, 99, 100 лет
|
99 → OK, 100 → ошибка.
|
Классы эквивалентности:
Анализ граничных значений:
Проверяются точки перехода:
-
Минимум: 17 (недопустимо), 18 (допустимо), 19 (допустимо);
-
Максимум: 98 (допустимо), 99 (допустимо), 100 (недопустимо).
Даже если система корректно обрабатывает возраст 25 лет, ошибка может возникнуть на границах (например, при вводе 17 или 100 лет).
Классы эквивалентности и анализ граничных значений — мощные инструменты в арсенале тестировщика. Они позволяют находить ошибки быстрее, избегая избыточных проверок.
Комбинируя эти методы, вы повысите качество тестирования и сократите время на подготовку кейсов. Внедряйте их в свою работу, чтобы создавать надежные и стабильные приложения.
Собираетесь провести тестирование на основе классов эквивалентности? На
бесплатной консультации наши специалисты ответят на ваши вопросы.