Testes

TL;DR

Galho de Engenharia sobre como verificar que o software funciona — e continua funcionando após mudanças. Escrever um teste é fácil; desenhar uma estratégia de testes que equilibra confiança, velocidade e custo de manutenção é o que diferencia um senior. Cobre a pirâmide, os tipos de teste, test doubles, TDD, técnicas de design de caso, flaky tests, coverage e CI/CD — tudo stack-agnóstico, linkando Java e JavaScript para o ferramental. Interview-critical.

Sobre este galho

Este galho é a teoria e estratégia de testes: o que testar, qual tipo de teste, e por quê. O ferramental concreto vive nos galhos de stack — aqui ele entra só como ponteiro.

Fronteiras (linka, não duplica): o ferramental concreto por stack — mesmo conceito, ecossistema diferente:

StackOnde moraCobertura
JavaTestes em Java e Java · Testes21 notas — JUnit 5, AssertJ, Mockito, Testcontainers, Spring Boot Test, JQwik, PITest, JMH, Pact
JavaScript/TypeScriptTestes em JavaScript e Testes JS18 notas — Vitest, Jest, Testing Library, MSW, Playwright, fast-check
PythonPython · Testes9 notas — pytest, fixtures, TestClient, Hypothesis
GoGo · Testes8 notas — go test, table-driven, fuzzing nativo

E as fronteiras conceituais que este galho não cobre:

Audiência: dev senior em preparação para entrevista internacional. Cada nota tem seção “Em entrevista” com frases prontas em inglês e vocabulário técnico PT→EN.

Iniciado — o que, por que e o básico de um bom teste

  1. 01 - O que são testes e por que testar — função estratégica, spec executável, as duas faces em entrevista.
  2. 02 - A pirâmide de testes e suas variações — unit/integração/E2E, pirâmide × troféu × ampulheta, qual teste pra qual bug.
  3. 03 - Anatomia de um bom teste — AAA / Given-When-Then, naming, um teste = uma razão, F.I.R.S.T.
  4. 04 - Testes unitários — unidade, isolamento, determinismo, fixtures/factories/object mothers.

Adepto — doubles, integração, TDD, design de caso

  1. 05 - Test doubles - dummy, stub, spy, mock, fake — a taxonomia de Meszaros, mock × stub, estado × interação.
  2. 06 - Testar comportamento, não implementação — state-based × interaction-based, over-mocking, fakes subestimados.
  3. 07 - Testes de integração — colaboração real, Testcontainers, o drift do ambiente.
  4. 08 - TDD - o ciclo Red-Green-Refactor — red → green → refactor; o que TDD força.
  5. 09 - TDD na prática — quando brilha × quando atrapalha; posição pragmática (test-after).
  6. 10 - Técnicas de teste e edge cases — equivalence partitioning, boundary value analysis, decision tables, o checklist de edge cases.
  7. 11 - Testes flaky — causas, mitigações, quarentena, “nunca sleep em teste”.

Magus — coverage, estratégias avançadas, esteira, entrevista

  1. 12 - Coverage e mutation testing — line/branch, 100% ≠ testado, mutation testing como complemento honesto.
  2. 13 - Além do básico - property-based, snapshot, contract, smoke — a long tail de tipos e quando cada um vale.
  3. 14 - Performance, carga, caos e segurança — microbenchmark × load × stress × chaos; SAST/DAST/deps.
  4. 15 - Testes em CI-CD — a esteira, paralelização, fail-fast, quarentena; rapidez como requisito.
  5. 16 - Estratégia de testes em entrevista — desenhar a estratégia, edge cases, inglês, vocabulário, armadilhas.

Rotas alternativas

Entrevista internacional

01 → 02 → 05 → 06 → 08 → 09 → 16. O porquê, a pirâmide, doubles, comportamento×implementação, TDD e o capstone.

Fundamento sólido de unidade

01 → 03 → 04 → 05 → 06. O que é, anatomia, unitários, doubles e a filosofia de testar comportamento.

Confiança e qualidade da suíte

10 → 11 → 12 → 13. Técnicas de caso, flaky, coverage/mutation e as estratégias avançadas.

Todas as notas

TABLE fase, status, updated
FROM "03-Dominios/Engenharia/Testes"
WHERE type = "concept"
SORT file.name ASC

Veja também