SlideShare ist ein Scribd-Unternehmen logo
1 von 23
Maurício Linhares Behaviourdrivendevelopment  e automação com Rspec e Cucumber
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
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.
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?
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;
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?
TestDrivenDevelopment Redescoberta por Kent Beck; Cíclica: Test Code Refactor Keep It Simple, Stupid
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.
Colocando os chapéus Designer Desenvolvedor Refatorador Testador
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...
A sua suíte de testes vira...
Die, Zombies! Die!
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);
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;
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;
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;
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
O mesmo código em JUnit publicclassBowlingTest { publicvoidtestScoreZeroForGutterGame() { Bowlingbowling = newBowling();         for ( int x = 0; x < 20 ) { bowling.hit( 0 );    } Assert.assertEquals( 0, bowling.getScore());              } }
Implementando uma lista encadeada seguindo as premissas do BDD com RSpec Como fazer?
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;
Testes de aceitação com Cucumber Como fazer?
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;
Essa é a hora que todo mundo fica calado e vai pra casa mais cedo Dúvidas?

Weitere ähnliche Inhalte

Was ist angesagt?

Introdução a BDD
Introdução a BDDIntrodução a BDD
Introdução a BDDIsmael
 
Cucumber: um breve review
Cucumber: um breve reviewCucumber: um breve review
Cucumber: um breve reviewLaís Berlatto
 
Boas práticas no desenvolvimento de software através do uso de TDD
Boas práticas no desenvolvimento de software através do uso de TDDBoas práticas no desenvolvimento de software através do uso de TDD
Boas práticas no desenvolvimento de software através do uso de TDDJony Ferreira dos Santos
 
Porque aprender várias linguagens me tornou um DBA (e desenvolvedor) melhor
Porque aprender várias linguagens me tornou um DBA (e desenvolvedor) melhorPorque aprender várias linguagens me tornou um DBA (e desenvolvedor) melhor
Porque aprender várias linguagens me tornou um DBA (e desenvolvedor) melhorDickson S. Guedes
 
Desenvolvimento orientado a Testes
Desenvolvimento orientado a TestesDesenvolvimento orientado a Testes
Desenvolvimento orientado a TestesDenis Ferrari
 
Gestão de Produtos em Startups
Gestão de Produtos em StartupsGestão de Produtos em Startups
Gestão de Produtos em StartupsNeue Labs
 
Testes e mocks: Em Visual Studio com .NET
Testes e mocks: Em Visual Studio com .NETTestes e mocks: Em Visual Studio com .NET
Testes e mocks: Em Visual Studio com .NETAlessandro Binhara
 
Feature Injection - Descobrindo e entregando valor testável
Feature Injection - Descobrindo e entregando valor testávelFeature Injection - Descobrindo e entregando valor testável
Feature Injection - Descobrindo e entregando valor testávelHélio Medeiros
 
BDD JBehave
BDD JBehaveBDD JBehave
BDD JBehaveIsmael
 
In tests we trust: começando com TDD, mocks e mais
In tests we trust: começando com TDD, mocks e maisIn tests we trust: começando com TDD, mocks e mais
In tests we trust: começando com TDD, mocks e maisAna Paula Gomes
 
TDD para "meros mortais"
TDD para "meros mortais"TDD para "meros mortais"
TDD para "meros mortais"thiagobapt
 
TDD: Técnicas, Benefícios e Limitação
TDD: Técnicas, Benefícios e Limitação TDD: Técnicas, Benefícios e Limitação
TDD: Técnicas, Benefícios e Limitação Icaro Camelo
 
DEVCAMP 2013 - Refatorar! porque ninguém gosta de código que cheira mal
DEVCAMP 2013 - Refatorar! porque ninguém gosta de código que cheira malDEVCAMP 2013 - Refatorar! porque ninguém gosta de código que cheira mal
DEVCAMP 2013 - Refatorar! porque ninguém gosta de código que cheira malElias Souza
 

Was ist angesagt? (20)

Introdução a BDD
Introdução a BDDIntrodução a BDD
Introdução a BDD
 
Cucumber: um breve review
Cucumber: um breve reviewCucumber: um breve review
Cucumber: um breve review
 
Boas práticas no desenvolvimento de software através do uso de TDD
Boas práticas no desenvolvimento de software através do uso de TDDBoas práticas no desenvolvimento de software através do uso de TDD
Boas práticas no desenvolvimento de software através do uso de TDD
 
