Chrono Mock
IdiomaPortuguês (Brasil)

Alterar a data do sistema para testar um aplicativo

É o truque mais antigo que existe: colocar o relógio do Windows na data que você quer testar, executar o programa e voltar o relógio. Funciona - e enquanto o relógio está mudado, ele muda também todo o resto da máquina.

O que realmente se move junto com o relógio

O relógio do sistema não é privado do programa que você testa. Cada processo, serviço e conversa de rede da máquina lê o mesmo, então uma mudança feita para um teste é uma mudança feita para todos.

O que lê o relógioO que acontece quando você o move
O logon no domínio e as pastas compartilhadasO Kerberos tolera, por padrão, uma diferença de relógio de cinco minutos. Acima disso, seus tickets são recusados e o logon ou o acesso a um compartilhamento falha.
Certificados e HTTPSSe um certificado é válido é decidido pelo relógio. Coloque-o depois da data de término de um certificado e toda conexão que depende dele é recusada como expirada; volte-o o suficiente e o certificado ainda não é válido.
O serviço Hora do WindowsUma máquina ingressada em um domínio obtém a hora de um controlador de domínio e, por padrão, o serviço corrige o relógio seja qual for o tamanho da diferença. A data que você definiu pode ser desfeita enquanto você ainda testa.
Tudo o que registra uma horaArquivos, logs, linhas de banco de dados e e-mails enviados enquanto o relógio está mudado levam a data do teste e a mantêm depois que você devolve o relógio.
Software que lembra a data mais recente que viuAlguns programas leem um relógio que anda para trás como adulteração - e é exatamente isso que acontece quando você restaura a data real.

Quanto mais distante a data, mais disso você encontra. Uma máquina colocada em 2038 vê como expirado todo certificado emitido hoje. Testar 2038 sem isso →

Também é preciso um direito que a maioria das contas não tem: alterar a hora do sistema é um privilégio de administrador e, em uma máquina gerenciada, muitas vezes não é seu.

Quando alterar o relógio é a resposta certa

Uma máquina virtual que ninguém mais usa, com a própria sincronização de relógio desligada, é uma bancada de testes perfeitamente boa. Você a descarta depois, então nada do que ela registrou importa. Se você tem uma e o teste é de uma única data, é a coisa mais simples que funciona.

O problema começa quando é a máquina em que você trabalha, a que está no domínio ou a que também executa algo que não pode notar nada.

Mova o relógio de um único programa

A hora deslocada é visível para um processo e os filhos que ele inicia. Seu logon no domínio, seus certificados e o Windows Update nunca a veem, então nada da tabela acima se move - e não há nada a devolver depois.

# O aplicativo vê 31 de dezembro de 2027, 23:59:50. Todo o resto mantém a data real.
chrono run "C:\apps\test.exe" --at 2027-12-31T23:59:50

# Começar dez minutos antes da meia-noite e rodar a velocidade x60 - a virada do ano chega em dez segundos
chrono run "C:\apps\test.exe" --at 2027-12-31T23:50:00 --mode x60

Se uma data movida para um programa realmente chegou a ele não é algo para presumir. Toda sessão termina com um veredito e a lista dos canais de tempo que o programa realmente leu. Como saber se funcionou →

O que isto não substitui

  • Um programa que pergunta a hora a um servidor está fora do alcance de uma substituição local. A sessão avisa quando vê o programa abrir uma conexão de rede, em vez de deixar você presumir que o teste passou.
  • Testar o próprio sistema - um serviço que reage à mudança do relógio real, uma tarefa agendada, o comportamento do Windows em torno de uma mudança de relógio - não tem substituto para mudar o relógio, em uma máquina que você possa se permitir.

Experimente