TDD / Teste Unitários  XML
Índice dos Fóruns » Arquitetura de Sistemas
Autor Mensagem
felipe.regalgo
Debugger

Membro desde: 25/08/2006 13:38:30
Mensagens: 57
Offline

Olá pessoal,

Na verdade, esse post não é uma duvida e sim para compartilhar informação/conhecimento com todos...

comecei a estudar TDD (Test-Driven Development) e testes unitários em geral... E resolvi listar as vantagens que existem em se testar o código...

Até mesmo para poder convencer meu Gerente de Projetos entre outras pessoas que ainda acham que testar gasta tempo e não vale a pena.. de que testes são uteis e aumentam nossa produtividade!!!!

Comecei a fazer uma lista com os itens que achei mais interessantes...

Fatos:
- Durante o desenvolvimento do softwarer gastamos grande parte do tempo consertando erros, do que adicionando novas funcionalidades...

______
Beneficios de criar os testes ANTES de criar as funcionalidades (TDD)...

- Temos certeza que todo o código será testado

- A tendencia é que implementemos apenas o que for necessário para resolver o problema, e não implementaremos varias funcionalidade que não serão usadas... Programar apenas o necessário para resolver o problema!!!

- Como o codigo é usado antes mesmo de ser escrito existe uma alta abstração da sua verdadeira implementação... Portanto mais facil enxergas as interfaces, facilitando seu desacoplamente das demais partes do sistema...

- Teremos rapidamente a oportunidade de usar o metodo e assim já ficar sabendo se o mesmo é simples de ser usado... CODIGO SIMPLES!!!

______
Beneficios de Usar Testes unitários:

- Ter certeza que independente do que foi alterado, o que estava funcionando continuará...

- Maior confiança em adicionar novas funcionalidades

- Maior confiança para REFATORAR o código existente

- Ajuda novos programadores a entenderem o código... pois eles tem varios "exemplos" de utilização dos metodos existentes apenas vendo os testes... E nada melhor para aprender alguma coisa doque vendo o exemplos

- O erro que foi pego uma vez não se repetirá novamente...

- Proteção para que outros programadores não estragem/insiram bug no seu código...

- Outro programadores poderão dar manutenção no seu código sem medo de estragar alguma coisa...

______
Consequencia...

- Aumento na produtividade, pois vc perde menos tempo consertando erros, e sobra mais tempo para introduzir funcionalidades com segurança, e nos certificamos rapidamente de que: "O que estava funcionando continua..."

- o código vira sinonimo de qualidade

_______
Resumindo:

Ao contrario do que possa parecer, TESTES aumentam a velocidade no desenvolvimento!!! tb aumentam a segurança de que o código não conterá erros, e com isso aumenta muito a qualidade do código...


O que vcs acham?? concordam???
seria legal se cada um incrementasse essa lista com suas experiencias e opiniões.... ou até mesmo corrigi-la (caso eu tenha falado alguma besteira... )

Então,
é isso ai

Até mais
rc
Thread.start()
[Avatar]

Membro desde: 15/04/2007 21:34:42
Mensagens: 40
Offline

Felipe, boa compilação dos benefícios do desenvolvimento baseado em testes/testes automatizados.

Uma adição para os benefícios de testes unitários:

  • faz com que o design leve em conta a testabilidade do código, o que como conseqüencia resulta em uma melhor separação de responsabilidades e maior desacoplamento. Isso ajuda a evitar o estilo de design conhecido como "castelo de cartas".


  • Eu acrescentaria que uma condição necessária para a adoção de testes automatizados é que o time inteiro de desenvolvedores 'compre' a idéia. Nada pior que saber que um outro desenvolvedor não roda os testes antes de fazer commit, ou simplesmente faz commits mesmo quando estes quebram os testes, ou pior, comentou alguns testes porque com suas novas alterações tais testes não passavam (!).

    Além disso, eu recomendo que os próprios desenvolvedores sejam responsáveis por escrever e manter o conjunto de testes, ao invés de se ter um time ou desenvolvedor dedicado a escrever testes. É claro, isso é implícito no verdadeiro desenvolvimento baseado em testes.

    Finalmente, recomendo também um sistema integração contínua (como o CruiseControl), no mínimo diária, para tornar evidente quando alguém quebra as regras e faz commit sem garantir que todos os testes passem, e assim ajudar a equipe a se manter 'na linha'.

    Rafael Chaves
    abstratttechnologies
    [WWW]
    sunshine
    JavaChild
    [Avatar]

    Membro desde: 28/09/2004 18:53:15
    Mensagens: 111
    Offline

    acrescentaria o framework http://emma.sourceforge.net/

    pfilipak
    cv
    Moderador
    [Avatar]

    Membro desde: 04/04/2003 00:32:12
    Mensagens: 7842
    Localização: São Paulo, SP
    Offline

    Emma eh uma ferramenta, nao um framework. De qualquer maneira, estou interessado nas suas opinioes sobre code coverage e TDD, sunshine.
    [Email] [WWW] [Yahoo!] [MSN] [ICQ]
     
    Índice dos Fóruns » Arquitetura de Sistemas
    Ir para:   
    Powered by JForum 2.1.8 © JForum Team