Porque aprender várias linguagens me tornou um DBA (e desenvolvedor) melhor
Porque aprender várias linguagens me tornou um DBA (e desenvolvedor) melhorPorque aprender várias linguagens me tornou um DBA (e desenvolvedor) melhor
Porque aprender várias linguagens me tornou um DBA (e desenvolvedor) melhor
 
Desenvolvimento orientado a Testes
Desenvolvimento orientado a TestesDesenvolvimento orientado a Testes
Desenvolvimento orientado a Testes
 
Gestão de Produtos em Startups
Gestão de Produtos em StartupsGestão de Produtos em Startups
Gestão de Produtos em Startups
 
Coding Dojo em 10 Minutos!
Coding Dojo em 10 Minutos!Coding Dojo em 10 Minutos!
Coding Dojo em 10 Minutos!
 
Testes e mocks: Em Visual Studio com .NET
Testes e mocks: Em Visual Studio com .NETTestes e mocks: Em Visual Studio com .NET
Testes e mocks: Em Visual Studio com .NET
 
Introdução ao TDD
Introdução ao TDDIntrodução ao TDD
Introdução ao TDD
 
Programação Orientada a Gambiarra
Programação Orientada a GambiarraProgramação Orientada a Gambiarra
Programação Orientada a Gambiarra
 
Feature Injection - Descobrindo e entregando valor testável
Feature Injection - Descobrindo e entregando valor testávelFeature Injection - Descobrindo e entregando valor testável
Feature Injection - Descobrindo e entregando valor testável
 
PHPZEIRO: Adote um framework
PHPZEIRO: Adote um frameworkPHPZEIRO: Adote um framework
PHPZEIRO: Adote um framework
 
Refatorar é preciso. Palestra TDC 2014
Refatorar é preciso. Palestra TDC 2014Refatorar é preciso. Palestra TDC 2014
Refatorar é preciso. Palestra TDC 2014
 
BDD JBehave
BDD JBehaveBDD JBehave
BDD JBehave
 
Refatorar é preciso! 2.0
Refatorar é preciso! 2.0Refatorar é preciso! 2.0
Refatorar é preciso! 2.0
 
In tests we trust: começando com TDD, mocks e mais
In tests we trust: começando com TDD, mocks e maisIn tests we trust: começando com TDD, mocks e mais
In tests we trust: começando com TDD, mocks e mais
 
TDD para "meros mortais"
TDD para "meros mortais"TDD para "meros mortais"
TDD para "meros mortais"
 
TDD: Técnicas, Benefícios e Limitação
TDD: Técnicas, Benefícios e Limitação TDD: Técnicas, Benefícios e Limitação
TDD: Técnicas, Benefícios e Limitação
 
O Spring está morto! Viva o Spring!
O Spring está morto! Viva o Spring!O Spring está morto! Viva o Spring!
O Spring está morto! Viva o Spring!
 
DEVCAMP 2013 - Refatorar! porque ninguém gosta de código que cheira mal
DEVCAMP 2013 - Refatorar! porque ninguém gosta de código que cheira malDEVCAMP 2013 - Refatorar! porque ninguém gosta de código que cheira mal
DEVCAMP 2013 - Refatorar! porque ninguém gosta de código que cheira mal
 

Andere mochten auch

Testes automatizados (2)
Testes automatizados (2)Testes automatizados (2)
Testes automatizados (2)cesarvianna
 
BDD e TDD na prática com SpecFlow e Visual Studio 2012
BDD e TDD na prática com SpecFlow e Visual Studio 2012BDD e TDD na prática com SpecFlow e Visual Studio 2012
BDD e TDD na prática com SpecFlow e Visual Studio 2012Igor Abade
 
BDD (Behavior-Driven Development)
BDD (Behavior-Driven Development)BDD (Behavior-Driven Development)
BDD (Behavior-Driven Development)Renato Groff
 
DDD + BDD + TDD - RF 2015
DDD + BDD + TDD - RF 2015 DDD + BDD + TDD - RF 2015
DDD + BDD + TDD - RF 2015 Eduardo Bregaida
 
[GUTS-RS] Tendências de Teste de Software para 2016
[GUTS-RS] Tendências de Teste de Software para 2016[GUTS-RS] Tendências de Teste de Software para 2016
[GUTS-RS] Tendências de Teste de Software para 2016GUTS-RS
 
BDD in Action – principles, practices and real-world application
BDD in Action – principles, practices and real-world applicationBDD in Action – principles, practices and real-world application
BDD in Action – principles, practices and real-world applicationJohn Ferguson Smart Limited
 

Andere mochten auch (8)

BDD - aula
BDD - aulaBDD - aula
BDD - aula
 
