Как проверить отображение красного цвета при скорости 180 км/ч
Что проверяют
Работу с порогом и умение тестировать условие, которое в реальности воспроизвести трудно. Никто не ждёт, что вы разгонитесь до 180 км/ч: вопрос о том, как подать системе нужное значение и проверить реакцию интерфейса. Следом почти всегда спрашивают, что происходит на 179 и 181 и как ведёт себя цвет, когда скорость колеблется около порога.
Как отвечать
Уточните требование: красный при скорости «от 180» или «больше 180», в каких единицах приходит значение, округляется ли оно для показа.
Каркас на Python:
- граница: юнит-тест функции порога с
pytest.mark.parametrizeна 179,179.9, 180,180.1, 181. Именно здесь выясняется, написано в коде>или>=и совпадает ли это с требованием; - подмена источника: скорость приходит от датчика, CAN-шины, API или симулятора. В тесте её подставляют заглушкой:
unittest.mock.patchна функцию чтения, фикстура с фейковым сервером, запись значения в симулятор. Так 180 км/ч появляется за миллисекунды и воспроизводится в CI; - единицы: 180 км/ч это 50 м/с и примерно 112 миль в час. Если источник отдаёт м/с, а порог записан в км/ч, красный появится совсем не там;
- отображение: цвет читается как CSS-свойство в Selenium или Playwright, через состояние виджета или скриншот с допуском по пикселям. Надёжнее проверять класс или состояние, а сам цвет подтвердить одним визуальным тестом;
- динамика: плавный разгон через порог и торможение обратно. Если в требованиях есть гистерезис, например красный гаснет только ниже 175, это отдельные кейсы. Если его нет, проверьте, не мигает ли индикатор при значениях, которые попеременно приходят чуть ниже и чуть выше 180.
Где спотыкаются
Отвечают про физику восприятия цвета и выезд на трассу. Вопрос о тестировании программы, и правильный ход здесь подмена входных данных.
Проверяют ровно 180 и считают задачу решённой. Без 179.9 и 180.1 непонятно, правильно ли выбран оператор сравнения.
Забывают про округление. На экране написано «180», а внутри 179,6, и цвет ещё не красный. Пользователь видит противоречие, которое нужно либо завести багом, либо закрепить в требованиях: по какому значению, сырому или округлённому, считается порог.