После разбора ты сможешь по явно заданному диапазону выделить классы значений и по шаблону записать проверки с представителями каждого класса. Перед этим полезно разобрать чтение требований к полю.
Сначала определи область задачи
Продолжим пример учебного магазина. Для количества разрешены только цифры без знака, пробелов и дробного разделителя; ведущие нули допустимы. Числовое значение — от 1 до 100 включительно. Допустимое количество позволяет продолжить оформление, неверное блокирует переход и вызывает сообщение «Введите целое количество от 1 до 100».
Сначала возьмём записи, которые проходят проверку формата: непустые строки из цифр, например 0, 25, 140. Их числовые значения — целые неотрицательные числа. Разделим эту область по правилу диапазона. Пустую строку, знак и дробный разделитель проверим отдельно: они нарушают формат ещё до сравнения с пределами.
Объедини значения по ожидаемому поведению
25 0 140-8 2.5 abc
только из цифр?
0, 25, 140 — целые неотрицательные значения.
-8, 2.5, abc — вне выбранной числовой области.
Это логика разбора требований, не утверждение о порядке проверок в коде. Ведущие нули в нашем примере разрешены.
Класс эквивалентности объединяет данные, которые предполагается обрабатывать одинаково. Для покрытия выделенных классов выбирают представителей; классы не должны пересекаться и быть пустыми. Это основание техники, описанной в ISTQB CTFL v4.0.1, §4.2.1, с. 39–40.
Для нашего диапазона выделим три числовых класса:
- Меньше 1 в выбранной области:
0. Значение недопустимо. - От 1 до 100 включительно: например,
25или70. Значение допустимо. - Больше 100: например,
101или140. Значение недопустимо.
Разделение на нижний и верхний недопустимые классы полезно в этом упражнении, потому что требование задаёт два ограничения: минимум и максимум. Это не означает, что у любого поля всегда ровно три класса. Например, несколько тарифов внутри допустимого диапазона потребовали бы рассмотреть другое разделение по правилам тарификации.
Число 25 относится ровно к одному из наших классов. Число 100 тоже относится к допустимому классу: включение предела задано явно. В записи «от 1 до 100» не стоит оставлять этот вопрос на догадку — поэтому мы начали с уточнённых требований.
Выбери представителей и запиши ожидания
В этой области
только ноль
Обе границы
включены
Верхний класс
продолжается
Схема классов, не линейная шкала: ширина областей не показывает количество значений. Область — целые неотрицательные числа; 25 относится только к среднему классу.
Для формы выберем такие проверки:
0: показать сообщение, не открывать следующий шаг. Это представитель нижнего недопустимого числового класса, который можно записать разрешёнными цифрами.25: открыть следующий шаг. Представитель допустимого класса.140: показать сообщение, не открывать следующий шаг. Представитель верхнего недопустимого класса.
Во всех случаях остальные условия одинаковы: пользователь находится на том же шаге оформления, остальные поля заполнены корректно, действие — «Продолжить».
Почему не взять -8 для первой проверки диапазона? Строка со знаком не входит в выбранную область: она нарушает заданный формат. Программа может остановиться на проверке формата, не дойдя до сравнения с минимумом. Значение 0 позволяет исследовать нижний предел без этого смешения. Если интерфейс вообще не позволяет такой ввод, нужно отдельно согласовать уровень проверки: поле, запрос к API или другой доступный вход.
Заметь повторение одного класса
Учебное правило: только цифры, значение 1–100 включительно. Это классификатор по условию, а не проверка настоящего магазина.
Формат разрешён; значение между 1 и 100 включительно.
Без JavaScript: 0 — нижний недопустимый класс; 25 — допустимый; 140 — верхний недопустимый; -8 нарушает формат. Запись 001 разрешена и имеет значение 1.
Ничего не отправляется и не сохраняется. Отказ по формату не проверяет нижний числовой класс.
Представь набор 20, 25, 40, 70. Все значения допустимы и лежат в одном числовом классе. Четыре успешных перехода не показывают, как система обрабатывает превышение максимума или значение ниже минимума.
Добавление 0 и 140 проверяет другие классы. При этом дополнительные допустимые значения не обязательно бесполезны: у команды может быть отдельная гипотеза об ошибке для конкретного числа. Просто это уже другое основание для проверки, и его стоит записать.
Полезно подписывать рядом с тестом его цель. «Количество 25 принимается — представитель допустимого класса» понятнее, чем «Позитивный тест 1». Такая подпись помогает заметить, что все десять позитивных тестов закрывают одну и ту же цель.
Отдели покрытие классов от гарантии качества
Допустим, проверка 25 прошла, но программа ошибочно отклоняет 70. Наш набор этого не обнаружил. Предположение об одинаковой обработке внутри класса оказалось недостаточным для этой ошибки реализации.
Поэтому три выполненные проверки означают покрытие трёх выбранных числовых классов, а не доказательство корректности всех входов. При обнаружении особого поведения стоит уточнить требования и проверить гипотезу отдельно.
Другой пример: программа отклоняет 100, хотя этот предел включён. Число 25 из того же допустимого класса такой ошибки не выявляет. Для исследования значений рядом с пределами применяется граничный анализ — следующая тема нашего раздела. Здесь достаточно заметить, какой риск остался после выбора представителей.
Не забудь о формате
После числовых классов вернись к остальным правилам поля. Пустой ввод, строка abc, дробная запись 2.5 и пробелы требуют своих проверок. В нашем упражнении все они должны вызвать указанное сообщение и запретить переход, потому что это прямо задано требованиями.
Не добавляй одновременно неверное количество и ошибку другого поля, если цель — проверить количество. Иначе отказ оформления не покажет, какое условие сработало. В примечаниях к редакции CTFL v4.0.1, приложение C, с. 73 указано уточнение к §4.2.1 об изоляции недопустимых классов во избежание маскировки дефектов.
Разобранные примеры
Это собственные синтетические правила двух независимых функций. Классы строим заново для каждого правила.
Пример 1. Вместимость группы
Условие. Количество участников — обязательная непустая запись из цифр, значение от 3 до 12 включительно. На «Создать» допустимое количество создаёт группу; иначе «Введите число участников от 3 до 12», группа не создаётся.
Ход разбора. Сначала ограничиваем область целыми неотрицательными числами разрешённого формата. Классы: 0–2, 3–12 и 13 и больше. Выбираем представителей 1, 7, 20; каждый принадлежит ровно одному классу. Ведущие нули условием не запрещены, но отдельного поведения преобразования это упражнение не исследует.
Проверки и вывод. В одинаковом исходном состоянии вводим по одному значению и нажимаем «Создать»: для 1/20 ожидаем сообщение и отсутствие группы, для 7 — создание группы. Это покрытие выбранных классов, не всех входов: буквы, пустота и ошибки ровно на 3/12 требуют отдельных оснований и проверок.
Пример 2. Классы могут быть не числовыми
Условие. Учебный API принимает обязательное поле delivery: pickup выбирает самовывоз, courier — курьера. Любое другое строковое значение даёт «Неизвестный способ доставки» без создания заказа. Отсутствующее поле и нестроковый тип сейчас вне области разбора.
Ход разбора. У двух допустимых значений разное ожидаемое действие, поэтому не объединяем их в один класс «любая допустимая строка». Выделяем самовывоз, курьера и остальные строки; представители — pickup, courier, drone.
Проверки и вывод. Отправляем по одному значению при корректных прочих полях: ожидаем соответствующий способ либо указанную ошибку без заказа. Этот пример показывает границу приёма: три класса здесь получились из правил доставки, а не из минимума и максимума. Ошибки типов и обязательности остаются за пределами набора.
Попробуй по образцу
Поле принимает обязательное количество целых коробок от 2 до 40 включительно. Формат — только цифры без знака, пробелов и дробного разделителя; ведущие нули допустимы. Кнопка «Подтвердить» сохраняет допустимое количество; иначе показывает «Введите целое количество от 2 до 40», сохранения нет.
Рассмотри целые неотрицательные числа, полученные из записей разрешённого формата. Выпиши три числовых класса. Для каждого выбери представителя, укажи действие и ожидаемый результат. Затем объясни, чего эти три проверки не доказывают.
Показать разбор самопроверки
Один корректный ответ: меньше 2 в выбранной области — 0 или 1, берём 1, ошибка без сохранения; от 2 до 40 — 12, сохранение; больше 40 — 60, ошибка без сохранения. Во всех случаях нажимаем «Подтвердить». Возможны другие представители, если они принадлежат своим классам и не смешивают цель с ошибкой формата. Эти проверки не доказывают корректность всех допустимых чисел и не покрывают пустой/нечисловой ввод.
Что оставить себе
Задай область данных и правило разделения. Выдели непересекающиеся классы, выбери представителей и запиши ожидания по требованиям. Отдельно перечисли оставшиеся риски: формат, границы, особые правила и взаимодействие полей.
Источник понятий: ISTQB Certified Tester Foundation Level Syllabus v4.0.1, §4.2.1. Авторы и правообладатель syllabus указаны в его Copyright Notice: © ISTQB, авторы редакций 4.0/4.0.1. Источник проверен 05.11.2026. Магазин, примеры коробок и объяснение выбора значений — собственные учебные примеры «Твой Ментор». Материал не является официальным курсом ISTQB.