Testes automatizados (2)
Testes automatizados (2)Testes automatizados (2)
Testes automatizados (2)
 
BDD e TDD na prática com SpecFlow e Visual Studio 2012
BDD e TDD na prática com SpecFlow e Visual Studio 2012BDD e TDD na prática com SpecFlow e Visual Studio 2012
BDD e TDD na prática com SpecFlow e Visual Studio 2012
 
BDD (Behavior-Driven Development)
BDD (Behavior-Driven Development)BDD (Behavior-Driven Development)
BDD (Behavior-Driven Development)
 
DDD + BDD + TDD - RF 2015
DDD + BDD + TDD - RF 2015 DDD + BDD + TDD - RF 2015
DDD + BDD + TDD - RF 2015
 
BDD: Cucumber + Selenium + Java
BDD: Cucumber + Selenium + JavaBDD: Cucumber + Selenium + Java
BDD: Cucumber + Selenium + Java
 
[GUTS-RS] Tendências de Teste de Software para 2016
[GUTS-RS] Tendências de Teste de Software para 2016[GUTS-RS] Tendências de Teste de Software para 2016
[GUTS-RS] Tendências de Teste de Software para 2016
 
BDD in Action – principles, practices and real-world application
BDD in Action – principles, practices and real-world applicationBDD in Action – principles, practices and real-world application
BDD in Action – principles, practices and real-world application
 

Ähnlich wie BDD com RSpec e Cucumber

Behaviour driven development, com jbehave
Behaviour driven development, com jbehaveBehaviour driven development, com jbehave
Behaviour driven development, com jbehaveMarcelo Zeferino
 
Test-Driven Development - Introdução
Test-Driven Development - IntroduçãoTest-Driven Development - Introdução
Test-Driven Development - IntroduçãoHélio Costa e Silva
 
Por que testar é importante e algumas boas práticas
Por que testar é importante e algumas boas práticasPor que testar é importante e algumas boas práticas
Por que testar é importante e algumas boas práticasLucas Caton
 
Sobre TDD - Tech Friday da Everis Uberlândia
Sobre TDD - Tech Friday da Everis UberlândiaSobre TDD - Tech Friday da Everis Uberlândia
Sobre TDD - Tech Friday da Everis UberlândiaRogerio Fontes
 
Os Benefícios dos testes no desenvolvimento de software
Os Benefícios dos testes no desenvolvimento de softwareOs Benefícios dos testes no desenvolvimento de software
Os Benefícios dos testes no desenvolvimento de softwareDextra Sistemas / Etec Itu
 
UnP Eng. Software - Aula 27
UnP Eng. Software - Aula 27UnP Eng. Software - Aula 27
UnP Eng. Software - Aula 27Hélio Medeiros
 
Desenvolvimento de software de forma rápida e sem bugs - Introdução a TDD e S...
Desenvolvimento de software de forma rápida e sem bugs - Introdução a TDD e S...Desenvolvimento de software de forma rápida e sem bugs - Introdução a TDD e S...
Desenvolvimento de software de forma rápida e sem bugs - Introdução a TDD e S...Marcio Miyamoto
 
Mitos do Desenvolvimento de Software
Mitos do Desenvolvimento de SoftwareMitos do Desenvolvimento de Software
Mitos do Desenvolvimento de Softwareguest2f8cba
 
Introdução ao TDD (Test-Driven Development) - #guma10anos
Introdução ao TDD (Test-Driven Development) - #guma10anosIntrodução ao TDD (Test-Driven Development) - #guma10anos
Introdução ao TDD (Test-Driven Development) - #guma10anosDionatan default
 
Test-Driven Development serve pra mim?
Test-Driven Development serve pra mim?Test-Driven Development serve pra mim?
Test-Driven Development serve pra mim?Maurício Aniche
 
Testes utilizando cucumber + PhantomJs
Testes utilizando cucumber + PhantomJsTestes utilizando cucumber + PhantomJs
Testes utilizando cucumber + PhantomJsLocaweb
 
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...tdc-globalcode
 
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...tdc-globalcode
 
Lidando com Equipes de Desenvolvimento
Lidando com Equipes de DesenvolvimentoLidando com Equipes de Desenvolvimento
Lidando com Equipes de Desenvolvimento4Soft
 

Ähnlich wie BDD com RSpec e Cucumber (20)

Behaviour driven development, com jbehave
Behaviour driven development, com jbehaveBehaviour driven development, com jbehave
Behaviour driven development, com jbehave
 
