Está rolando no grupo de discussões online do grupo de arquitetura uma discussão sobre eficácia do TDD (Test Driven Development). Fiz agora um comentário que acho legal ficar por aqui também.

Há um estudo feito pela NRC Institute for Information Technology sobre a eficácia do TDD, comparando-o com a abordagem convencional:
http://iit-iti.nrc-cnrc.gc.ca/publications/nrc-47445_e.html
Para os sem tempo ou sem paciência, leiam só o abstract. Ele diz o seguinte:

  • A abordagem “teste antes” ou “teste depois” não fez diferença;
  • Os desenvolvedores que escreveram mais testes tiveram melhor qualidade;
  • Desenvolvedores de TDD escrevem mais testes;
  • TDD gerou melhor qualidade.

Ná conclusão do estudo há um parágrafo bem legal:

“Test-First programmers did not achieve better quality on average, although they achieved more consistent quality results. We attribute the latter observation to the influence of skill on quality, which Test-First tended to dampen. Writing more tests improved the minimum quality achievable and decreased the variation, but this effect does not appear to be specific to Test-First.”

Interessante, não é? Na verdade, a conclusão é que não faz a menor diferença se você escreve testes antes ou depois, desde que o faça. Para quem gosta do assunto e tem paciência de ler as 13 páginas do documento, acho que vale a pena.

Sugeri também que a quarta reunião do grupo tenha este assunto na pauta de introdução, onde passamos uma hora e meia discutindo o assunto. Vamos ver se alguém se propõe a falar.

Giovanni Bassi

Arquiteto e desenvolvedor, agilista, escalador, provocador. É fundador e CSA da Lambda3. Programa porque gosta. Acredita que pessoas autogerenciadas funcionam melhor e por acreditar que heterarquia é mais eficiente que hierarquia. Foi reconhecido Microsoft MVP há mais de dez anos, dos mais de vinte que atua no mercado. Já palestrou sobre .NET, Rust, microsserviços, JavaScript, TypeScript, Ruby, Node.js, Frontend e Backend, Agile, etc, no Brasil, e no exterior. Liderou grupos de usuários em assuntos como arquitetura de software, Docker, e .NET.