Manual Testing

БЛОК 4. Тест-дизайн техники — 12. Equivalence Partitioning и Boundary Value

📚 25 вопросовПройти тест →
Лекция

БЛОК 4. Тест-дизайн техники — 12. Equivalence Partitioning и Boundary Value

Manual Testing

БЛОК 4. Тест-дизайн техники — 12. Equivalence Partitioning и Boundary Value

🧭 Введение: зачем нужны две техники сразу

Новички часто проверяют поле «по ощущениям»: одно валидное значение, одно невалидное, и на этом заканчивают. В результате часть дефектов пропускается: где-то не учтены типы входных данных, где-то сломаны границы.
Equivalence Partitioning и Boundary Value решают эту проблему в паре. Первая техника сокращает бесконечное число проверок до групп, вторая — добивает самые рискованные точки на границах.
💡 Совет:
Сначала разбейте данные на эквивалентные классы, потом по важным классам проверьте границы.
Вывод:
EP + BVA дают баланс между «не тестировать всё подряд» и «не пропустить критичные баги».

⚠️ Проблема -> решение

Проблема: у поля может быть сотни значений, а времени на тесты мало. Если брать значения случайно, покрытие будет хаотичным и незащищаемым на ревью.
Решение:
  • Equivalence Partitioning (EP) — делим входные данные на классы, где система должна вести себя одинаково.
  • Boundary Value Analysis (BVA) — тестируем точки у границ диапазонов/лимитов.
🟢 Если совсем просто:
EP отвечает «какие группы данных есть», BVA отвечает «что происходит на порогах».
🎯 Как понять, что этап прошёл успешно:
По каждой проверяемой сущности у вас есть классы эквивалентности и отдельный набор граничных значений.

🛠️ Чем помогает и как работает

Связка этих техник помогает строить компактные, но сильные тесты. Вы проверяете меньше кейсов, но каждый кейс обоснован и закрывает конкретный риск.
Как это работает:
  • Шаг 1: читаем требования и находим правила валидации.
  • Шаг 2: выделяем классы эквивалентности (валидные и невалидные).
  • Шаг 3: выбираем по одному представителю из каждого класса.
  • Шаг 4: для диапазонов добавляем boundary-точки (min-1, min, min+1, max-1, max, max+1).
  • Шаг 5: фиксируем expected result и priority.
  • Шаг 6: превращаем это в тест-кейсы/чек-лист.
Вывод:
EP экономит объём, BVA усиливает глубину проверки на самых уязвимых точках.

📚 Ключевые термины (простыми словами)

  • Equivalence Partitioning (разбиение на классы эквивалентности) — группировка входных данных, которые система должна обрабатывать одинаково.
  • Equivalence Class (класс эквивалентности) — группа значений с одинаковым ожидаемым поведением.
  • Valid Class (валидный класс) — допустимые значения по требованиям.
  • Invalid Class (невалидный класс) — недопустимые значения.
  • Boundary Value Analysis (анализ граничных значений) — проверка значений на границах и рядом с ними.
  • Representative (представитель класса) — одно типовое значение для проверки класса.
  • Expected Result (ожидаемый результат) — что система должна вернуть для конкретного теста.
  • Coverage (покрытие) — насколько полно проверками закрыты классы и границы.

1. Equivalence Partitioning: как сокращать объём тестов

EP помогает не тестировать каждое возможное значение. Если значения внутри класса эквивалентны по поведению, достаточно выбрать представителя.
🟢 Если совсем просто:
Один класс = одно поведение = один представитель для базовой проверки.
🎯 Как понять, что этап прошёл успешно:
Вы перечислили все валидные/невалидные классы и взяли по представителю.
Назначение:
Уменьшить число тестов без потери логического покрытия.
Простыми словами:
Мы объединяем похожие значения в группы и тестируем не каждое число, а каждую группу.
Для новичка:
Если два значения должны вести себя одинаково, обычно нет смысла тестировать оба в базовом наборе.
Аналогия:
Как проверка билетов: «детский», «взрослый», «льготный» — это разные категории, а не каждый возраст отдельно.
Пример:
Поле "Возраст 18..65"Классы:- <18 (invalid)- 18..65 (valid)- >65 (invalid) Представители:- 17, 30, 66
🔎 Как это происходит на практике:
  • QA выписывает бизнес-правило.
  • Делит входные данные на группы поведения.
  • Берёт по одному значению из каждой группы.
Характеристики:
  • ✅ Сильно сокращает объём тестов.
  • ✅ Делает покрытие объяснимым.
  • ✅ Подходит для форм, API и бизнес-правил.
