Решить задачу про улитку, которая ползет по столбу с дневным подъемом и ночным спуском
Что проверяют
Задачу дают тестировщику не ради формулы, а ради подхода: заметите ли асимметрию последнего дня, спросите ли про условие достижения вершины и придумаете ли набор проверок. По сути вас просят на маленьком примере показать тест-дизайн: классы эквивалентности, границы, невалидные входы.
Как отвечать
Разберите движение вслух. За сутки улитка поднимается на разницу дневного подъёма и ночного спуска, но в тот день, когда она дотягивается до вершины, ночного спуска уже нет. Отсюда ответ: если дневного подъёма хватает до вершины, нужен один день, иначе к остатку высоты применяется округление вверх и добавляется финальный день.
дано: подъём A, спуск B, высота H
если A >= H: 1
если A <= B: вершина недостижима
иначе: ceil((H - A) / (A - B)) + 1Дальше сразу предложите проверки, это и есть ваша сильная часть:
- границы: высота ровно равна дневному подъёму и высота на единицу больше;
- ровное деление против остатка, чтобы поймать ошибку округления;
- вырожденные случаи: подъём равен спуску, спуск больше подъёма, нулевая высота;
- невалидные данные: отрицательные значения, дробные величины.
Уточните у собеседующего, считается ли касание вершины успехом и может ли улитка соскользнуть ниже точки старта.
Где спотыкаются
Делят высоту на суточный прирост и получают лишний день. Это классическая ошибка на единицу, и ловится она тестом, где высота ровно кратна приросту.
Игнорируют случай, когда подъём не больше спуска. В формуле это деление на ноль или отрицательный знаменатель, а по смыслу вершина недостижима. Код без такой проверки падает на первом же злом входе, и тестировщику пропустить это особенно обидно.
Ограничиваются одним верным числом. От кандидата в тестирование ждут не только ответа, но и списка случаев, которые надо проверить, плюс вопросов к неоднозначной формулировке условия.