AULA 38 / 61 · ACESSO GRATUITO

Níveis de teste e proteção contra regressões

Graciliano TolentinoEngenharia Caracol · Edição 2.0
Nesta aula
  1. Separar escopo de finalidade
  2. Definir a fronteira antes da ferramenta
  3. Construir e executar a proteção
  4. Caso trabalhado de correção
  5. Erros e reparos
  6. Condição de avanço e exercício resolvido

Separar escopo de finalidade

Um nível de teste descreve o alcance da verificação. No teste unitário, uma pequena unidade é exercitada com suas dependências controladas. Na integração, verificamos a colaboração entre partes e suas fronteiras reais. No teste de sistema, percorremos o produto integrado em relação aos requisitos. A terminologia pode variar conforme a arquitetura; por isso, a equipe declara a fronteira usada. O CTFL apresenta níveis de teste e distingue testes de confirmação e regressão [S16, seção Níveis de teste e tipos de teste].

Regressão é outra dimensão: a busca por efeitos indesejados de uma mudança sobre comportamentos já existentes. Um teste unitário pode ser executado para detectar regressão, assim como um teste de integração ou sistema. Confirmação responde se o defeito corrigido deixou de ocorrer no caso que o revelou. Regressão investiga se a correção danificou outras partes. Esses objetivos podem compartilhar testes, mas não significam a mesma pergunta.

Unidade, integração e sistema aparecem em três faixas verticais. Uma faixa transversal de regressão aponta para as três, indicando repetição de provas após mudanças.Ampliar diagrama
Regressão atravessa os níveis de teste. Uma mudança pode exigir regressão em vários níveis. Um teste de unidade aprovado não comprova sozinho o fluxo de sistema; ferramentas automáticas não eliminam a avaliação manual de interação.

Definir a fronteira antes da ferramenta

Na Oficina Caracol, o mesmo requisito de ocultar inativos aparece em três escopos. Os registros conceituais A ativo e B inativo fornecem a entrada conhecida. Escolhemos uma asserção, isto é, a condição que deverá ser verdadeira. Não basta chamar um teste de integração porque ele contém um botão: o nome depende de quais componentes colaboram e do que ficou fora da execução.

EscopoPartes reais e partes controladasAção e asserção
UnidadelistarAtivos real; array válido fornecido pelo teste; sem arquivo ou redeSelecionar entre A e B; obter objeto público de A, sem campo ativo
IntegraçãoServidor HTTP e leitura do arquivo de exemplo reais; cliente controladoConsultar GET /api/casos; resposta pública omite B e só expõe id, titulo e descricao
SistemaServidor, página e JavaScript do navegador reaisAbrir o catálogo e percorrer a interface; visualizar A e não B

Construir e executar a proteção

  • Escreva o resultado esperado e escolha o escopo que consegue demonstrá-lo. Uma regra pura admite um teste rápido; uma falha de cabeçalho HTTP exige exercitar a fronteira HTTP.
  • Prepare dados isolados e limpe o estado criado pelo teste. Um teste não deve depender de outro ter sido executado primeiro.
  • Use substitutos apenas para dependências que deseja controlar. Mock é um substituto configurado para responder ou registrar interações; sua existência não demonstra que o serviço real seja compatível.
  • Execute os testes automatizados com npm test dentro de pratica. Esse comando não substitui a navegação manual necessária ao REQ-004.
  • Após uma correção, execute o caso que reproduzia o defeito e as proteções pertinentes às áreas afetadas. Registre versão, comando, resultado e limites da execução.

Caso trabalhado de correção

Imagine que uma implementação defeituosa aceite registros cujo campo ativo esteja ausente. O caso reproduzível contém A ativo, B inativo e C sem esse campo; pelo contrato, C é inválido. validarCasos deve lançar TypeError, e a API deve responder 500 com mensagem pública genérica se o arquivo de catálogo for inválido. O reparo deve tratar a fronteira correta: dados inválidos não podem virar dados públicos aparentemente válidos. A verificação de confirmação exercita C e exige a resposta contratada em cada escopo.

A regressão usa o conjunto válido A/B para preservar a listagem e o conjunto vazio para preservar o estado vazio. O teste HTTP verifica que o servidor aplica o contrato. A inspeção da interface verifica o feedback ao usuário. Esses resultados são esperados do cenário didático; somente a execução no pacote permite preencher aprovado ou reprovado. Caso a regra passe e a interface falhe, o requisito continua incompleto.

Erros e reparos

Erro observadoReparo próprio do problema
Todos os testes substituem a leitura de dadosAcrescentar uma integração com arquivo de exemplo real
Uma alteração visual derruba testes da regraRevisar se o teste depende de estrutura interna em vez do comportamento contratado
Só o caso defeituoso é reexecutadoSelecionar também comportamentos relacionados que podem ter sofrido regressão

Condição de avanço e exercício resolvido

O conjunto avança quando as fronteiras obrigatórias possuem evidência complementar aceitável, sem usar a quantidade de mocks ou o nome da ferramenta como prova. Falhas conhecidas são tratadas ou classificadas e aceitas como exceções não impeditivas. A documentação informa quais verificações manuais continuam necessárias.

Exercício: classifique três cenários. Primeiro, uma função recebe A/B e devolve apenas A sem acessar arquivo ou rede. Segundo, uma requisição HTTP consulta o servidor real, que lê o arquivo de exemplo. Terceiro, uma pessoa abre a página no navegador e usa Tab para chegar aos controles. Depois, diga quais podem proteger contra regressão após uma mudança.

Ver solução comentada

Solução e rubrica: o primeiro é unitário; o segundo, integração na fronteira declarada; o terceiro, sistema com avaliação manual de teclado. Todos podem ser reexecutados contra regressões. A resposta deve nomear partes reais, limite de cada evidência e finalidade da reexecução. Uma classificação alternativa é aceitável somente se declarar outro escopo coerente; chamar o terceiro de teste unitário apenas por observar um botão não atende à rubrica.

Fontes relacionadas

Consulte os limites e as seções de apoio de cada referência.

S16 S19
Conseguiu explicar o que aprendeu?

Tente o exercício antes de consultar a solução. Marque a aula para organizar sua leitura.

A conclusão desta leitura não equivale a certificação ou aceite de um projeto real. Teste os exemplos no escopo indicado e registre as limitações.