Your SlideShare is downloading. ×
Behaviour Driven Development
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Saving this for later?

Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime - even offline.

Text the download link to your phone

Standard text messaging rates apply

Behaviour Driven Development

940
views

Published on

Apresentação sobre automação de testes, rspec e cucumbe feita para alunos da UFPB.

Apresentação sobre automação de testes, rspec e cucumbe feita para alunos da UFPB.

Published in: Technology

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
940
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
14
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Maurício Linhares
    Behaviourdrivendevelopment e automação com Rspec e Cucumber
  • 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?
  • 7. TestDrivenDevelopment
    Redescoberta por Kent Beck;
    Cíclica:
    Test
    Code
    Refactor
    Keep It Simple, Stupid
  • 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.
  • 9. Colocando os chapéus
    Designer
    Desenvolvedor
    Refatorador
    Testador
  • 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...
  • 11. A sua suíte de testes vira...
  • 12. Die, Zombies! Die!
  • 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());
    }
    }
  • 19. Implementando uma lista encadeada seguindo as premissas do BDD com RSpec
    Como fazer?
  • 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;
  • 21. Testes de aceitação com Cucumber
    Como fazer?
  • 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?