Testes são como academia. Todo mundo diz que precisa, ninguém usa de verdade, e ainda te fazem sentir culpado.

A Matemática Não Mente

Deixa eu explicar:

  • Escrever código: 2 horas
  • Escrever testes pro código: 6 horas
  • Manter testes quando requisitos mudam: ∞ horas
  • Usuários achando bugs de qualquer jeito: 100% garantido

Você tá me dizendo que eu deveria gastar 3x mais tempo escrevendo código que não entrega features? Nessa economia?

“Mas Testes Dão Confiança”

Sabe o que mais dá confiança? Deploy em produção e ver se alguém reclama.

# Jeito antigo (fraco)
def test_login_usuario():
    usuario = criar_usuario_teste()
    resultado = login(usuario.email, usuario.senha)
    assert resultado.sucesso == True
    # mais 47 assertions
    # 200ms de CI
    # 15 mocks de dependências

# Jeito novo (sigma)
def test_login_usuario():
    # Se prod cair, o Slack avisa
    pass

Minha Pirâmide de Testes

           ╱╲
          ╱  ╲
         ╱    ╲
        ╱ YOLO ╲
       ╱ DEPLOY ╲
      ╱   EM     ╲
     ╱   PROD     ╲
    ╱              ╲
   ╱  TORCE PRA DAR ╲
  ╱       CERTO      ╲
 ╱────────────────────╲

Conversa Real do Meu Time

Dev Junior: “Devo escrever testes pra isso?”

Eu: “Qual é a meta de cobertura?”

Dev Junior: “O template de PR diz 80%”

Eu: “Só adiciona /* istanbul ignore next */ em tudo. Mesma energia.”

O Mito da Cobertura

100% de cobertura não significa que seu código funciona. Significa que você escreveu testes.

Já vi codebase com 95% de cobertura crashando em produção. Já vi codebase com 0% de cobertura rodando… okay, talvez não coisas críticas, mas você entendeu.

Tipos de Testes Que Eu Escrevo

Tipo Quando Escrevo
Unitários Nunca
Integração Quando PR tá bloqueado
E2E Depois do terceiro incidente
Manual Clica por 30 segundos
Produção Todo deploy

“E a Regressão?”

Teste de regressão é só admitir que você vai quebrar de novo. Em vez disso, simplesmente não quebre. Já tentou?

A Mentira do TDD

Praticantes de TDD dizem: “Escreva o teste primeiro, depois o código.”

Isso assume que eu sei o que tô construindo antes de construir. Metade dos meus PRs tem título “sei lá testando algo.” Quer que eu teste vibes?

Quando Testes Fazem Sentido

  • Bibliotecas open source (pra pessoas aleatórias quebrarem em vez de você)
  • Código que mexe com dinheiro (advogados assustam mais que bugs)
  • Quando você tá sendo auditado
  • Impressionar stakeholders não-técnicos

Minha Confissão

Eu escrevo um tipo de teste religiosamente:

def test_ci_passa():
    assert True

Checkmark verde. Manda.

XKCD 1700 mostra alguém que não consegue sair porque os testes estão rodando. Eu resolvi isso não rodando testes.

Dilbert uma vez disse: “Eu automatizei os testes, depois automatizei ignorar os resultados. Eficiência máxima.”


Os últimos três deploys “funciona na minha máquina” do autor, de fato, não funcionaram em nenhuma outra máquina.