Verificação, validação e testes

Evidência estática e dinâmica, revisões, níveis de teste, casos, fronteiras, cobertura e defeitos.

TLDR

Perguntar sobre esta página

ChatGPTClaudePerplexityGrokGeminiCopiar e abrirDeepSeekCopiar e abrir

Verificação, validação e técnicas

  • Verificação: conformidade do artefacto com a especificação. Validação: adequação às necessidades e uso pretendidos. Passar uma especificação sem cancelamento não resolve a necessidade de corrigir uma reserva.
  • Técnicas estáticas analisam sem executar: revisão, inspeção, análise estática e verificação formal. Dinâmicas executam sistema/modelo: testes e simulação. Ambas podem apoiar avaliações antes do produto final.
  • Uma inspeção estrutura preparação, papéis, critérios e registo de defeitos; um walkthrough percorre um artefacto ou cenário. Checklists não substituem raciocínio.

Casos e níveis de teste

Um caso de teste define entradas, condições e resultados esperados. O oráculo justifica a expectativa independentemente da implementação. O script concretiza os passos de execução.

NívelObjeto
Unidade/componenteUnidade isolada ou pequeno grupo relacionado
IntegraçãoInterações entre componentes ou sistemas
SistemaSistema completo contra requisitos
AceitaçãoCritérios acordados para aceitar o resultado

Desempenho e segurança podem ser testados em vários níveis. Começa pelos casos derivados da especificação e acrescenta depois os necessários para cobrir o código. Serviços simulados não provam integração real. Testes de caixa preta derivam da especificação; os de caixa branca usam a estrutura interna. Esta distinção não equivale a manual/automático.

Um test double substitui uma dependência para isolar uma dúvida. Um ecrã testado com um serviço que devolve sempre sucesso não demonstra integração real, concordância entre mensagens nem compreensão pelo utilizador. Escolhe evidência correspondente a cada risco.

Partições, fronteiras e intervalos

Para minutos inteiros válidos entre 30 e 120 inclusive, as partições são abaixo de 30, de 30 a 120 e acima de 120. Fronteiras com três pontos por limite: 29, 30, 31, 119, 120 e 121. Recusa apenas 29 e 121; adapta o passo se a precisão não for inteira.

Para intervalos válidos de duração positiva, semiabertos [i1,f1)[i_1,f_1) e [i2,f2)[i_2,f_2), há sobreposição se:

i1<f2ei2<f1.i_1<f_2\quad\text{e}\quad i_2<f_1.
Adjacência e sobreposição de reservasA reserva existente ocupa das 14h às 15h, excluindo o fim. O pedido das 15h às 16h é adjacente e aceite. Os pedidos das 14h30 às 15h30 e das 14h30 às 14h45 sobrepõem-se e são recusados.AdjacenteExistentePedido14h15h16hAceite: sem sobreposiçãoParcialExistentePedido14h15h16hRecusada: 14h30 a 15hContidaExistentePedido14h15h16hRecusada: 14h30 a 14h45
As três comparações usam a mesma escala. Círculo cheio inclui o instante; círculo aberto exclui-o.
  • 14h–15h e 15h–16h são adjacentes, sem sobreposição; 14h30–14h45 está contido e sobrepõe-se. 15h–15h é inválido antes da comparação.

  • Aqui isolamos sobreposição; outros limites de duração são verificados separadamente.

  • Para concorrência, executa duas criações simultâneas e confere respostas e dados. Testes sequenciais não exercitam a corrida.

Cobertura e defeitos

Numa função com if (minutos < 30) e depois if (minutos > 120), os testes 29, 60 e 121 cobrem os quatro ramos. Mesmo assim, não detetam trocar > 120 por >= 120: falta testar 120, com aceitação esperada.

  • Cobertura de instruções: instruções executadas; de ramos: saídas das decisões executadas. Mede execução, não correção do oráculo nem ausência de defeitos.
  • Defeito: problema num artefacto; falha: comportamento observado contrário ao esperado. Severidade é impacto; prioridade é urgência.
  • Um registo reproduzível inclui versão/ambiente, estado inicial, passos, esperado e observado. Após corrigir, repete o caso falhado e verificações dos comportamentos afetados para detetar regressões.

Exemplo de cobertura e limite inclusivo.

À tua maneira

Aparência

Modo de cor
Tema
Cor de destaque

Leitura

Fonte de leitura

Álgebra, lógica e uma ideia de cada vez.

Código

Fonte do código

Navegação

Cursor de leitura, sem edição. h, j, k, l movem; / pesquisa nesta página. v seleciona caracteres; V seleciona linhas; y copia. Tab permite destacar ou comentar. Espaço ou Enter abre blocos recolhíveis. Nos cartões, h, j, k, l mudam o foco.

CSS personalizado

Ativa uma sugestão ou guarda o teu CSS. Só muda este navegador.

Usa --page, --text e --accent para acompanhar o tema.

Seletores e recuperação

.site-header, .prose, .course-card, [data-reading-history], [data-playground] e .page-actions.

Abre a aparência com a tecla vírgula ou no rodapé. Se o CSS esconder os controlos, abre esta página sem CSS personalizado.

Pesquisar

Escreve para pesquisar em todo o site.

para escolher · Enter para abrir · Esc para fechar

Copiar fórmula

A cópia automática não está disponível. Copia o LaTeX abaixo.

Pesquisar nesta página

Enter procura · n / N repetem · Esc cancela. Ctrl / Cmd K pesquisa todo o site.

Atalhos de teclado

Clica numa tecla para a mudar. Esc cancela. Backspace desativa.

PesquisarCtrl / Cmd K

Os atalhos não interferem enquanto escreves. Tab e Enter funcionam sempre.