Назовите классы эквивалентности, граничные значения и позитивные и негативные сценарии для поля возраста от 0 до 100 с ограничением продажи алкоголя с 18 лет
Что проверяют
Умеете ли вы разделять два независимых правила: валидацию поля от 0 до 100 и бизнес-правило про 18 лет. Это классическая задача на два измерения, и интервьюер смотрит, не свалите ли вы их в одну кучу и не потеряете ли негативные классы.
Как отвечать
Сначала проговорите, что правил два, и разберите их по очереди.
Классы эквивалентности по валидности поля: меньше 0 невалидно, от 0 до 100 валидно, больше 100 невалидно. Внутри валидного диапазона бизнес-правило делит его надвое: от 0 до 17 продажа запрещена, от 18 до 100 разрешена.
Граничные значения берут парами вокруг каждой границы: минус один и ноль, 17 и 18, 100 и 101. Этого достаточно, отдельно проверять 1 или 99 нечего, они внутри своих классов.
Позитивные сценарии: 18 даёт разрешение, 100 даёт разрешение, 0 и 17 поле корректно принимает и выдаёт отказ в продаже. Отказ это тоже позитивный сценарий, система отработала по правилу.
Негативные сценарии это то, что поле обязано отклонить: минус один, 101, пустое значение, пробел, буквы, дробное 17.5, очень длинное число, значение с пробелами по краям.
Хорошо добавить вопрос интервьюеру: возраст считается полными годами или по дате рождения, и в каком часовом поясе наступает день рождения.
Где спотыкаются
Записывают 0 и 17 в негативные сценарии. Поле эти значения принимает, они внутри диапазона, а отказ в продаже это ожидаемый результат бизнес-правила, а не ошибка валидации. Смешав две шкалы, кандидат теряет половину проверок.
Проверяют только числа. Поле возраста почти всегда текстовый ввод, и падает оно обычно на буквах, пустой строке, минусе внутри числа или на значении, которое не влезает в целочисленный тип.
Берут по одному значению на границу вместо пары. Ошибка сравнения это почти всегда > вместо >=, и ловится она ровно парой 17 и 18: проверив одно только 18, вы получите зелёный тест на сломанном коде.