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