Test-Driven development (TDD)EBehavior Driven Development<br />Anderson Cella<br />Benhur Griffante<br />Márcio H. Brufatt...
TEST-DRIVEN DEVELOPMENT (TDD)<br />ou<br />DESENVOLVIMENTO DIRIGIDO POR TESTES <br />
HISTÓRIA<br />O TDD foi criado por Kenk Beck em 2003.<br />A utilização do TDD iniciou com o eXtremme Programming.<br />
O que é Tdd?<br />É uma técnica de desenvolvimento de software que se baseia em ciclos de repetição curtos, onde o desenvo...
PROCESSO TDD<br />Design<br />Test<br />Implementação<br />Test<br />
CICLO TDD<br />Red | Green | Refactor<br />Red<br />Refactor<br />Green<br />
REFACTOR<br />Melhorar o código.<br />
VANTAGENS<br />Testando primeiro, você sabe exatamente o que seu sofware precisa fazer;<br />Foco: Escrever o código mais ...
TIPOS DE TESTES<br />Teste Unitário<br />Teste de Integração<br />Teste de Sistema<br />Teste de regressão<br />
FERRAMENTAS<br />.NET: MSTest (Visual Studio), Nunit, csUnit, xUnit.net<br />Java: JUnit, Jtest<br />Ruby: Test::Unit<br /...
FERRAMENTAS<br />HTMLUnit<br />HTTPUnit<br />Jmock<br />Moq<br />NDbUnit<br />Nunit<br />OUNIT<br />TestNG<br />VB: VBUnit...
BEHAVIOR DRIVEN DEVELOPMENT (BDD)<br />ou<br />DESENVOLVIMENTO GUIADO POR COMPORTAMENTO<br />
HISTÓRIA<br />Foi originalmente concebido em 2003, por Dan North como uma resposta à Test DrivenDevelopment.<br />FRAMEWOR...
O que é bdd?<br />Técnica de desenvolvimento ágil que encoraja colaboração entre desenvolvedores, setores de qualidade e p...
Objetivo<br />Objetivo do BDD é juntar o todas as boas práticas existentes sob uma só bandeira com uma terminologia consis...
Atingindo o Objetivo<br />Definido um vocabulário comum (UbiquitousLanguage);<br />Une quem entende de tecnologia com as p...
UbiquitousLanguage<br />Linguagem do  usuário/cliente . Manter uma única linguagem de domínio que seja entendível tanto pa...
Príncipios<br />A área de negócios e a de tecnologia precisam se referir a mesma parte do sistema da mesma forma- Tudo é c...
Vantagens<br />Melhorentendimento do negócio do cliente;<br />Desenvolvedor, cliente e analista se entendem;<br />Reduçãoe...
Tipos de Teste<br />Teste Unitário<br />Teste de Integração<br />Teste de Sistema<br />Teste de regressão<br />Teste de ac...
FERRAMENTAS<br /><ul><li>Java: JBee, Bumblebee, beanSpec, Concordion, easyb, Instinct, JavaStubs, Jbehave, JDave;
ASSpec: ActionScript 3;
Bdoc: RubyonRails;
C++: CppSpec, Spec-cpp;
ColdFusion: cfSpec;
C: Cspec;
Delphi: dSpec;</li></li></ul><li>FERRAMENTAS<br /><ul><li>TecnologiasWeb: Cucumber;
Groovy: easyb, Gspec, tepec;
JavaFX: JFXtrasTest;
JavaScript: Jspec, JSSpec;
.NET: NBehave , Nspec, Nspecify, Nunit, Specter, StoryQ;
PHP: PHPSpec;
Python: Pyccuracy, Pyhistorian,PyCukes;</li></li></ul><li>CONCLUSÃO<br />Qualidade no produto final<br />Fácil de executar...
BIBLIOGRAFIAS<br />http://jefferson.eti.br/?p=96BDD<br />http://domaindrivendesign.org/node/132UbiquitousLanguage<br />htt...
Upcoming SlideShare
Loading in...5
×

Bdd&tdd

1,097

Published on

Published in: Technology, Self Improvement
0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,097
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
30
Comments
0
Likes
3
Embeds 0
No embeds

