O caos!
Já abordamos em alguns tópicos algumas dicas para fugir desse tormento que persegue um grande número de desenvolvedores espalhados pelo mundo. Mas em tempos de crise econômica e “apagão técnico”, somos expostos à diversas situações em que a sanidade vira uma vaga lembrança.
Test first
Metodologias ágeis como o Scrum e o XP adotam a técnica “Test First”:
- Primeiro escreva um teste que falhe
- Depois escreva um código que faça o teste passar
- Melhore o código escrito
Além da garantia de que sua aplicação irá funcionar após uma atualização ou bugfix, devemos levar em conta que estamos indo além do simples ato de testar. É nisso que muita gente se confunde quando fala-se em Test-Driven Development: Não trata-se apenas de testes, trata-se de design!
Os testes passam a ser a sua especificação, passam a ser a forma de você medir se o seu software está sendo conduzido para o real objetivo ou não. Literalmente, os testes guiam o seu desenvolvimento – mas isso não garante que a solução como um todo esteja funcional, por isso é necessário uma pitada de bom senso (como em tudo na vida).
Quando você menos espera, a construção dos testes automatizados passou de “testes” para “desenvolvimento”. Ou seja, esse método irá fazer parte do processo de construção de código e você começará a medir qualquer estimativa referente a codificação com os testes inclusos, naturalmente.
A Web está repleta de artigos sobre como construir estes testes, como executá-los, etc. Então, não vou ficar repetindo o que já foi “dito” e vou deixar referências de pessoas mais “conhecidas” do assunto:
- Vinicius Quaiato: TDD – Test Driven Development – http://viniciusquaiato.com/blog/index.php/tdd-test-driven-development-c/
- Coding Dojo Floripa: Tudo sobre TDD – http://dojofloripa.wordpress.com/2007/09/10/tudo-sobre-tdd/
- Improve It: Desenvolvimento Orientado a Testes – http://improveit.com.br/xp/praticas/tdd
- Agile Testing: Articles and Tutorials – http://agilistas.org/articles/
- Python Brasil: Test Driven Development – http://www.python.org.br/wiki/TestDrivenDevelopment
- Django Testing.com – http://djangotesting.com/
Automatizar = Agilidade?
Mas porque TDD ajuda tanto? Será que vale a pena praticar?
Quando comecei a programar orientado a objetos, tinha em mente que aquilo era só curiosidade, que no modo estruturado estava muito bom e não via a real utilidade daquilo tudo. Claro, isso até ser completamente envolvido por O.O., e quando me dei conta não sabia mais viver sem ele.
Ainda não posso dizer o mesmo de TDD, mas algumas fontes na Web afirmam que não têm prazer em desenvolver sem os testes automatizados (caso do @andrewsmedina). Passou a ser uma necessidade… e digo a razão: A taxa de acerto é alta, a ocorrência de erros diminui, e você volta a ter “dignidade” e a valorizar suas produções.
Mesmo que você perca tempo não previsto no desenvolvimento, poupa tempo (espero eu que) previsto nos testes. No começo a performance do desenvolvedor cai significativamente… mas com o tempo irá tornar-se uma prática para dar maior segurança em relação a qualidade do seu software, e também dar maior segurança a você.






















8:48 em 9 de novembro de 2009
TDD: Desenvolvimento Orientado a Testes | Profissionais TI…
Já abordamos em alguns tópicos algumas dicas para fugir desse tormento que persegue um grande número de desenvolvedores espalhados pelo mundo. Mas em tempos de crise econômica e Êpagão técnico%D, somos expostos à diversas situações em que a s…
19:29 em 9 de novembro de 2009
Oi Klaus, só discordo em um ponto:
“No começo a performance do desenvolvedor cai significativamente…”
Na verdade eu não percebi essa queda. Afinal enquanto estamos desenvolvendo é comum perdermos vários minutos em debug, ao menos é assim aqui na empresa, e o debug demora muito, afinal nossas aplicações consomem diversos webservices e aplicações remoting.
O tempo gasto escrevendo testes é o tempo gasto com debug, porém o debug garante que algo funcionou uma vez, em um cenários específico. O testes são “eternos” e garantirão o funcionamento após futuras alterações e diferentes cenários.
Bom artigo!
22:15 em 9 de novembro de 2009
Social comments and analytics for this post…
This post was mentioned on Twitter by profissionaisti: TDD: Desenvolvimento Orientado a Testes – http://uiop.me/t9H – Por @kplaube – #tdd #testes #software…
11:30 em 11 de janeiro de 2010
@Vinicius
Desculpe a demora pelo feedback! Você tem razão, também percebo dessa forma… mas é interessante expor isso como uma perda, de qualquer forma, pois é isso que os teus superiores (que não entendem esses novos métodos de fazer software) vão achar.
11:39 em 27 de janeiro de 2011
[...] Esse post foi originalmente escrito para o Profissionais TI, você pode conferi-lo na íntegra aqui. [...]
10:59 em 16 de fevereiro de 2011
[...] é demonstrar que algumas práticas de engenharia (como um bom design de domínio, refactoring e TDD) são peças fundamentais para que possamos colher os benefícios das metodologias ágeis. Vamos [...]
14:34 em 20 de fevereiro de 2011
[...] é demonstrar que algumas práticas de engenharia (como um bom design de domínio, refactoring e TDD) são peças fundamentais para que possamos colher os benefícios das metodologias ágeis. Vamos [...]
18:10 em 11 de março de 2011
[...] o Selenium IDE por ser uma ferramenta gráfica integrada com o Firefox. Além de automatizar os testes de sistema a ferramenta também simplifica os testes de regressão, já que a qualquer momento pode-se [...]