Chrono Mock
IdiomaPortuguês (Brasil)

Datas que valem a pena testar

Software não quebra em terças-feiras comuns. Ele quebra no último dia do trimestre, em 29 de fevereiro, no instante em que o ano vira e um segundo depois de uma licença expirar. Estas são as datas que encontram esses bugs - 14 delas acompanham o programa como cenários nomeados.

Limites de período

Tudo o que encerra um período, numera um documento por ano ou acumula até uma data de corte erra aqui primeiro.

  • Último dia do mês - o fechamento mensal e a apropriação do período se comportam bem no último dia do mês?
  • Último dia do trimestre - o fechamento trimestral e os relatórios se comportam bem no último dia do trimestre?
  • Último dia do ano fiscal - o aplicativo encerra o ano fiscal no dia certo, o dia anterior ao início do novo ano fiscal?
  • Virada de ano, ao vivo - a numeração de documentos, o ano no nome e os relatórios anuais lidam com a virada enquanto ela acontece, em vez de serem reiniciados depois?

O último é o que as pessoas normalmente não conseguem testar de forma alguma, porque exige que o relógio cruze a meia-noite de 31 de dezembro enquanto o aplicativo está rodando. Com um relógio acelerado, é um trabalho de dez segundos.

Limites do calendário e da representação

  • 29 de fevereiro - o dia bissexto, que só existe a cada quatro anos e que uma quantidade surpreendente de código de validação rejeita sem cerimônia.
  • Epoch Unix zero - o aplicativo trata 1º de janeiro de 1970 como uma data real, ou como um valor vazio que ele deveria ter se recusado a armazenar?
  • Limite de 2038 - o momento em que um time_t de 32 bits com sinal se esgota, em 2038-01-19T03:14:07Z. Um segundo depois, o contador estoura para 1901.

Licenças, testes e instalação

Estes servem para testar o seu próprio licenciamento, que é o caso para o qual foram escritos.

  • Último dia do teste - o aplicativo ainda funciona no último instante do período de teste?
  • Primeiro dia depois da expiração do teste - ele nega o acesso no momento em que o teste termina, e como? Com uma mensagem sensata ou com um stack trace?
  • Licença expirada há um ano - ele lida com uma licença que expirou há muito tempo, não só ontem?
  • Data anterior à instalação - ele se comporta bem quando o relógio é colocado antes da própria data de instalação? Este lê a data de arquivo do próprio alvo, então não precisa de nenhum parâmetro.

Regras de negócio e comportamento do relógio

  • Pagamento devido, +N dias úteis - um pagamento devido em N dias úteis cai no dia certo, pulando fins de semana e os feriados do país certo? É o único cenário que precisa de um calendário, e a resposta difere entre os mercados.
  • Limite da maioridade - o aplicativo admite alguém exatamente no limite e recusa alguém a um dia de distância?
  • Defasagem de relógio, +90 s - o aplicativo se vira quando o relógio dele está noventa segundos adiantado em relação ao tempo real? É o caso que quebra senhas de uso único baseadas em tempo e a validação de tokens.

Usando um deles

Um cenário é uma expressão de data com nome. A calculadora descobre o que ela significa, e a substituição executa um aplicativo nela - o mesmo nome nos dois lugares.

# Que data é essa, e o que ela testa?
chrono calc --preset month-end

# Executar um aplicativo nela
chrono run "C:\apps\test.exe" --preset year-rollover --report session.txt

# Os cenários de teste pegam a data de início da data do arquivo do próprio alvo
chrono run "C:\apps\test.exe" --preset trial-first-day-after

Na janela, eles são chips acima do campo de data - um clique o preenche. Cada um traz a própria frase dizendo o que ele detecta, que é a parte que uma calculadora de datas on-line não tem como dar.

A tela de configuração do Chrono Mock com a seção Scenarios aberta: um campo de busca sobre a lista, e depois cada data pronta com a pergunta que ela responde - o limite de 2038, 29 de fevereiro, um relógio noventa segundos adiantado, o último dia do mês - e, sob a lista, uma linha dizendo que mais três precisam de um valor que você escolhe. O rodapé lê o momento em linguagem simples acima do botão Start.
Cada cenário traz a pergunta que responde, e não apenas uma data. Os três que precisam de um valor que você escolhe são nomeados sob a lista em vez de escondidos.

O que não está aqui

As transições do horário de verão. Forçar um aplicativo a atravessar o limite da entrada ou da saída do horário de verão é um teste realmente útil e está deliberadamente ausente, porque o fuso horário da sessão é um deslocamento fixo, sem horário de verão - ainda não há transição para simular. Distribuir um cenário que silenciosamente não fizesse nada seria pior que não distribuí-lo.

Ele volta com um modelo das regras de fuso horário. O que o fuso horário faz e o que não faz →

Experimente