TDD – Conceito e utilização

Salve, salve, galera,

Hoje vamos falar um pouco sobre TDD, ou desenvolvimento guiado por testes, que vem sendo muito difundido hoje com a adoção das praticas ágeis como o Scrum por exemplo, e que gera também muitas duvidas sobre o que é e como funciona.

O que é TDD ???

O TDD é uma técnica de desenvolvimento ( que visa a qualidade, mas ainda assim é uma técnica de desenvolvimento e não uma técnica de testes unicamente) que inverte a ordem natural das coisas, onde primeiramente o DESENVOLVEDOR (isso mesmo meus amigos, o desenvolvedor escrevendo testes) deve escrever um teste unitário para um método – aqui vale ressaltar que estamos falando em testes a nível de unidade de código, e não testes de interface, usuário, etc – e posteriormente implementamos esse método de modo que o teste passe, antecipando o entendimento do requisito. Observem na imagem abaixo o ciclo do TDD

Ciclo do TDD

Ciclo do TDD

Para ser bem prático podemos descrever  o TDD da seguinte forma (para esclarecer a imagem).

  1. Escrevemos um teste (que não vai passar por não existir implementação, por isso do RED).
  2. Posteriormente implementamos esse método (de forma que ele passe GREEN).
  3. Após isso iremos refatorar esse método, objetivando uma padronização e uma melhoria no código escrito.

Quando ouvimos falar de TDD, pode parecer algo muito complexo de se implementar e difícil de se entender, porém todo o mistério por trás do TDD está em utiliza-lo da melhor forma objetivando uma melhoria nos processos.

O TDD é uma técnica simples de entender, porém, não é tão simples de implementar já que vai contra algumas “culturas” naturais de desenvolvimento onde desenvolvedor (quase nunca) testa as coisas (mesmo que hoje isso seja mais do que necessário ainda não há esse habito).

O TDD tem como finalidade ser um processo curto, de pequenas interações. Devemos escolher pequenos requisitos para implementar o TDD, por que o TDD trata justamente de testes unitários. Blocos grandes geram maior complexidade na escrita dos testes e da implementação, e quanto maior a complexidade, com certeza iremos dividi-lo em vários blocos. Vamos entender como tempo ideal entre 10 e 15 minutos entre o incio da escrita dos testes e a refatoração do código, requisitos maiores que isso, devem ser melhor analisado e caso necessário quebrado em vários outros.

Mas onde estão as vantagens ???

Podemos destacar entre outras vantagens do TDD:

  • Um melhor entendimento dos requisitos, já que primeiramente vamos escrever o teste que irá aceitar ou não a implementação.
  • Um código mais limpo, melhorado , já que temos claramente uma etapa de refatoração.
  • Um melhor desenvolvimento dos métodos, já que escrevemos testes a nível unitário e implementamos também a esse nível.
  • E o principal no meu ver que é a geração de uma base de testes que serão a base fundamental para um processo de Continuous Integration – logo mais teremos um artigo sobre C.I -100% para o código.

E as desvantagens ???

Como nem tudo são flores, temos alguns pontos para considerar na adoção do TDD:

  • Existe uma curva de aprendizado para os desenvolvedores, já que eles escrevem o teste e devem policiar sua execução.
  • É gerada uma base de testes que pode onerar a execução de builds e “deixar o processo mais lento”.
  • A equipe de testes e desenvolvimento deve estar alinhada para que não haja sobreposição de testes.

Bom galera a ideia desse post era essa , mostrar de forma clara o que é o TDD, para que serve, vantagens e possiveis desvantagens. Mas alguém pode levantar a dúvida: “Como eu aplico na prática ???”, logo mais farei um post sobre como aplicar TDD com Visual Studio.

Até mais galera.

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 )

Foto do Google+

Você está comentando utilizando sua conta Google+. 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 )

w

Conectando a %s