Это один из тех вопросов, который на самом деле просто пытается понять, понимаете ли вы связанные с этим проблемы. Там нет "один правильный ответ". Из вопроса даже не ясно, что именно вы должны тестировать. Если программа полагается на правильность системных часов, то она должна дать сбой, если системные часы неверны. Если программа полагается на то, что системные часы являются монотонными, произойдет сбой, если системные часы переместятся назад.
По сути, вам нужно протестировать две категории вещей. В случаях, когда программа должна работать, не так ли? (Например, если он должен терпеть обратные скачки часов в обязательном порядке, что произойдет, если произойдет скачок назад?) (Если предполагается отказаться от аутентификации, если часы находятся слишком далеко, действительно ли это так?)
Одна проблема заключается в том, как вы указываете неверную информацию о часах. Один из предложенных способов - добавить вызов, чтобы перехватить функцию программы «получить текущее время» и указать другое время. Недостатком этого подхода является то, что программа может где-то глубоко в своем коде получить время другим способом, который вам не удалось перехватить.
Но настоящая проблема этого подхода заключается в том, что он может привести к тому, что система увидит противоречивые времена. Например, допустим, что программа создает файл, а затем вызывает stat
, чтобы получить время последнего изменения файла, которое сравнивается с перехваченным системным временем. Программа получит неправильный возраст для файла, если вы не перехватите и не сместите все вызовы, которые возвращают время.
Другой способ заключается в неправильной установке системных часов в тестовом жгуте.