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_tde 32 bits com sinal se esgota, em2038-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.
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 →