Testes e rastreamento no pseudocódigo essencial: casos, tabelas e simulação manual

Capítulo 13

Tempo estimado de leitura: 8 minutos

+ Exercício

Por que testar e rastrear antes de codificar

Antes de transformar um algoritmo em código, é possível (e recomendável) validar se a lógica está correta usando testes e rastreamento. Isso reduz retrabalho, porque você encontra erros de regra de negócio, de condição e de laço quando ainda é barato corrigir. A validação prévia tem três pilares: (1) construir casos de teste com entradas e saídas esperadas, (2) executar uma simulação manual passo a passo, e (3) registrar a execução em uma tabela de rastreamento para enxergar como as variáveis mudam ao longo do tempo.

Construção de casos de teste: normais, limites e inválidos

O que é um caso de teste

Um caso de teste é um par (ou conjunto) de entradas com uma saída esperada. Ele deve ser específico o suficiente para que duas pessoas diferentes cheguem ao mesmo resultado esperado ao ler o enunciado do problema.

Três categorias que você deve sempre cobrir

  • Normais: valores típicos, dentro do uso esperado.
  • Limites: valores nas bordas das regras (mínimo, máximo, transições de faixa, zero, um elemento, etc.).
  • Inválidos: entradas fora do domínio (negativo quando não pode, formato incorreto, lista vazia quando não permitido). Mesmo que o algoritmo “não aceite”, o teste serve para confirmar que a resposta é uma mensagem/ação de erro coerente.

Checklist para desenhar bons testes

  • Liste as regras do problema em frases curtas (ex.: “se média >= 7, aprovado”).
  • Para cada regra, crie ao menos um teste que a acione.
  • Para cada fronteira, crie testes imediatamente abaixo, exatamente na fronteira e imediatamente acima (ex.: 6,9; 7,0; 7,1).
  • Inclua pelo menos um teste inválido por tipo de invalidez (ex.: negativo, acima do máximo, vazio).
  • Escreva a saída esperada como você gostaria de ver no resultado final (valor, texto, estrutura).

Exemplo 1: validar um algoritmo de desconto com tabela de casos

Enunciado (para testes)

Calcular o valor final de uma compra. Regras: se o valor da compra for maior ou igual a 200, aplicar 10% de desconto; caso contrário, não há desconto. Entrada: valorCompra. Saída: valorFinal. Entrada inválida: valor menor ou igual a zero.

Tabela de casos de teste

IDTipoEntrada (valorCompra)Saída esperadaObservação
T1Normal350315Aplica 10%
T2Normal120120Sem desconto
T3Limite200180Fronteira do desconto
T4Limite199.99199.99Logo abaixo da fronteira
T5Inválido0ERRO: valor inválidoNão aceita zero
T6Inválido-10ERRO: valor inválidoNão aceita negativo

Simulação manual (passo a passo) para um caso

Use a simulação manual para confirmar que o pseudocódigo, ao ser executado “na cabeça”, produz a saída esperada. Exemplo com T3 (valorCompra = 200):

  • Entrada: valorCompra = 200
  • Validação: 200 > 0, então continua
  • Regra do desconto: 200 >= 200, então desconto = 10%
  • valorFinal = 200 - (200 * 0,10) = 180
  • Saída: 180

Tabelas de rastreamento: enxergando variáveis por iteração

O que é uma tabela de rastreamento

Uma tabela de rastreamento (trace table) registra, linha a linha, o estado das variáveis relevantes durante a execução. Ela é especialmente útil em laços e em condicionais aninhadas, onde erros de atualização e de condição são comuns.

Continue em nosso aplicativo e ...
  • Ouça o áudio com a tela desligada
  • Ganhe Certificado após a conclusão
  • + de 5000 cursos para você explorar!
ou continue lendo abaixo...
Download App

Baixar o aplicativo

Como montar (modelo prático)

  • Defina quais variáveis acompanhar (as que mudam e as que controlam decisões).
  • Crie uma coluna para o “passo” ou “iteração”.
  • Inclua uma coluna para a condição do laço/decisão (verdadeiro/falso) quando isso ajudar.
  • Preencha a tabela na ordem em que o algoritmo executa, anotando mudanças após cada comando relevante.

Exemplo 2: laço com soma e rastreamento completo

Pseudocódigo a validar

Objetivo: somar números de 1 até N (inclusive). Entrada: N. Saída: soma. Entrada inválida: N < 1.

ALGORITMO SomaDe1AteN    LEIA N    SE N < 1 ENTAO        ESCREVA "ERRO: N deve ser >= 1"        RETORNE    FIM SE    soma <- 0    i <- 1    ENQUANTO i <= N FACA        soma <- soma + i        i <- i + 1    FIM ENQUANTO    ESCREVA somaFIM ALGORITMO

Casos de teste sugeridos

IDTipoEntrada (N)Saída esperada
S1Normal515
S2Limite11
S3Limite23
S4Inválido0ERRO: N deve ser >= 1

Tabela de rastreamento (simulação manual para N = 5)

Preencha considerando que a condição do laço é verificada antes de entrar em cada iteração.

Iteraçãoi (antes)Condição i <= Nsoma (antes)Açãosoma (depois)i (depois)
011 <= 5 (V)0soma <- soma + i12
122 <= 5 (V)1soma <- soma + i33
233 <= 5 (V)3soma <- soma + i64
344 <= 5 (V)6soma <- soma + i105
455 <= 5 (V)10soma <- soma + i156
566 <= 5 (F)15sai do laço156

Rastreamento em condicionais: cobrindo caminhos de decisão

Ideia central

Em condicionais, o rastreamento ajuda a confirmar qual ramo foi executado e com quais valores. Em vez de “variáveis por iteração”, você registra “variáveis por decisão”: condição avaliada, resultado (V/F), ramo escolhido e valores calculados.