Test First, TDD e outros Bichos
Test First, TDD e outros BichosTest First, TDD e outros Bichos
Test First, TDD e outros Bichos
 
#Moving br workshop
#Moving br workshop#Moving br workshop
#Moving br workshop
 
Test-Driven Development - Introdução
Test-Driven Development - IntroduçãoTest-Driven Development - Introdução
Test-Driven Development - Introdução
 
Por que testar é importante e algumas boas práticas
Por que testar é importante e algumas boas práticasPor que testar é importante e algumas boas práticas
Por que testar é importante e algumas boas práticas
 
Sobre TDD - Tech Friday da Everis Uberlândia
Sobre TDD - Tech Friday da Everis UberlândiaSobre TDD - Tech Friday da Everis Uberlândia
Sobre TDD - Tech Friday da Everis Uberlândia
 
Os Benefícios dos testes no desenvolvimento de software
Os Benefícios dos testes no desenvolvimento de softwareOs Benefícios dos testes no desenvolvimento de software
Os Benefícios dos testes no desenvolvimento de software
 
UnP Eng. Software - Aula 27
UnP Eng. Software - Aula 27UnP Eng. Software - Aula 27
UnP Eng. Software - Aula 27
 
TDD
TDDTDD
TDD
 
Desenvolvimento de software de forma rápida e sem bugs - Introdução a TDD e S...
Desenvolvimento de software de forma rápida e sem bugs - Introdução a TDD e S...Desenvolvimento de software de forma rápida e sem bugs - Introdução a TDD e S...
Desenvolvimento de software de forma rápida e sem bugs - Introdução a TDD e S...
 
Mitos do Desenvolvimento de Software
Mitos do Desenvolvimento de SoftwareMitos do Desenvolvimento de Software
Mitos do Desenvolvimento de Software
 
Introdução ao TDD (Test-Driven Development) - #guma10anos
Introdução ao TDD (Test-Driven Development) - #guma10anosIntrodução ao TDD (Test-Driven Development) - #guma10anos
Introdução ao TDD (Test-Driven Development) - #guma10anos
 
Teste automatizados e tdd
Teste automatizados e tddTeste automatizados e tdd
Teste automatizados e tdd
 
Test-Driven Development serve pra mim?
Test-Driven Development serve pra mim?Test-Driven Development serve pra mim?
Test-Driven Development serve pra mim?
 
Testes utilizando cucumber + PhantomJs
Testes utilizando cucumber + PhantomJsTestes utilizando cucumber + PhantomJs
Testes utilizando cucumber + PhantomJs
 
Tdd na veia
Tdd na veiaTdd na veia
Tdd na veia
 
Bdd&tdd
Bdd&tddBdd&tdd
Bdd&tdd
 
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
 
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
 
Lidando com Equipes de Desenvolvimento
Lidando com Equipes de DesenvolvimentoLidando com Equipes de Desenvolvimento
Lidando com Equipes de Desenvolvimento
 

Mehr von Maurício Linhares

Unindo Ruby e Java através de uma arquitetura orientada a serviços na OfficeDrop
Unindo Ruby e Java através de uma arquitetura orientada a serviços na OfficeDropUnindo Ruby e Java através de uma arquitetura orientada a serviços na OfficeDrop
Unindo Ruby e Java através de uma arquitetura orientada a serviços na OfficeDropMaurício Linhares
 
Mixing Ruby and Java in a Service Oriented Architecture at OfficeDrop
Mixing Ruby and Java in a Service Oriented Architecture at OfficeDropMixing Ruby and Java in a Service Oriented Architecture at OfficeDrop
Mixing Ruby and Java in a Service Oriented Architecture at OfficeDropMaurício Linhares
 
Curso java 08 - mais sobre coleções
Curso java   08 - mais sobre coleçõesCurso java   08 - mais sobre coleções
Curso java 08 - mais sobre coleçõesMaurício Linhares
 
Curso java 06 - mais construtores, interfaces e polimorfismo
Curso java   06 - mais construtores, interfaces e polimorfismoCurso java   06 - mais construtores, interfaces e polimorfismo
Curso java 06 - mais construtores, interfaces e polimorfismoMaurício Linhares
 
Curso java 05 - herança, classes e métodos abstratos
Curso java   05 - herança, classes e métodos abstratosCurso java   05 - herança, classes e métodos abstratos
Curso java 05 - herança, classes e métodos abstratosMaurício Linhares
 
Curso java 04 - ap is e bibliotecas
Curso java   04 - ap is e bibliotecasCurso java   04 - ap is e bibliotecas
Curso java 04 - ap is e bibliotecasMaurício Linhares
 
