Rusau LearnВойти

Тест-дизайн

Классы эквивалентности и граничные значения: техники тест-дизайна с примерами

Классы эквивалентности и граничные значения – две самые известные техники тест-дизайна, которые сокращают перебор до нескольких проверок. Входные данные делят на классы, внутри которых система ведёт себя одинаково, и из каждого класса, позитивного и негативного, берут хотя бы одно значение. Затем проверяют края классов, где ошибки встречаются чаще: саму границу и ближайшее значение за ней, а в варианте с тремя точками ещё и соседнее значение внутри класса.

Мой видеоурок: Урок 9. Техники тест-дизайна. Классы эквивалентности и граничные значенияОткрыть на YouTube
2 техники
чаще других спрашивают на собеседовании и в тестовых заданиях
2 или 3 точки
оба подхода к границам признаны ISTQB
Бесплатно
урок с заданиями в моём базовом курсе

Что такое тест-дизайн

Тест-дизайн – это этап тестирования, на котором проектируют и создают тест-кейсы по заранее определённым критериям качества и целям тестирования. Проще говоря, это придумывание тестов. Целей у него две: найти самые серьёзные для продукта ошибки и обойтись при этом как можно меньшим числом тестов.

Тест-дизайну предшествует тест-анализ. В программе ISTQB анализ отвечает на вопрос, что тестировать, и по требованиям определяет условия тестирования. Проектирование отвечает на вопрос, как тестировать, и превращает эти условия в тест-кейсы. Разницу иногда спрашивают на собеседовании отдельным вопросом.

Техники нужны потому, что исчерпывающее тестирование невозможно. Перебрать все значения даже одного поля не успеть, и техника подсказывает, какие несколько значений проверить вместо сотни. Подробнее о техниках можно прочитать в книге Lee Copeland "A Practitioner's Guide to Software Test Design".

Классы эквивалентности

Класс эквивалентности – это набор входных данных, которые система обрабатывает одинаково или которые приводят к одному результату. Если поле "Возраст" принимает значения от 0 до 120 и с любым из них пускает в систему, то 0, 3, 50 и 120 ведут себя одинаково и составляют один класс.

Классы бывают позитивными и негативными. В позитивных лежат значения, которые система должна принять, в негативных – значения, которые она должна отвергнуть. Для того же поля это числа меньше нуля, числа больше 120, буквы и спецсимволы. В программе ISTQB такие классы называются действительными и недействительными.

Правил у техники два: определить классы и проверить хотя бы одно значение из каждого, позитивного и негативного. Если система верно обработала одно значение, остальные значения класса она обработает так же, и вместо десятка проверок на класс остаётся одна.

Делить можно не только значения полей. Например, в мобильной лаборатории устройства с одинаковым разрешением экрана, платформой и версией системы попадают в один класс, и часть проверок достаточно пройти на одном устройстве из класса.

Граничные значения: две точки или три

Анализ граничных значений продолжает эквивалентное разбиение и проверяет края классов. Ошибки чаще всего случаются именно там: по программе ISTQB граница в коде может оказаться сдвинутой вверх или вниз, пропущенной или лишней.

Пусть в банковском приложении лимит на один перевод составляет 150 000 рублей. Если в коде условие записано как сумма < 150000 вместо сумма <= 150000, перевод ровно на 150 000 отклонят, хотя по требованиям он разрешён. Проверка на самой границе ловит этот сдвиг, а сумма 100 000 из середины класса его не заметит.

Сколько значений брать у границы, есть два подхода. Оба описаны в программе ISTQB Foundation Level 2018 года и признаются верными, поэтому в споре на собеседовании можно сослаться на программу. В программе 2023 года они называются анализом по двум и по трём точкам (2-value и 3-value BVA).

  • Две точки

    Сама граница и ближайшее значение за ней, в соседнем классе. Для поля, в которое можно ввести от 2 до 6 символов, это 1 и 2 на нижней границе, 6 и 7 на верхней.

  • Три точки

    Граница и оба соседа, перед ней и после неё. Для того же поля это 1, 2, 3 и 5, 6, 7. Меня учили этому подходу, и в работе я пользуюсь им.

  • Дробные числа

    Шаг до соседнего значения равен точности поля. Если поле принимает от 1,00 до 3,00 с двумя знаками после запятой, на нижней границе проверяют 0,99, 1,00 и 1,01, на верхней 2,99, 3,00 и 3,01.

  • Даты

    Границы зависят от типа данных. В месяце 30 или 31 день, в феврале 28, а в високосный год 29, месяцев 12, поэтому 45 в поле дня и 13 в поле месяца – негативные значения.

Пример: возраст соискателя

Пример из моего урока. Компания решает по возрасту, брать ли соискателя на работу. От 0 до 13 лет она не нанимает, с 14 до 17 берёт на неполный день, с 18 до 55 – на полный, а с 56 до 99 снова отказывает. Возраст вводится числом в поле.

Позитивных классов здесь четыре: 0–13, 14–17, 18–55 и 56–99. Негативные – отрицательные числа, числа от 100 и выше, буквы и спецсимволы. Границы позитивных классов: 0, 13, 14, 17, 18, 55, 56 и 99. Граничные значения заодно покрывают и классы, ведь значение 54 с границы 55 лежит внутри класса 18–55.

  • Эквивалентное разбиение

    По одному значению из каждого класса, например 7, 15, 30 и 70, а также -5, 150, буква и спецсимвол. Всего восемь проверок.

  • Граница 18 по трём точкам

    17, 18 и 19. Возраст 17 должен дать неполный день, 18 и 19 – полный.

  • Граница 55 по трём точкам

    54, 55 и 56. Возраст 54 и 55 даёт полный день, 56 – отказ.

  • Граница 0

    -1, 0 и 1. Ноль проверяют всегда, как и пустое поле: так видно, что валидация вообще срабатывает.

  • Если поле принимает дроби

    При одном знаке после запятой соседями границы 55 будут 54,9 и 55,1.

