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.
As aulas podem ser lidas gratuitamente. Inscreva-se para salvar o progresso.
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 funcional | Estímulo | Observação |
|---|---|---|
| Reset prioritário | Reset e enable simultaneamente em 1 | Próximo estado inicial |
| Ordem preservada | Padrões assimétricos consecutivos | Valores e valid de todas as saídas |
| Retorno exato | Estados ao redor do máximo | M−1→0, sem valores fora do intervalo |
| Manutenção ao parar | Mudar entrada com accept=0 | Estado armazenado invariável |
| Sobreposição permitida | 10101 | Detecçã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 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.
- Especificação e estímulos: Selecione fronteiras e cruzamentos de condições
- Referência independente: Calcule valor esperado e instante válido
- Compare com o DUT: Confronte no mesmo ponto de observação
- 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.