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