Тест-дизайн: классы эквивалентности
Привет, охотники! 🏹
В одном из предыдущих постов я рассказывала про тестирование граничных значений. Классы эквивалентности по смыслу близки к этому. Только в то время как граничные значения часто бывают конкретными числами, классы эквивалентности являются множествами
Например, для проверки поля возраста установлены границы от 1 до 100 лет. Тогда граничные значения будут 0, 1, 2, 99, 100, 101. То есть числа вокруг максимального и минимального значений
А вот классы эквивалентности шире: отрицательные значения, меньше 1 года, 1-100 лет, больше 100 лет, недопустимые символы (буквы, спец символы). Вы можете спросить: а зачем нам это все делить, если можно проверять подряд все числа, они же явно “придут в голову”?
Тут стоит отметить преимущества этой техники тест-дизайна: 1. Деление на классы эквивалентности происходит по правилу: любое значение из класса приведет к тому же результату. То есть любое любое отрицательное число даст ошибку, а любое число от 1 до 100 позволит сохранить значение
2. Из этого следует, что при правильном разбиении на классы, не нужно проверять каждое значение диапазона (достаточно одного), ведь итог будет одинаковым
3. Лично я деление на классы использую для структуризации проверок, по сути продумываю чек-лист, что должно пройти, а что нет, и все ли я учла
Иногда деление на классы будет не по диапазонам чисел, а по “подходящим” и “не подходящим” файлам, по группам стран, городов
Разберем короткий выдуманный вариант: Налог на владение автомобилем в странах на букву “А” возвращается налогоплательщику в полном объеме, в остальных - не возвращается совсем. Тогда у нас будет всего 2 класса эквивалентности: страны, начинающиеся на букву “А” и все остальные страны
Нет смысла делить на группы по алфавиту и отдельно проверять “А”, “Б”, “В”… ведь для всего, что не “А” должно выполниться условие, где налог не возвращается
В моей работе использование классов эквивалентности происходит уже автоматически, фиксируете ли вы для себя, когда какую технику тест-дизайна применяете вы?