Когда использовать:
Всегда, когда есть множество возможных входов.
Вывод:
EP — базовая техника для рационального тест-дизайна.

2. Boundary Value: где чаще всего скрываются баги

Даже если классы эквивалентности определены правильно, баги часто живут на границах: ошибка сравнения, неверный оператор, off-by-one.
🟢 Если совсем просто:
Граница — это место, где правило переключается, и там чаще всего ломается логика.
🎯 Как понять, что этап прошёл успешно:
Для каждого диапазона есть набор точек до/на/после границы.
Назначение:
Поймать дефекты в пороговой логике и валидации.
Простыми словами:
Проверяем не только «внутри диапазона», но и «вход/выход из диапазона».
Для новичка:
Если в требовании есть min/max, граничные проверки обязательны.
Пример:
Поле "Пароль 8..20 символов"BVA: 7, 8, 9, 19, 20, 21
Мини-шаблон BVA:
Если есть диапазон min..max:- min - 1- min- min + 1- значение из середины- max - 1- max- max + 1
🔎 Как это происходит на практике:
  • QA берёт правило с диапазоном.
  • Выбирает граничные точки.
  • Для каждой точки фиксирует expected result.
Характеристики:
  • ✅ Высокая вероятность найти критичный дефект.
  • ✅ Небольшой набор, высокая отдача.
  • ✅ Легко автоматизируется в будущем.
Когда использовать:
Для числовых лимитов, длин строк, дат, счётчиков, квот.
Вывод:
BVA — must-have для проверки правил с порогами.

3. EP + BVA вместе: правильная комбинация

Эти техники не конкурируют. EP даёт каркас классов, BVA усиливает ключевые классы граничными точками.
🟢 Если совсем просто:
Сначала «группы», потом «пороги внутри групп».
🎯 Как понять, что этап прошёл успешно:
У вас нет ни «дыр» по классам, ни «дыр» на границах.
Назначение:
Получить компактный и при этом надёжный набор тестов.
Простыми словами:
EP отвечает за ширину покрытия, BVA — за глубину на критичных местах.
Для новичка:
Начинайте с EP, затем добавляйте BVA к диапазонам и лимитам.
Пример:
Поле "Сумма перевода 100..10000" EP:- <100 (invalid)- 100..10000 (valid)- >10000 (invalid) BVA:- 99, 100, 101, 9999, 10000, 10001
Вывод:
Комбинация EP+BVA даёт оптимальное покрытие при ограниченном времени.

3.1 Сквозной пример: от требования к таблице EP+BVA

Ниже полный мини-пример, который можно использовать как рабочий шаблон на реальной задаче.
🟢 Если совсем просто:
Берём требование, делим данные на классы (EP), затем проверяем границы диапазона (BVA).
🎯 Как понять, что этап прошёл успешно:
Есть связка: требование -> классы -> представители -> граничные точки.
Требование:
  • Пароль должен быть от 8 до 20 символов.
  • Допустимы латинские буквы и цифры.
  • Пустое значение недопустимо.
EP (классы эквивалентности):
Валидные классы:
  • 8–20 символов, только допустимые символы.
Невалидные классы:
  • меньше 8 символов;
  • больше 20 символов;
  • пустое значение;
  • недопустимые символы;
  • только пробелы.
Представители классов:
  • abc12345 (валидный класс);
  • abc1234 (меньше 8);
  • abc123456789012345678 (больше 20);
  • "" (пустое значение);
  • пароль123 (недопустимые символы);
  • " " (только пробелы).
BVA (граничные значения):
  • 7;
  • 8;
  • 9;
  • 19;
  • 20;
Вывод:
Такой формат сразу превращает теорию в готовую механику тест-дизайна для junior QA.

4. Пошаговый алгоритм для junior QA

Чтобы не запутаться, используйте фиксированный алгоритм проектирования.
🟢 Если совсем просто:
Правило -> классы -> представители -> границы -> expected result.
🎯 Как понять, что этап прошёл успешно:
По каждому правилу есть таблица классов и граничных точек.
Алгоритм:
  1. Выписать правила валидации из AC.
  2. Разбить входы на валидные и невалидные классы.
  3. Выбрать представителя для каждого класса.
  4. Для диапазонов добавить BVA-точки.
  5. Зафиксировать expected result.
  6. Проставить приоритеты для релизного прогона.
Вывод:
Этот алгоритм позволяет быстро собрать качественный тест-дизайн даже новичку.

📊 Сравнение: Equivalence Partitioning vs Boundary Value