Mini-modelo de rastreamento para decisão

PassoExpressãoResultadoRamoVariáveis afetadas
1valorCompra <= 0Fcontinua-
2valorCompra >= 200Vaplica descontovalorFinal

Atividades práticas (com roteiro): encontrar falhas, corrigir e revalidar

Atividade 1 — Erro de fronteira (limite) em desconto

Objetivo: identificar um erro lógico que só aparece no caso limite e corrigir.

Pseudocódigo com falha:

ALGORITMO DescontoCompra    LEIA valorCompra    SE valorCompra <= 0 ENTAO        ESCREVA "ERRO: valor inválido"        RETORNE    FIM SE    SE valorCompra > 200 ENTAO        valorFinal <- valorCompra * 0.90    SENAO        valorFinal <- valorCompra    FIM SE    ESCREVA valorFinalFIM ALGORITMO

Roteiro:

  • 1) Use os testes T1 a T6 da tabela do exemplo de desconto.
  • 2) Simule manualmente T3 (valorCompra = 200) e compare com a saída esperada (180).
  • 3) Identifique a causa: a condição usa > 200 em vez de >= 200.
  • 4) Corrija o pseudocódigo alterando a condição.
  • 5) Revalide executando novamente T1, T2, T3 e T4 (os inválidos devem continuar gerando erro).

Correção esperada (trecho):

SE valorCompra >= 200 ENTAO

Atividade 2 — Erro de atualização em laço (soma)

Objetivo: usar tabela de rastreamento para detectar laço infinito ou soma incorreta.

Pseudocódigo com falha:

ALGORITMO SomaDe1AteN_Falha    LEIA N    SE N < 1 ENTAO        ESCREVA "ERRO: N deve ser >= 1"        RETORNE    FIM SE    soma <- 0    i <- 1    ENQUANTO i <= N FACA        soma <- soma + i        i <- i - 1    FIM ENQUANTO    ESCREVA somaFIM ALGORITMO

Roteiro:

  • 1) Escolha o teste S2 (N = 1) e inicie uma tabela de rastreamento com colunas: iteração, i, condição, soma.
  • 2) Simule 3 passos. Observe que i diminui e a condição i <= N permanece verdadeira indefinidamente (tende a laço infinito).
  • 3) Identifique a linha causadora: i <- i - 1.
  • 4) Corrija para i <- i + 1.
  • 5) Revalide com S1 (N = 5) e confirme pela tabela de rastreamento que a soma chega a 15 e o laço termina quando i = 6.

Atividade 3 — Falha em regra de inválido (aceitando entrada proibida)

Objetivo: garantir que testes inválidos realmente bloqueiam a execução.

Cenário: você tem um algoritmo que calcula a média de duas notas (0 a 10) e deveria rejeitar qualquer nota fora do intervalo.

Pseudocódigo com falha:

ALGORITMO MediaDuasNotas_Falha    LEIA n1    LEIA n2    SE n1 < 0 E n1 > 10 ENTAO        ESCREVA "ERRO: n1 inválida"        RETORNE    FIM SE    SE n2 < 0 E n2 > 10 ENTAO        ESCREVA "ERRO: n2 inválida"        RETORNE    FIM SE    media <- (n1 + n2) / 2    ESCREVA mediaFIM ALGORITMO

Roteiro:

  • 1) Crie uma tabela de testes com pelo menos: (5, 7) normal; (0, 10) limite; (-1, 7) inválido; (11, 7) inválido; (7, 12) inválido.
  • 2) Simule manualmente o caso (-1, 7). Observe que a condição n1 < 0 E n1 > 10 nunca será verdadeira (um número não pode ser menor que 0 e maior que 10 ao mesmo tempo).
  • 3) Corrija a lógica trocando E por OU nas validações.
  • 4) Revalide com os mesmos testes inválidos e confirme que agora são rejeitados.

Correção esperada (trechos):

SE n1 < 0 OU n1 > 10 ENTAO ...SE n2 < 0 OU n2 > 10 ENTAO ...

Como documentar resultados: matriz de testes + evidência de rastreamento

Matriz de testes (modelo enxuto)

Ao validar um algoritmo, mantenha uma matriz simples para registrar o que foi testado e o que aconteceu. Isso ajuda a revalidar após correções sem “inventar” novos resultados.

IDEntradaEsperadoObtido (simulação)StatusObservação
T3valorCompra=200180200FALHACondição deveria ser >= 200
T3valorCompra=200180180OKApós correção

Evidência de rastreamento (o que guardar)

  • Uma tabela de rastreamento para pelo menos um caso normal e um caso limite em algoritmos com laço.
  • Um registro de qual ramo foi executado em condicionais críticas (principalmente fronteiras).
  • O conjunto de testes usado antes e depois da correção (para provar revalidação).

Agora responda o exercício sobre o conteúdo:

Ao corrigir um erro que só aparece no caso limite (por exemplo, a regra de desconto na fronteira), qual prática ajuda a confirmar que a correção resolveu o problema sem criar novos erros?

Você acertou! Parabéns, agora siga para a próxima página

Você errou! Tente novamente.

A revalidação usa os mesmos testes (incluindo limites) para comparar o resultado esperado com o obtido após a correção, reduzindo o risco de manter a falha ou introduzir outra.

Próximo capitúlo

Erros comuns em pseudocódigo essencial: padrões de confusão e como corrigir

Arrow Right Icon
Capa do Ebook gratuito Pseudocódigo Essencial: Um Padrão Simples para Descrever Soluções
87%

Pseudocódigo Essencial: Um Padrão Simples para Descrever Soluções

Novo curso

15 páginas

Baixe o app para ganhar Certificação grátis e ouvir os cursos em background, mesmo com a tela desligada.