Как проверить граничные значения для лифта: первый, десятый, нулевой и одиннадцатый этажи?
Что проверяют
Понимаете ли вы технику граничных значений, а не просто повторяете четыре числа из вопроса. Интервьюеру важно, чтобы вы уточнили требования и объяснили, откуда берутся границы. Следом часто просят добавить классы эквивалентности или сказать, что изменится, если в доме есть подвал.
Как отвечать
Начните с уточнений: какие этажи допустимы, есть ли подвал или паркинг, где вводится номер этажа. Физические кнопки в кабине не дадут нажать 11, значит, речь о программном вводе: пульт диспетчера, API контроллера, сенсорная панель.
Дальше каркас:
- классы эквивалентности: меньше 1 (невалидный), от 1 до 10 (валидный), больше 10 (невалидный);
- двухточечная граница: 0, 1, 10, 11, по одному значению с каждой стороны каждой границы;
- трёхточечная: добавляются 2 и 9, это ловит ошибки вида
<вместо<=; - ожидаемый результат: на 1 и 10 лифт едет и останавливается точно на этаже; на 0 и 11 вызов отклоняется, лифт не двигается, на табло понятное сообщение, состояние контроллера не меняется.
Потом сценарии у границ, которые отличают сильный ответ:
- поездка с 1 на 10 и обратно через весь диапазон;
- на первом этаже нет кнопки «вниз», на десятом нет кнопки «вверх»;
- вызов на этаж, где лифт уже стоит;
- невалидный ввод помимо чисел: пустое значение,
-1,1.5, буквы.
Если проверку автоматизируют, границы удобно задать через @pytest.mark.parametrize или data-driven тест: один список значений и ожидаемых результатов.
Где спотыкаются
Не уточняют нумерацию. В одних странах первый этаж это уровень земли, в других он считается нулевым, и граница сдвигается.
Проверяют только 0 и 11, забывая, что валидные 1 и 10 тоже граница, и дефект часто сидит именно на них.
Путают граничные значения с классами эквивалентности и пишут по тесту на каждый этаж от 1 до 10. Покрытия это не добавляет, а набор раздувается.