2. Quem? Maurício Linhares Consultor da Hoodiny (Miami, FL) JUG Leader do PBJUG Atualmente RubyZealot Ex Java Zealot Instrutor na LinuxFi Ex vocalista de banda de Heavy Metal Jogador de RPG de mesa e boardgames nas horas vagas
3. Referências David Chelimskyet al. TheRSpec Book: BehaviourDrivenDevelopmentwithRSpec, CucumberandFriends. Pragmatic Bookshelf, 2010. Tom Poppendieck, Mary Poppendieck. Lean Software Development: AnAgile Toolkit. Addisson-Wesley Professional, 2003.
4. O que? O que está na moda em testes? O que é TDD/BDD e especificações executáveis? Estado da arte em BDD: Ruby, Rspec e Cucumber Pra onde nós vamos?
5. WhyRuby? Está na moda HOJE (mesmo sendo mais velha do que o Java); Puramente OO, com raízes em Smalltalk; Easilyhacked – metaprogramação is a breeze; Baixo nível de ruído sintático;
6. Automação de testes Por que automatizar? Quanto custa automatizar? O que as ferramentas de automatização fazem? Até onde a automação resolve o problema?
8. Lean Software Development: An Agile Toolkit Concurrent software development means starting development when only partial requirements are known and developing in short iterations that provide the feedback that causes the system to emerge. Concurrent development makes it possible to delay commitment until the last responsible moment, that is, the moment at which failing to make a decision eliminates an important alternative.
10. Problemas? TestDrivenDevelopment Foco no que os objetos são e não no que eles fazem; Design começa a perder importância pra dar lugar a testes; E no final...
13. BehaviourDrivenDevelopment Iniciado por Dan North, com os primeiros trabalhos sobre JBehave; É visto como o próximo passo natural para as práticas de TestDrivenDevelopment; A ferramenta de prova de conceito “não pegou” (Jbehave);
14. BehaviourDrivenDevelopment Volta do foco no que o objeto faz; Não importa muito quem ele é; Você normalmente não se preocupa com o que o objeto é, mas sim com as mensagens que ele recebe; RSpec e Cucumber viram principais exemplos;
15. It’sallabout design Removendo o “test” para que não se perca o foco do trabalho; Reforço da idéia de especificações executáveis no lugar de documentação estática; Colocar o cliente como “produtor” e validador das especificações;
16. Conhecendo o RSpec Ferramenta de BDD mais comum na comunidade Ruby; Representa a primeira fuga sintática das amarras de ferramentas baseadas no Xunit framework; Exemplos contém descrições em linguagem natural;
17. Exemplo de uso do RSpec describeBowlingdo it "shouldscore 0 for gutter game"do bowling = Bowling.new 20.times { bowling.hit(0) } bowling.score.should == 0 end end
18. O mesmo código em JUnit publicclassBowlingTest { publicvoidtestScoreZeroForGutterGame() { Bowlingbowling = newBowling(); for ( int x = 0; x < 20 ) { bowling.hit( 0 ); } Assert.assertEquals( 0, bowling.getScore()); } }
20. Cucumber e testes de browser Testes escritos em linguagem natural; O texto funciona como documentação da funcionalidade e pode ser inicialmente montado junto com o cliente; Define o escopo da funcionalidade de forma clara para todos os envolvidos;
22. Nem tudo são flores Testes, specs, exemplos não garantem que a sua aplicação está livre de bugs; Não garantem que você fez o que o cliente queria (ou o que gera mais valor pra ele); O objetivo principal é ter confiança que o código funciona e que a aplicação pode evoluir sem maiores preocupações;
23. Essa é a hora que todo mundo fica calado e vai pra casa mais cedo Dúvidas?