Altifigence Academy

25 / 37 · Conceito

Plano de verificação, cobertura e referência independente

Distinga testes aprovados de cumprimento e planeje fronteiras, cruzamentos de condições e contraexemplos mínimos.

Converta a especificação em afirmações verificáveis

Em vez de «funciona bem», escreva requisitos concretos: estado após reset, saída normal, manutenção ao parar, tratamento de entradas proibidas e momento da conclusão. Vincular cada afirmação a pelo menos um teste e uma observação revela omissões.

Afirmação funcionalEstímuloObservação
Reset prioritárioReset e enable simultaneamente em 1Próximo estado inicial
Ordem preservadaPadrões assimétricos consecutivosValores e valid de todas as saídas
Retorno exatoEstados ao redor do máximoM−1→0, sem valores fora do intervalo
Manutenção ao pararMudar entrada com accept=0Estado armazenado invariável
Sobreposição permitida10101Detecção nas entradas aceitas 3 e 5

Por que uma referência independente é necessária

Copiar as mesmas fatiasFatia de bits Operação que seleciona um intervalo contíguo de um vetor. O intervalo determina a largura e a ordem dos bits do resultado. Saiba mais do deslocador também pode copiar um erro de índice. Expressar a especificação de outra forma, por multiplicação e módulo inteiros ou comparação de sufixos de uma string, ajuda a confrontar. Outra representação não demonstra independência automaticamente: confira casos pequenos manualmente.

Cobertura não é quantidade de acertos

Executar uma linha não implica verificar todos os seus casos funcionais. Cruzamentos como reset×enable, estado×entrada ou full×push×pop revelam defeitos. Acrescente testes dirigidos para combinações raras e importantes, além da aleatoriedade.

Uma função combinacional de N entradas tem 2N2^N combinações; um circuito sequencial também tem sequências temporais. Analise alcançabilidade dos estados e manutenção de invariantesInvariante Condição que deve ser verdadeira em toda execução permitida. Por exemplo, a ocupação de uma FIFO com profundidade 4 sempre fica entre 0 e 4. em cada transição. Não apresente uma quantidade finita de simulações como demonstração matemática para tempo ilimitado.

Calcule expectativas a partir da especificação, sem copiar a implementação. Diante de uma falha, salve também entradas e estado anteriores, não apenas o valor incorreto.

Quatro pontos de observação para verificar
  1. Especificação e estímulos: Selecione fronteiras e cruzamentos de condições
  2. Referência independente: Calcule valor esperado e instante válido
  3. Compare com o DUT: Confronte no mesmo ponto de observação
  4. Registre a primeira discrepância: Preserve o contraexemplo mínimo e a semente

Reduza e registre as falhas

Salve estado anterior, entrada, esperado e real da primeira discrepância. Reduza os estímulos a um contraexemplo mínimo antes de corrigir. Depois execute tanto o novo teste quanto os anteriores de fronteiras e resetReset Controle que retorna o estado a um valor inicial especificado. É preciso definir se é síncrono ou assíncrono e sua prioridade em relação a outros controles. Saiba mais.

Experimente

A cobertura RTL é de 100 % e 10 000 testes aleatórios passam, mas reset=1 e enable=1 nunca coincidem. O que deve ser acrescentado?

Ler a explicação

Revise essa combinação na especificação e acrescente um teste dirigido, partindo de estado inicial não nulo, que revele a prioridade. Cobertura de código e quantidade de testes não substituem a verificação de uma condição funcional concreta.

Sua escolha vale neste navegador. Altere-a a qualquer momento no rodapé.