No notes for slide

Bdd&tdd

  1. 1. Test-Driven development (TDD)EBehavior Driven Development<br />Anderson Cella<br />Benhur Griffante<br />Márcio H. Brufatto<br />
  2. 2. TEST-DRIVEN DEVELOPMENT (TDD)<br />ou<br />DESENVOLVIMENTO DIRIGIDO POR TESTES <br />
  3. 3. HISTÓRIA<br />O TDD foi criado por Kenk Beck em 2003.<br />A utilização do TDD iniciou com o eXtremme Programming.<br />
  4. 4. O que é Tdd?<br />É uma técnica de desenvolvimento de software que se baseia em ciclos de repetição curtos, onde o desenvolvedor cria um caso de teste e depois cria o código para o teste criado.<br />
  5. 5. PROCESSO TDD<br />Design<br />Test<br />Implementação<br />Test<br />
  6. 6. CICLO TDD<br />Red | Green | Refactor<br />Red<br />Refactor<br />Green<br />
  7. 7. REFACTOR<br />Melhorar o código.<br />
  8. 8. VANTAGENS<br />Testando primeiro, você sabe exatamente o que seu sofware precisa fazer;<br />Foco: Escrever o código mais simples que resolve o problema;<br />Saber quando parar: Teste define quando se atinge o “suficiente”;<br />Código mais limpo e organizado;<br />Identificar o mais cedo possível problemas de regressão; <br />Segurança e refactoring sem medo.<br />
  9. 9. TIPOS DE TESTES<br />Teste Unitário<br />Teste de Integração<br />Teste de Sistema<br />Teste de regressão<br />
  10. 10. FERRAMENTAS<br />.NET: MSTest (Visual Studio), Nunit, csUnit, xUnit.net<br />Java: JUnit, Jtest<br />Ruby: Test::Unit<br />Python: PyUnit<br />PHP: PHPUnit, SimpleTest<br />JavaScript: JSUnit<br />cppUnit<br />Cunit<br />Delphi: Dunit<br />DBFit<br />DBUnit<br />
  11. 11. FERRAMENTAS<br />HTMLUnit<br />HTTPUnit<br />Jmock<br />Moq<br />NDbUnit<br />Nunit<br />OUNIT<br />TestNG<br />VB: VBUnit<br />XTUnit<br />
  12. 12. BEHAVIOR DRIVEN DEVELOPMENT (BDD)<br />ou<br />DESENVOLVIMENTO GUIADO POR COMPORTAMENTO<br />
  13. 13. HISTÓRIA<br />Foi originalmente concebido em 2003, por Dan North como uma resposta à Test DrivenDevelopment.<br />FRAMEWORKS<br />JbehaveJava<br />RbehaveRuby<br />CucumberRspec<br />
  14. 14. O que é bdd?<br />Técnica de desenvolvimento ágil que encoraja colaboração entre desenvolvedores, setores de qualidade e pessoas não-técnicas.<br />
  15. 15. Objetivo<br />Objetivo do BDD é juntar o todas as boas práticas existentes sob uma só bandeira com uma terminologia consistente e sem ambiguidades.<br />
  16. 16. Atingindo o Objetivo<br />Definido um vocabulário comum (UbiquitousLanguage);<br />Une quem entende de tecnologia com as pessoas que entendem do negócio.<br />
  17. 17. UbiquitousLanguage<br />Linguagem do usuário/cliente . Manter uma única linguagem de domínio que seja entendível tanto para os desenvolvedores quanto para o cliente.<br />
  18. 18. Príncipios<br />A área de negócios e a de tecnologia precisam se referir a mesma parte do sistema da mesma forma- Tudo é comportamento<br />Toda parte do sistema precisa ter um valor identificável e verificável para o negócio- Valor de negócio<br />Analisar, projetar e planejar tudo de cima a baixo tem retorno decrescente.- O suficiente é suficiente<br />
  19. 19. Vantagens<br />Melhorentendimento do negócio do cliente;<br />Desenvolvedor, cliente e analista se entendem;<br />Reduçãoemerros de entendimento do negócio.<br />
  20. 20. Tipos de Teste<br />Teste Unitário<br />Teste de Integração<br />Teste de Sistema<br />Teste de regressão<br />Teste de aceitação<br />
  21. 21. FERRAMENTAS<br /><ul><li>Java: JBee, Bumblebee, beanSpec, Concordion, easyb, Instinct, JavaStubs, Jbehave, JDave;
  22. 22. ASSpec: ActionScript 3;
  23. 23. Bdoc: RubyonRails;
  24. 24. C++: CppSpec, Spec-cpp;
  25. 25. ColdFusion: cfSpec;
  26. 26. C: Cspec;
  27. 27. Delphi: dSpec;</li></li></ul><li>FERRAMENTAS<br /><ul><li>TecnologiasWeb: Cucumber;
  28. 28. Groovy: easyb, Gspec, tepec;
  29. 29. JavaFX: JFXtrasTest;
  30. 30. JavaScript: Jspec, JSSpec;
  31. 31. .NET: NBehave , Nspec, Nspecify, Nunit, Specter, StoryQ;
  32. 32. PHP: PHPSpec;
  33. 33. Python: Pyccuracy, Pyhistorian,PyCukes;</li></li></ul><li>CONCLUSÃO<br />Qualidade no produto final<br />Fácil de executar mudanças<br />Diminuição de erros em códigos<br />Melhor entendimento do negócio<br />Todos “falam a mesma língua”<br />Criação de padrão<br />
  34. 34.
  35. 35. BIBLIOGRAFIAS<br />http://jefferson.eti.br/?p=96BDD<br />http://domaindrivendesign.org/node/132UbiquitousLanguage<br />http://www.handersonfrota.com.br/ubiquitous-language/UbiquitousLanguage<br />http://www.slideshare.net/ Slides<br />http://pt.wikipedia.org/wiki/Test_Driven_Development TDD<br />http://pt.wikipedia.org/wiki/Behavior_Driven_Development BDD<br />
  36. 36. LIVROS INDICADOS<br />
  37. 37. OBRIGADO !<br />
  38. 38. RSPEC <br />& <br />CUCUMBER<br />
  39. 39. INSTALAÇÃO TDD & BDD NO RAILS<br />RSpec<br />gem install rspecrspec-rails<br />Para utilizar com Rails:<br />Dentro do projeto: script/generate rspec<br />Cucumber<br />gem install cucumber<br />Para utilizar com Rails:<br />Dentro do projeto: script/generate cucumber<br />
  40. 40. EXEMPLO RSPEC<br />script/generaterspec_modelListtitle:stringdescription:string<br />
  41. 41. EXEMPLO CUCUMBER<br />Para que seja possível executar uma UserStorie utilizando o Cucumber, ela precisa ter uma estrutura básica.<br /><ul><li>Para o cucumber, todas as UserStories referentes a uma funcionalidade do sistema estarão agrupadas em um arquivo com a extensão .feature
  42. 42. No início de cada arquivo existe um resumo da funcionalidade com um formato bem simples: um título, qual o problema a ser resolvido, qual ator trabalha nesta história e qual o resultado desejado.
  43. 43. Logo depois são definidos os cenários, que são as histórias em si, cada arquivo tem pelo menos um cenário.</li></li></ul><li>EXEMPLO CUCUMBER<br /><ul><li>Cada história, ou cenário é composto por uma descrição ou título, uma ou mais pré condições, uma ou mais ações e uma ou mais verificações.</li></li></ul><li>EXEMPLO CUCUMBER<br />Palavras chave apresentadas são:<br /><ul><li>Feature
  44. 44. Scenario
  45. 45. Given
  46. 46. And
  47. 47. When
  48. 48. Then</li></li></ul><li>EXEMPLO CUCUMBER<br />Estas mesmas palavras podem ser traduzidas para o <br />portuguescomo:<br /><ul><li>Funcionalidade
  49. 49. Cenário
  50. 50. Dado
  51. 51. E
  52. 52. Quando
  53. 53. Então</li></li></ul><li>SITES DAS FERRAMENTAS<br />http://cukes.infoCucumber<br />http://rspec.info RSPEC<br />
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×