По какому принципу отбирать значения при эквивалентном разделении для тест-кейсов
Что проверяют
Умеете ли вы сокращать перебор осмысленно и отличаете ли классы эквивалентности от граничных значений. Это база тест-дизайна, и по ответу видно, берёте ли вы классы из требований или придумываете их на ходу.
Как отвечать
Область входных значений делится на классы, внутри которых система по спецификации ведёт себя одинаково. Из каждого класса берётся один представитель: остальные значения того же класса новой информации не дадут. Правила отбора:
- классы должны покрывать всю область значений и не пересекаться;
- делить нужно по каждому измерению отдельно: значение, тип, формат, длина, состояние системы. Одно поле обычно даёт несколько наборов классов;
- разделять валидные и невалидные классы. Валидные можно комбинировать в одном тест-кейсе, невалидные проверяются по одному, иначе первая же сработавшая проверка закроет ввод и остальные останутся непроверенными;
- представителя брать из середины класса, а края закрывает соседняя техника, анализ граничных значений: для диапазона от восемнадцати до шестидесяти пяти это семнадцать, восемнадцать, шестьдесят пять и шестьдесят шесть;
- то же самое применимо к выходным значениям, не только к входным.
Для поля возраста классы получаются такие: пусто, не число, меньше минимума, рабочий диапазон, больше максимума, дробное, отрицательное, очень длинная строка. Восемь тест-кейсов вместо бесконечного перебора.
Где спотыкаются
Смешивают технику с анализом границ и называют классами сами граничные значения. В итоге середина диапазона не проверена вовсе, хотя именно там живёт основная бизнес-логика.
Кладут несколько невалидных значений в один кейс. Тест краснеет, но непонятно, какая проверка сработала, а вторая и третья ошибки остаются незамеченными до релиза.
Верят в однородность класса буквально. Эквивалентность выводится из спецификации, а реализация может по-разному обрабатывать кириллицу, эмодзи или ведущий пробел. Как только такое подозрение появилось, класс надо делить.