Behaviour Driven Development

  • View
    952

  • Download
    0

Embed Size (px)

DESCRIPTION

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

Text of Behaviour Driven Development

  • 1. Maurcio Linhares
    Behaviourdrivendevelopmente automao com Rspec e Cucumber

2. Quem?
Maurcio 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. Referncias
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 especificaes executveis?
Estado da arte em BDD: Ruby, Rspec e Cucumber
Pra onde ns vamos?
5. WhyRuby?
Est na moda HOJE (mesmo sendo mais velha do que o Java);
Puramente OO, com razes em Smalltalk;
Easilyhacked metaprogramao is a breeze;
Baixo nvel de rudo sinttico;
6. Automao de testes
Por que automatizar?
Quanto custa automatizar?
O que as ferramentas de automatizao fazem?
At onde a automao resolve o problema?
7. TestDrivenDevelopment
Redescoberta por Kent Beck;
Cclica:
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 chapus
Designer
Desenvolvedor
Refatorador
Testador
10. Problemas?
TestDrivenDevelopment
Foco no que os objetos so e no no que eles fazem;
Design comea a perder importncia pra dar lugar a testes;
E no final...
11. A sua sute de testes vira...
12. Die, Zombies! Die!
13. BehaviourDrivenDevelopment
Iniciado por Dan North, com os primeiros trabalhos sobre JBehave;
visto como o prximo passo natural para as prticas de TestDrivenDevelopment;
A ferramenta de prova de conceito no pegou (Jbehave);
14. BehaviourDrivenDevelopment
Volta do foco no que o objeto faz;
No importa muito quem ele ;
Voc normalmente no se preocupa com o que o objeto , mas sim com as mensagens que ele recebe;
RSpec e Cucumber viram principais exemplos;
15. Itsallabout design
Removendo o test para que no se perca o foco do trabalho;
Reforo da idia de especificaes executveis no lugar de documentao esttica;
Colocar o cliente como produtor e validador das especificaes;
16. Conhecendo o RSpec
Ferramenta de BDD mais comum na comunidade Ruby;
Representa a primeira fuga sinttica das amarras de ferramentas baseadas no Xunit framework;
Exemplos contm descries 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 cdigo 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 documentao 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 aceitao com Cucumber
Como fazer?
22. Nem tudo so flores
Testes, specs, exemplos no garantem que a sua aplicao est livre de bugs;
No garantem que voc fez o que o cliente queria (ou o que gera mais valor pra ele);
O objetivo principal ter confiana que o cdigo funciona e que a aplicao pode evoluir sem maiores preocupaes;
23. Essa a hora que todo mundo fica calado e vai pra casa mais cedo
Dvidas?