КритерийEquivalence PartitioningBoundary Value
Главная цельСократить объём через классыПоймать ошибки на порогах
Что покрываетТипы/группы входных данныхГраницы диапазонов и лимитов
Тип значенийПредставители классовТочки до/на/после границы
Когда особенно полезноМного разных входовЕсть min/max и счётчики
Риск при пропускеДыры по группам поведенияБаги off-by-one и пороговые дефекты

✅ Must-Know для junior QA

  • EP и BVA лучше использовать вместе.
  • Для каждого класса нужен хотя бы один представитель.
  • Для каждого диапазона нужен набор граничных точек.
  • Expected result обязателен для каждой проверки.
  • Проверяйте одинаковые правила и на UI, и на API.
  • Не заменяйте BVA «значением из середины».
  • Приоритет в релизе: сначала critical ограничения.

❌ Частые мифы

Миф:
Если есть EP, BVA уже не нужен. ✅ Как правильно:
EP и BVA дополняют друг друга. 📎 Почему это важно:
Иначе пропускаются дефекты на границах.
Миф:
Достаточно проверить min и max. ✅ Как правильно:
Нужны соседние точки min±1 и max±1. 📎 Почему это важно:
Ошибки сравнения чаще проявляются рядом с границами.
Миф:
EP применим только к числам. ✅ Как правильно:
EP работает и для категорий, форматов, статусов, ролей. 📎 Почему это важно:
Большая часть бизнес-логики не сводится только к числам.
Миф:
Чем больше тестов, тем лучше. ✅ Как правильно:
Важно обоснованное покрытие классов и границ. 📎 Почему это важно:
Случайные тесты увеличивают объём, но не качество.

❓ Часто спрашивают на собеседованиях

Вопрос:
Что такое Equivalence Partitioning? ✅ Ответ:
Это техника, где входные данные делят на классы эквивалентного поведения и тестируют представителей классов.
Вопрос:
Зачем нужна Boundary Value Analysis? ✅ Ответ:
Чтобы проверить поведение системы на порогах и рядом с ними, где чаще всего встречаются дефекты.
Вопрос:
Как связаны EP и BVA? ✅ Ответ:
EP определяет классы данных, а BVA углубляет проверку для классов с диапазонами/лимитами.
Вопрос:
Можно ли делать только BVA без EP? ✅ Ответ:
Можно для узкой задачи, но обычно это оставляет дыры в покрытии по типам входов.
Вопрос:
Как понять, что набор по EP+BVA достаточный? ✅ Ответ:
Когда закрыты все классы эквивалентности и все ключевые границы с expected result.

🚫 Типичные ошибки

Ошибка 1: Нет невалидных классов

Неправильно:
Тестировать только валидный класс.
Правильно:
Явно выделять и проверять невалидные классы.
Почему:
Именно там часто ломается валидация.

Ошибка 2: Перепутаны EP и BVA

Неправильно:
Называть «17/18/19» классами эквивалентности.
Правильно:
Классы — это группы, а 17/18/19 — это граничные точки.
Почему:
Путаница ухудшает структуру покрытия.

Ошибка 3: Нет expected result

Неправильно:
«Проверить 21 символ» без ожидаемого исхода.
Правильно:
Фиксировать, что именно должно случиться на каждом значении.
Почему:
Без этого pass/fail трактуется субъективно.

Ошибка 4: Нет приоритизации

Неправильно:
Выполнять проверки в произвольном порядке.
Правильно:
Сначала критичные классы и критичные границы.
Почему:
Так снижается риск релизных инцидентов при ограниченном времени.

🧩 Best Practices

  • Всегда документируйте классы эквивалентности перед выбором значений.
  • Отдельно помечайте валидные и невалидные классы.
  • Для каждого диапазона применяйте BVA-шаблон.
  • Указывайте expected result рядом с тестовыми данными.
  • Синхронизируйте EP+BVA покрытие между UI и API.
  • После инцидентов обновляйте классы и границы в тест-дизайне.

🏁 Заключение

Equivalence Partitioning и Boundary Value — две базовые техники, которые дают быстрый рост качества тест-дизайна у junior QA.
Они помогают тестировать не «много», а «умно»: с понятной логикой, контролируемым объёмом и хорошей вероятностью поймать критичный дефект.
Если применять их вместе системно, проверка становится сильнее уже в первых спринтах.
🎯

Проверьте знания

Закрепите материал — пройдите тест по теме «БЛОК 4. Тест-дизайн техники — 12. Equivalence Partitioning и Boundary Value»

Пройти тест →