TDD – Test-driven development

Programação Orientada a testes, ou TDD (Test-driven development) é uma técnica de Engenharia de software para o desenvolvimento de software, que consiste basicamente em detectar as falhas e corrigi-las durante o desenvolvimento do software. Segundo Ivan Sanches no TDD você vai evoluindo seu código aos poucos, conforme vai explorando o problema com o uso de testes automatizados escritos antes da solução sequer existir.

Podemos citar as seguintes vantagens no uso do TDD:

  1. Processo de desenvolvimento simples e incremental;
  2. Código Automaticamente Testável;
  3. Testes Constantes;
  4. Melhor compreensão dos requisitos;
  5. Evita centralização dos requisitos;
  6. Aumento da cobertura de teste;
  7. Ajuda na documentação;
  8. Facilita Refactorings;
  9. Aumenta a confiança no código, por ser testado inúmeras vezes.

Podemos citar também como limitações do uso do TDD:

  1. Mudança da cultura da Empresa;
  2. Testes não é sinônimo de que não haverá erros;
  3. Falta de Documentação por ser uma metodologia ágil;
  4. Limitação de tempo e financeira, já que se gasta, mais tempo logo mais investimentos com o o uso da técnica;

O ciclo do TDD é consistido em:

Figura 01 – Ciclo TDD
  1. Escreva um teste, nesse momento é necessário pensar no que o código precisa fazer e faça os testes necessários, pense em todos os erros possíveis que pode ocorrer;
  2. Faça esse teste passar, faça com o que o teste passe não importando a maneira, contando que ele passe;
  3. Refatore, agora é a hora de “arrumar” o código, tire dele todas as duplicações, variáveis inúteis, etc.

Importante.: Os passos acima são repetidos até que não se consiga pensar em outros testes para ser feito.

Atualmente existem diversas ferramentas que possibilitam o uso de TDD, como por exemplo:

  • cppUnit;
  • csUnit (.Net);
  • CUnit;
  • DUnit (Delphi);
  • DBFit;
  • DBUnit;
  • HTMLUnit;
  • HTTPUnit;
  • JMock;
  • JUnit;
  • NDbUnit;
  • NUnit;
  • OUnit;
  • PHPUnit;
  • PyUnit (Python);
  • SimpleTest;
  • TestNG;
  • Test::Unit (Ruby);
  • VBUnit;
  • XTUnit;

Para o próximo post vou mostrar como fazer um aplicação utilizando TDD e JUnit e falar um pouco sobre Mock, usando a ferrameta da Google: Mockito. Também estamos preparando para vocês, uma série de artigos sobre JavaFX 2.0 fiquem sempre atentos ao blog. Até a próxima.

[http://dojofloripa.wordpress.com/2006/11/07/introducao-ao-desenvolvimento-orientado-a-testes/]
[http://improveit.com.br/xp/praticas/tdd]
[Bruno Amarante Couto Rezende – Utilização de TDD em Projetos de Software 2011 (http://pt.scribd.com/doc/71996214/14/VANTAGENS-DO-TDD#outer_page_18)%5D

[http://dojofloripa.wordpress.com/2007/09/10/tudo-sobre-tdd/]
[http://dojofloripa.wordpress.com/2006/11/28/confusoes-sobre-tdd/]
[http://imasters.com.br/artigo/20870/agile/mantenha-a-mente-aberta-tdd-nem-sempre-e-o-melhor]
[http://imasters.com.br/artigo/17557/desenvolvimento/disputa-tdd-mozart-x-beethoven]
[http://pedrobezerra.wordpress.com/2011/07/12/agile-algumas-vantagens-do-tdd/]
[http://imasters.com.br/artigo/21814/desenvolvimento/cuidado-mocks-podem-comprometer-a-legibilidade-dos-testes]
[http://blog.fasagri.com.br/]

Anúncios

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s