BT

Estudos Empíricos Mostram Que Test Driven Development Melhora Qualidade

por Chris Sims , traduzido por Ricardo Yasuda em 09 Mar 2009 |

Um artigo publicado inicialmente no jornal Empirical Software Engineering afirma: "TDD parece ser aplicável em vários domínios e pode reduzir significantemente a densidade de defeitos de software desenvolvido sem reduzir significantemente a produtividade do time de desenvolvimento." O estudo comparou 4 projetos, na Microsoft e na IBM, que usaram TDD com projetos similares que não usaram TDD.

O artigo é de autoria de Nachiappan Nagappan (Microsoft), E. Michael Maximilien (IBM), Thirumalesh Bhat (Microsoft), e Laurie Williams (North Carolina State University), e publicado no Volume 13, Número 3 do jornal Empirical Software Engineering. Ele está também disponível no Grupo de Engenharia de Software Empírica da Microsoft Research.

O artigo inclui 1 estudo de caso na IBM e 3 na Microsoft. Cada um dos estudos de caso compara dois times trabalhando no mesmo produto, usando as mesmas linguagens de desenvolvimento e tecnologias, reportando ao mesmo gerente, e apenas um deles estava usando test-driven development (TDD). Nenhum dos times sabia que eles fariam parte do estudo durante o seu ciclo de desenvolvimento. O caso de estudo da IBM acompanhou times trabalhando em drivers de dispositivo. Os casos da Microsoft acompanharam times trabalhando em Windows, MSN e Visual Studio.

O artigo descreve as práticas de TDD usadas pelos times como fluxos de trabalho minuto-a-minuto, bem como fluxos de trabalho em nível de tarefas.

Fluxo de trabalho minuto-a-minuto

  • Escreva um número pequeno de testes novos
  • Rode os testes e veja-os falharem
  • Implemente código para satisfazer os testes
  • Rode novamente os novos casos de teste para ter certeza que eles passam

Fluxo de trabalho em nível de tarefa

  • Integre código novo e testes dentro do código existente
  • Rode novamente todos os casos de teste para ter certeza que o novo código não quebra alguma coisa
  • Refatore a implementação e/ou código de teste
  • Rode novamente todos os testes para ter certeza que o código refatorado não quebra alguma coisa

A densidade de defeito pré-lançamento dos quatro produtos, medida como defeitos por milhares de linhas de código, diminuiu entre 40% e 90% em relação aos projetos que não usaram TDD. As gerências dos times reportaram subjetivamente um aumento de 15-35% no tempo inicial de desenvolvimento para os times usando TDD, apesar de que os times concordaram que esse tempo foi compensado pela redução de custos de manutenção.

Estes resultados podem ser comparados com aqueles encontrados em um artigo publicado em 2006 por Maria Siniaalto. Esse artigo tentou resumir e resenhar os resultados de outros 13 estudos em test-driven development, incluindo pesquisa conduzida em contextos industrial, semiindustrial e acadêmico. Entre as conclusões do artigo, o a autora escreveu:

Baseado nas descobertas dos estudos existentes, pode-se concluir que TDD parece melhorar a qualidade de software, especialmente quando empregado em um contexto industrial. As descobertas não foram tão óbvias nos contextos semiindustrial ou acadêmico, mas nenhum desses estudos reportou queda na qualidade. Os efeitos na produtividade do TDD não foram muito óbvios, e os resultados variam independentemente do contexto do estudo. Porém, houve indícios de que TDD não necessariamente diminui a produtividade do desenvolvedor ou aumenta o tempo de desenvolvimento do projeto: Em alguns casos, melhorias significantes de produtividade foram alcançadas com TDD enquanto que apenas dois dos treze estudos reportaram queda de produtividade. Porém, em ambos estudos a qualidade foi melhorada.

Quais são as suas experiências com TDD? Você notou um aumento na qualidade? Que efeitos você viu na produtividade do desenvolvedor, e tempo de desenvolvimento? Deixe um comentário e compartilhe suas experiências.

Olá visitante

Você precisa cadastrar-se no InfoQ Brasil ou para enviar comentários. Há muitas vantagens em se cadastrar.

Obtenha o máximo da experiência do InfoQ Brasil.

Dê sua opinião

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber menssagens dessa discussão

TDD é sinônimo de qualidade!! by Paulo R. A. Sales

Olá a todos,

Eu participei de um projeto que foi dividido em duas partes, a parte de domínio de negócio e a parte de integração (comunicação entre o sistema e uma rede de cartões de crédito através do protocolo ISO 8583). A parte de domínio de negócio foi desenvolvida inteiramente utilizando TDD e a parte de integração foi desenvolvida da forma normal.

No momento que fomos testar pela 1a. vez o funcionamento do sistema como um todo foi perfeita a percepção que a parte desenvolvida usando TDD não apresentou erro algum, mas a parte desenvolvida sem TDD apresentou um alto nível de erros.

Após este projeto não deixo nunca de pensar que TDD é sinônimo de qualidade.

Abraços.
Paulo R. A. Sales.

Re: TDD é sinônimo de qualidade!! by Felipe Rodrigues

Não só de qualidade, mas também de bom design. Simples e útil.

Aliás, essa é uma das principais vantagens do TDD na minha opinião, garantir um design exuto e simples.

Felipe Rodrigues

Re: TDD é sinônimo de qualidade!! by Helder Guilherme

Design simples, testes como documentação compilável e executável, refactor constante.

TDD leva as pessoas não terem medo de mudanças. No início odiamos, e logo em seguida nos apaixonamos.

Helder Guilherme

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber menssagens dessa discussão

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber menssagens dessa discussão

3 Dê sua opinião

Conteúdo educacional

Feedback geral
Bugs
Publicidade
Editorial
InfoQ Brasil e todo o seu conteúdo: todos os direitos reservados. © 2006-2013 C4Media Inc.
Política de privacidade
BT