Fechar

TDD: Desenvolvimento Orientado a Testes

Por | 6 de novembro de 2009 | Desenvolvimento, Metodologias, Qualidade 8 comentários

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:

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ê.

Marcadores: , ,

Outros conteúdos interessantes

Confira os 8 comentários deixados Comentar

  1. Jackson via Rec6
    8:48 em 9 de novembro de 2009
    1

    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…

  2. Vinicius Quaiato
    19:29 em 9 de novembro de 2009
    2

    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!

  3. uberVU – social comments
    22:15 em 9 de novembro de 2009
    3

    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…

  4. Klaus Peter Laube
    11:30 em 11 de janeiro de 2010
    4

    @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.

  5. TDD: Desenvolvimento Orientado a Testes | Klaus Laube
    11:39 em 27 de janeiro de 2011
    5

    [...] Esse post foi originalmente escrito para o Profissionais TI, você pode conferi-lo na íntegra aqui. [...]

  6. Sem boas práticas de engenharia não há agilidade | Profissionais TI – Pra quem respira informação
    10:59 em 16 de fevereiro de 2011
    6

    [...] é 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 [...]

  7. Sem boas práticas de engenharia não há agilidade « brunoluzsilva
    14:34 em 20 de fevereiro de 2011
    7

    [...] é 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 [...]

  8. Selenium IDE, ferramenta de teste automatizado | Profissionais TI – Pra quem respira informação
    18:10 em 11 de março de 2011
    8

    [...] 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 [...]


Deixe seu comentário!