Faça do zero
Já pensou que gostaria de fazer o molho de salada da casa no seu restaurante favorito? Se você não tem uma receita, por onde começar? Você provavelmente começaria testando diferentes ingredientes quanto à cor, consistência e sabor, e os juntaria por tentativa e erro até acertar. Você o testa repetidamente para coisas diferentes e, depois de acertar uma coisa, passa para as outras. De muitas maneiras, é isso que o desenvolvimento orientado a testes para aplicativos de software faz.
Test-driven development (TDD) , também conhecido como test-driven design, é um processo de desenvolvimento de software descrito por Kent Beck em seu livro eXtreme Programming publicado em 2000. TDD é um processo iterativo que significa que, ao usar TDD, o software o desenvolvedor escreve e aperfeiçoa cada parte do código, uma após a outra, até que o produto final seja concluído. Vamos dar uma olhada no processo TDD.
Processo
O teste tradicional de software acontece depois que todo o programa é escrito, momento em que o programador volta, linha por linha, para verificar se há bugs ou razões pelas quais ele pode não funcionar. O TDD é um pouco diferente desse processo padrão. Vamos dar uma olhada em como funciona o processo no TDD.
O programador escreve primeiro um teste e, em seguida, escreve apenas o código suficiente para executar o teste. Se o teste falhar, significando que o código não fez o que deveria, o programador faz uma alteração no código. Depois que o código finalmente passa no teste, o programador escreve outro teste e mantém esse processo até que o código passe em todos os testes de especificação. Basicamente, em vez de esperar até o final do processo de desenvolvimento de software para testar o novo software, ou ver se ele funciona, o TDD resolve os problemas continuamente à medida que o software é desenvolvido. Depois que o código passa em todos os testes dos elementos necessários, o programador volta ao código em um processo denominado refatoração para garantir que o software faça o que deve fazer.
Usos, vantagens e desvantagens
O TDD faz parte de um paradigma de design de software que é mais orientado para os negócios. Em outras palavras, é para um ambiente no qual é importante obter algo utilizável o mais cedo possível. É frequentemente usado no processo de desenvolvimento ágil, que é uma estratégia de gerenciamento de projetos que enfatiza a colaboração e o desenvolvimento da equipe.
Algumas das vantagens de usar TDD incluem:
- Capacidade de realizar pequenos passos incrementais
- Problemas fáceis de encontrar e corrigir, o que reduz o tempo de depuração
- Remove a duplicação para que o código seja mais restrito
- Fácil de reutilizar – os testes incrementais podem ser reutilizados para desenvolvimento de software semelhante
- Produz produtos de maior qualidade em menos tempo
Uma grande desvantagem ou limitação do TDD é que os testes iniciais mal projetados podem resultar na criação de um produto que não atende às especificações ou necessidades do cliente.
Resumo da lição
O desenvolvimento dirigido por teste (TDD), ou design dirigido por teste, é um processo iterativo para o desenvolvimento de software. Com o TDD, o programador primeiro cria um teste que atenderá às especificações do cliente e, em seguida, grava código suficiente para realizar o teste. Se o código funcionar, outro teste será criado, mais código será escrito e assim por diante. Se o código não passar no teste, o código será reescrito até passar, então mais testes são criados, mais código escrito e assim por diante. Depois que o software passa em todos os testes de especificação, o código é refatorado para garantir que o produto final atenda às necessidades do cliente.
O TDD foi desenvolvido por Kent Beck e descrito em seu livro eXtreme Programming , publicado em 2000. O TDD pode resultar em um produto de software de maior qualidade produzido em menos tempo porque os problemas (ou bugs) são resolvidos conforme o código é escrito, em vez de esperar até que todo o código esteja terminado e então encontrando os bugs. Embora haja muitas vantagens em usar o TDD para o desenvolvimento de software, deve-se tomar cuidado ao projetar os testes iniciais para que o que é produzido seja o que o usuário final precisa.