Módulo 15 - Testes automatizados
Por que testar o código
10 min de leitura · por Cesar Gargiulo, revisado pela equipe ValorFinal e GuardiaSec · Atualizado em 01/07/2026
O que você vai aprender
- Perceber o custo de testar o programa manualmente a cada mudança.
- Entender que teste automatizado guarda uma verificação e a repete de graça.
- Ver como testes dão confiança para refatorar e ampliar o código.
- Reconhecer o que vale automatizar e o que é exagero.
Ouvir o resumo desta aula
Um recap de cerca de 2 minutos na voz do Valim, para ouvir no trânsito ou na academia.
Ler a transcrição do resumo
Resumo da aula: Por que testar o código.
Os objetivos desta aula. Perceber o custo de testar o programa manualmente a cada mudança. Entender que teste automatizado guarda uma verificação e a repete de graça. Ver como testes dão confiança para refatorar e ampliar o código. Reconhecer o que vale automatizar e o que é exagero.
Veja o essencial, parte por parte.
O custo de testar na mão. Testar na mão funciona uma vez, mas você refaz o trabalho a cada mudança.
A confiança para mudar o código. Cálculos e regras de negócio: entra X, tem que sair Y.
Fixando a ideia. Antes de seguir para o comando que sustenta todos os testes, vale fechar o raciocínio desta aula.
Esse foi o resumo do essencial. Para se aprofundar, leia a aula completa e responda os exercícios.
O custo de testar na mão
Imagine uma função que calcula o preço com desconto de um produto. Você a escreve, roda o programa, digita alguns valores e confere na tela se o resultado bate. Deu certo. No dia seguinte você muda um detalhe do cálculo, para tratar um novo caso. E agora? Você digita os mesmos valores de novo, um por um, e confere tudo outra vez na mão. Mudou mais uma coisa? Repete tudo mais uma vez. Cada mudança cobra o preço de refazer toda a conferência manual, e é justamente aí que a preguiça vence: você acaba conferindo só o caso que mexeu e torce para o resto continuar de pé.
Esse é o custo escondido de testar na mão. Não é o primeiro teste que pesa, é a repetição. Um programa de verdade tem dezenas de comportamentos, e conferir todos a cada alteração é inviável. O resultado é conhecido: o programador muda uma parte, quebra outra sem perceber, e o erro só aparece depois, quando alguém usa. Quanto mais tarde o erro aparece, mais caro ele fica para achar e corrigir.
Testar na mão
- Você digita as entradas toda vez
- Confere o resultado com os olhos
- Fica caro repetir, então você pula
- O erro antigo passa despercebido
Testar automatizado
- As entradas ficam escritas no teste
- O computador compara o resultado
- Repetir custa um segundo, então roda sempre
- Uma regressão acende o alerta na hora
A confiança para mudar o código
O ganho mais importante dos testes não é caçar erros, é a liberdade que eles dão. Quando um conjunto de testes cobre o seu código, você pode reescrever uma função para deixá-la mais clara, mudar um cálculo, reorganizar um módulo inteiro, e então rodar os testes. Se todos passarem, você tem uma garantia forte de que não quebrou nada do que estava coberto. Sem testes, cada mudança é uma aposta; com testes, vira uma verificação. Não é à toa que refatorar, que você viu no primeiro módulo, anda de mãos dadas com testar.
Nem tudo precisa de teste, e exagerar também tem custo. Um script que você roda uma vez para renomear arquivos e joga fora talvez não valha o esforço. Já uma função de cálculo, uma regra que decide algo importante ou um trecho que vários lugares usam, esses merecem testes, porque vão ser mudados muitas vezes ao longo da vida do programa. A pergunta prática é: se isto quebrar sem eu perceber, dói? Se a resposta for sim, escreva um teste. O curso segue nessa direção nas próximas aulas, do comando mais simples até uma suíte de testes organizada.
Há ainda um efeito colateral bom. Código difícil de testar costuma ser código mal organizado. Quando uma função faz coisas demais, mistura cálculo com leitura de tela e depende de mil detalhes externos, escrever um teste para ela vira um sofrimento. Isso é um sinal. Ao tentar testar, você é empurrado a separar responsabilidades, a fazer funções que recebem valores e devolvem resultados, exatamente o jeito pythônico que o curso vem defendendo. Testar melhora o desenho do programa, não só a sua segurança.
Teste rápido
Qual é o maior benefício de ter testes automatizados?
Fixando a ideia
Antes de seguir para o comando que sustenta todos os testes, vale fechar o raciocínio desta aula. Testar na mão não é errado, é apenas caro de repetir, e a repetição é o que quebra programas com o tempo. Automatizar um teste é escrever, uma vez, o mesmo que você faria com os olhos: dar uma entrada conhecida e conferir a saída. A diferença é que essa conferência passa a rodar em um segundo, sempre, sem depender da sua paciência.
Teste rápido
Por que testar manualmente vira um problema em um programa que cresce?
Perguntas frequentes
- Testar não é perda de tempo, já que o código já funciona?
- O código funciona hoje, na sua mão. Amanhã você ou outra pessoa vai mudá-lo, e é aí que ele quebra sem aviso. O teste guarda a conferência que você faria de qualquer jeito e a repete de graça a cada mudança, então costuma economizar muito mais tempo do que custa.
- Preciso testar cada linha do meu programa?
- Não. Concentre-se no que dói se quebrar: cálculos, regras de negócio e funções que muita gente usa ou que você mexe com frequência. Scripts descartáveis e trechos triviais geralmente não valem o esforço. A pergunta é sempre: se isto falhar sem eu ver, tem consequência?
- O que é uma regressão?
- É quando uma mudança nova quebra algo que já funcionava antes. Sem testes, regressões costumam aparecer só na frente do usuário. Com testes, elas aparecem na hora, porque um teste que passava antes começa a falhar assim que o comportamento antigo se perde.
- Testes garantem que meu código não tem nenhum bug?
- Não garantem ausência de bugs, garantem que os casos que você escreveu continuam funcionando. Um teste só cobre o que você pensou em testar. Ainda assim, uma boa suíte reduz muito os erros e, principalmente, evita que os antigos voltem.
- Escrever testes deixa o desenvolvimento mais lento?
- No começo de um trecho, custa alguns minutos a mais. No total do projeto, quase sempre acelera, porque você para de gastar horas caçando erros que voltaram e ganha coragem para melhorar o código. Menos tempo apagando incêndio compensa o tempo de escrever o teste.
- Por onde começo se nunca escrevi um teste?
- Pela próxima aula. Ela mostra o comando assert, que é a base de todo teste: você afirma uma condição que deve ser verdadeira e o Python reclama se não for. A partir daí o módulo apresenta o unittest e o pytest, que organizam esses testes em conjuntos.
Fontes
Seu progresso fica salvo neste aparelho. Assinantes sincronizam entre os aparelhos.