IntroducaoTDD e BDD na pratica em apps Java EE, com JUnit, Arquillian, Selenium e Cucumber e o titulo do tutorial que submeti ao evento Agile Brazil 2013. Nesse tutorial, minha proposta e oferecer aos participantes os conceitos fundamentais, numa visao pratica e atraves do uso de excelentes ferramentas, um guia para a construcao de aplicacoes Java EE atraves de praticas que dirigem o desenvolvimento tornando-as testaveis e aceitaveis para o cliente, sob o ponto de vista de negocios. Meu desejo e que, ao termino desse tutorial, qualquer desenvolvedor Java EE ainda nao "infectado por uma metodologia baseada em testes" passe a se-lo. =)Este post apresenta o roteiro do tutorial que cobrirei no tempo esperado para sua realizacao (80 minutos), caso ele seja aprovado. Contudo, ele vai alem pois tambem faz links com outros artigos e materiais disponiveis sobre o assunto na Internet (alguns de autoria propria), apresenta codigo que utilizo para explicar de conceitos que demonstrei ha alguns anos em outros artigos e, por fim, faz uma breve introducao ao Cucumber. Ate o dia do evento, escreverei partes complementares a esse material, tambem na forma de tutoriais e/ou videos, onde explicarei exemplos menos triviais e mais reais que demonstrarao, ainda, o uso integrado de ferramentas como o Arquillian, o Selenium e o Cucumber. Independente da submissao de minha palestra ser aprovada, isso devera ocorrer pois esse material tambem tem importancia fundamental para um trabalho que venho desempenhando num cliente, nesse instante.Um pouco de historiaTDD e uma pratica antiga, aplicada na comunidade que atua com metodologias ageis. Surgiu como uma tecnica de eXtreme Programming (XP) e e um acronimo para Test Driven Development. Particularmente, eu comecei a me envolver com TDD um pouco antes da minha participacao no evento eXtreme Programming Brasil 2002 quando Kent Beck, considerado o criador do XP e pai da ferramenta JUnit, esteve presente. Eu descrevo alguns dos beneficios e como iniciar a pratica do TDD num artigo que escrevi e cujo titulo e "Test-Driven Development (TDD) em Java (Parte 1)". Nessa primeira parte, apresentei TDD com a preocupacao de mostrar os beneficios da tecnica e tambem de mostrar os fundamentos arquiteturais que deram origem ao framework JUnit.Fiquei de escrever mais partes para esse artigo. Porem, nunca cheguei a fazer isso pois nos momentos em que eu precisava explicar mais detalhadamente o JUnit, eu fazia isso explicando diretamente o codigo Java que escrevi como continuacao para o artigo e utilizava os slides sobre JUnit do amigo e parceiro Helder da Rocha, da Argo Navis. Seus slides foram apresentados no evento eXtreme Programming Brasil 2002 e incluenciaram muita gente, inclusive eu. =)Entao, passaram-se onze (11) anos desde que estive presente nesse evento e que conheci pessoas que fizeram, e ainda fazem, grande diferenca neste mundo do desenvolvimento agil de software. Surgiram novas metodologias e praticas aprimorando as existentes. Dentre elas o BDD, sigla para Behaviour Driven Development. Nunca cheguei a escrever sobre BDD e esta e a primeira vez que faco isso. Mas, desde a epoca em que o JBehave apareceu, eu ja acreditava que BDD teria grande valor. O