Curso java 01 - molhando os pés com java
Curso java   01 - molhando os pés com javaCurso java   01 - molhando os pés com java
Curso java 01 - molhando os pés com javaMaurício Linhares
 
Curso java 03 - métodos e parâmetros
Curso java   03 - métodos e parâmetrosCurso java   03 - métodos e parâmetros
Curso java 03 - métodos e parâmetrosMaurício Linhares
 
Outsourcing e trabalho remoto para a nuvem
Outsourcing e trabalho remoto para a nuvemOutsourcing e trabalho remoto para a nuvem
Outsourcing e trabalho remoto para a nuvemMaurício Linhares
 
Aulas de Java Avançado 2- Faculdade iDez 2010
Aulas de Java Avançado 2- Faculdade iDez 2010Aulas de Java Avançado 2- Faculdade iDez 2010
Aulas de Java Avançado 2- Faculdade iDez 2010Maurício Linhares
 

Mehr von Maurício Linhares (20)

Mercado de TI
Mercado de TIMercado de TI
Mercado de TI
 
Unindo Ruby e Java através de uma arquitetura orientada a serviços na OfficeDrop
Unindo Ruby e Java através de uma arquitetura orientada a serviços na OfficeDropUnindo Ruby e Java através de uma arquitetura orientada a serviços na OfficeDrop
Unindo Ruby e Java através de uma arquitetura orientada a serviços na OfficeDrop
 
Mixing Ruby and Java in a Service Oriented Architecture at OfficeDrop
Mixing Ruby and Java in a Service Oriented Architecture at OfficeDropMixing Ruby and Java in a Service Oriented Architecture at OfficeDrop
Mixing Ruby and Java in a Service Oriented Architecture at OfficeDrop
 
Aprendendo ruby
Aprendendo rubyAprendendo ruby
Aprendendo ruby
 
Curso java 07 - exceções
Curso java   07 - exceçõesCurso java   07 - exceções
Curso java 07 - exceções
 
Curso java 08 - mais sobre coleções
Curso java   08 - mais sobre coleçõesCurso java   08 - mais sobre coleções
Curso java 08 - mais sobre coleções
 
Curso java 06 - mais construtores, interfaces e polimorfismo
Curso java   06 - mais construtores, interfaces e polimorfismoCurso java   06 - mais construtores, interfaces e polimorfismo
Curso java 06 - mais construtores, interfaces e polimorfismo
 
Curso java 05 - herança, classes e métodos abstratos
Curso java   05 - herança, classes e métodos abstratosCurso java   05 - herança, classes e métodos abstratos
Curso java 05 - herança, classes e métodos abstratos
 
Curso java 04 - ap is e bibliotecas
Curso java   04 - ap is e bibliotecasCurso java   04 - ap is e bibliotecas
Curso java 04 - ap is e bibliotecas
 
Curso java 01 - molhando os pés com java
Curso java   01 - molhando os pés com javaCurso java   01 - molhando os pés com java
Curso java 01 - molhando os pés com java
 
Curso java 02 - variáveis
Curso java   02 - variáveisCurso java   02 - variáveis
Curso java 02 - variáveis
 
Curso java 03 - métodos e parâmetros
Curso java   03 - métodos e parâmetrosCurso java   03 - métodos e parâmetros
Curso java 03 - métodos e parâmetros
 
Extreme programming
Extreme programmingExtreme programming
Extreme programming
 
Feature Driven Development
Feature Driven DevelopmentFeature Driven Development
Feature Driven Development
 
Migrando pra Scala
Migrando pra ScalaMigrando pra Scala
Migrando pra Scala
 
Outsourcing e trabalho remoto para a nuvem
Outsourcing e trabalho remoto para a nuvemOutsourcing e trabalho remoto para a nuvem
Outsourcing e trabalho remoto para a nuvem
 
Mercado hoje
Mercado hojeMercado hoje
Mercado hoje
 
Análise de sistemas oo 1
Análise de sistemas oo   1Análise de sistemas oo   1
Análise de sistemas oo 1
 
Revisão html e java script
Revisão html e java scriptRevisão html e java script
Revisão html e java script
 
Aulas de Java Avançado 2- Faculdade iDez 2010
Aulas de Java Avançado 2- Faculdade iDez 2010Aulas de Java Avançado 2- Faculdade iDez 2010
Aulas de Java Avançado 2- Faculdade iDez 2010
 

BDD com RSpec e Cucumber

  • 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...
  • 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?