Частые ошибки в заданиях на эти техники

Я проверял задания по этим техникам у студентов своих курсов и в обновлённом уроке собрал ошибки, которые встречаются чаще всего.

  • Границы только у позитивных классов

    У негативных классов границы тоже есть, и значения на них берут так же. Ноль и пустое значение проверяют всегда, даже если это отдельный класс.

  • Один класс дробят на мелкие

    Если поле принимает от 5 до 100, это один позитивный класс. Делить его на 5–20, 20–40 и так далее незачем: код описывает диапазон целиком, и мелкие классы ничего не добавляют.

  • Отдельная проверка середины

    В уроке 2020 года я советовал брать значение из середины класса, а в уточнении 2023 года от этого совета отказался. Представителя класса и так дают граничные значения, а середина диапазона в коде ничем не выделена.

  • Проверяют только разрешённый тип

    Если поле принимает буквы, в него всё равно вводят цифры, спецсимволы, теги и фрагменты кода вроде SQL-инъекции или XSS. Система должна сохранить их как обычную строку и не исполнить.

  • Две ошибки в одном значении

    Для поля, которое принимает от 2 до 6 цифр, одна буква нарушает сразу и длину, и тип, и непонятно, какая проверка сработала. Буквы вводят строкой разрешённой длины, например из пяти символов. Программа ISTQB тоже советует не смешивать в одном тесте несколько негативных классов, иначе один дефект может спрятать другой.

  • Классы до бесконечности

    Классический подход тянет негативные классы до минус и плюс бесконечности, но ввести в поле любое число нельзя. Начинают с того, что можно ввести: пустое значение, позитивный класс вроде 1–30, затем 31 и больше. Верхний предел, например 255 символов, уточняют по требованиям или договариваются о нём с командой.

  • Строка из букв в тест-кейсе

    В документации пишут "64 буквы" числом, а саму строку из 64 букв не приводят: пересчитывать её никто не будет. Позитивные и негативные классы записывают раздельно, чтобы проверяющему сразу было видно, как вы поняли технику.

Видеоуроки, шпаргалка и тренажёры

Обе техники я разбираю в девятом уроке курса "Тестировщик с нуля" на YouTube. В 2023 году я записал к нему уточнение с разбором частых ошибок, а в 2024-м – ответы на вопросы собеседования по тест-дизайну, где кроме этих техник есть таблица принятия решений, попарное тестирование и диаграмма переходов состояний. В бесплатном базовом курсе по тестированию тема идёт уроком "Классы эквивалентности и граничные значения", и после теории в нём есть задания.

Шпаргалка показывает классы и границы на числовой оси и сравнивает подходы с двумя и тремя точками. В тренажёрах нужно выбрать граничные значения по условию задачи и найти ошибку на границе в валидации формы, а калькулятор границ считает значения для любого диапазона.

Курсы по теме

Вопросы и ответы

Что такое класс эквивалентности простыми словами?

Это набор значений, которые система обрабатывает одинаково. Если поле принимает возраст от 18 до 55 и любое такое значение даёт один результат, достаточно проверить одно из них, например 30, чтобы судить обо всём классе. Негативные классы составляют значения, которые система должна отвергнуть: числа вне диапазона, буквы, спецсимволы.

Чем классы эквивалентности отличаются от граничных значений?

Эквивалентное разбиение делит данные на классы и берёт по одному значению из каждого. Анализ граничных значений проверяет края этих классов, где ошибки встречаются чаще всего. Техники используют вместе: сначала находят классы, потом их границы.

Сколько граничных значений брать: два или три?

Оба подхода верны и описаны в программе ISTQB. При двух точках берут границу и ближайшее значение за ней, при трёх – границу и оба соседних значения. Для диапазона от 18 до 55 это 17, 18, 55, 56 или 17, 18, 19, 54, 55, 56. В тестовом задании стоит прямо написать, каким подходом вы пользуетесь.

Нужно ли проверять значение из середины класса?

Отдельно нет. Одного представителя класса достаточно, и его дают значения рядом с границей. В раннем уроке я советовал проверять середину, но позже отказался от этого совета: в коде середина диапазона ничем не выделена.

Можно ли применять граничные значения к тексту?

К длине текста можно: число символов – это число, и у поля на 2–64 символа границы 2 и 64. Программа ISTQB 2018 года применяет технику к упорядоченным числовым данным, включая даты и время, и я придерживаюсь этого подхода. Границы для самих букв иногда тоже строят, но реже.

Какие ещё техники тест-дизайна спрашивают на собеседовании?

Таблицу принятия решений, попарное тестирование, диаграмму переходов состояний, причинно-следственный анализ и предугадывание ошибок. Не стоит ограничиваться в ответе классами эквивалентности и граничными значениями: чем больше техник вы назовёте и покажете на примере, тем лучше.

Посмотреть программы курсов

Программа каждого курса открыта целиком: видны все модули, уроки и число шагов.

Все курсы

Здесь используются cookies: без них сайт не работает, и по ним видно, откуда о платформе узнают.Cookies нужны для входа и учёта переходов. Подробнее