Ответ
Обе техники используются для сокращения числа тест-кейсов при сохранении покрытия. Они взаимосвязаны: сначала применяется эквивалентное разделение, затем — анализ граничных значений.
Эквивалентное разделение (Equivalence Partitioning)
Цель: Разделить все возможные входные данные на классы (партиции), внутри которых поведение системы ожидается одинаковым.
- Как работает: Для каждого входа определяются:
- Класс валидных данных (система должна их принять и корректно обработать).
- Один или несколько классов невалидных данных (система должна отклонить их с ошибкой).
- Идея: Достаточно протестировать по одному значению из каждого класса.
Анализ граничных значений (Boundary Value Analysis)
Цель: Протестировать поведение системы на границах между этими эквивалентными классами, где вероятность ошибки наиболее высока.
- Как работает: Для каждой границы выбираются тестовые значения:
- Значение на границе.
- Значение сразу за границей (невалидное).
- Значение сразу перед границей (валидное).
Практический пример
Условие: Поле «Возраст» принимает целые числа от 18 до 65 включительно.
-
Применяем Эквивалентное разделение:
- Валидный класс:
[18, 65](возраст от 18 до 65 лет). - Невалидные классы:
<18и>65.
- Валидный класс:
-
Применяем Анализ граничных значений для каждой границы:
- Граница 18: тестируем 17 (невалидно), 18 (валидно), 19 (валидно).
- Граница 65: тестируем 64 (валидно), 65 (валидно), 66 (невалидно).
Вывод: Эквивалентное разделение отвечает на вопрос «Какие группы данных тестировать?», а анализ граничных значений — «Какие конкретные значения из этих групп выбрать для тестов?». Их совместное применение дает эффективный набор тестов с высокой вероятностью обнаружения дефектов.
Ответ 18+ 🔞
А, ну это же классика, блядь! Эквивалентное разделение и границы — это как два пьяных мужика, которые друг без друга нихуя не сделают, но вместе могут табуретку сломать и найти в этом глубокий смысл.
Смотри, суть-то проще пареной репы, если не загоняться в эти ваши заумные книжки.
Эквивалентное разделение (Equivalence Partitioning) Это когда ты смотришь на все возможные данные и думаешь: "Ну ёпта, нихуя себе овердохуища вариантов тестировать". И начинаешь сортировать их по принципу "а поведение-то системы будет одинаковое". То есть ты делишь всё это богатство на кучки.
-
Как это работает, блядь: Берёшь любое поле, любой ввод, и тупо делишь:
- Класс валидных данных. Те, которые система должна принять, облизать и сказать "спасибо". Поведение для всех них — успех.
- Класс(ы) невалидных данных. Те, от которых система должна отпрыгнуть как от говна и выдать ошибку. Поведение — отлуп.
-
Идея гениальная, как хуй с горы: Не надо тестить все 100500 значений. Достаточно взять по одному чуваку из каждой кучки. Если один прошёл — значит, и все его братаны в этой кучке должны пройти. Если один сломался — значит, там вся партия говна. Экономия времени — пиздец!
Анализ граничных значений (Boundary Value Analysis) А вот это уже хитрая жопа. Потому что система, она как тот самый полупидор, который на ровном месте найдёт, где обосраться. И обосрется она чаще всего не где-нибудь, а на границах между этими самыми кучами. Где "можно" резко становится "нельзя".
- Как это работает: Берёшь каждую границу и начинаешь её ебать со всех сторон:
- Значение прямо на границе. Стоит на черте, одной ногой тут, другой — там.
- Значение сразу за границей (в пизду). Уже не должно работать.
- Значение сразу перед границей (ещё можно). Ещё должно работать.
Пример, чтобы совсем пиздец стало понятно
Условие: Поле «Возраст». Принимает от 18 до 65 лет, включительно, блядь. Целые числа.
-
Применяем Эквивалентное разделение (делим на кучи):
- Валидная куча:
[18, 65](от 18 до 65, все молодцы). - Невалидная куча 1:
<18(мелкие ещё, не доросли). - Невалидная куча 2:
>65(старички, на пенсию пора).
- Валидная куча:
-
Применяем Анализ граничных значений (ёбем границы):
- Граница 18 лет: Тестируем 17 (мелкий, невалидно), 18 (ровно в дверь, валидно), 19 (уже внутри, валидно).
- Граница 65 лет: Тестируем 64 (ещё молодой, валидно), 65 (последний день молодости, валидно), 66 (всё, дед, невалидно).
Вывод, ёпта: Эквивалентное разделение — это как спросить: "Бля, в какие группы людей стрелять?" (В валидных и невалидных). Анализ граничных значений — это как спросить: "А кого именно из этих групп брать на мушку в первую очередь?" (Того, кто на самой границе стоит, и его соседей). Вместе они — охуенная парочка, которая позволяет не распыляться на хуйню, а бить точно в больные места, где вероятность найти баг — просто пиздец какая высокая.