Behaviour Driven Development

1,699 views
1,611 views

Published on

Published in: Technology
0 Comments
8 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,699
On SlideShare
0
From Embeds
0
Number of Embeds
308
Actions
Shares
0
Downloads
77
Comments
0
Likes
8
Embeds 0
No embeds

No notes for slide
  • Falar da industria de softwares, modelo enterprisey, dizer que isso tudo é velharia. Craftmanship manifesto, Agile manifesto Requirements are behaviour,too BDD provides a “ubiquitous language” for analysis Lembrar que tudo não passa de dicas para modelar o domínio do coração do sistema durante o jogo do planejamento e desenvolvimento diário. BDD é uma forma de levar TDD adiante, ir além dos testes e ajudar na modelagem da aplicação se concentrando nas funcionalidades e não permitindo que se saia do estritamente necessário. Test se tornou Behaviou, Fixture se tornou context, assert se tornou should Testes como especificação Design não é subset deRefactoring e sim o refactoring faz parte do design
  • Behaviour Driven Development

    1. 1. Behaviour Driven Development [BDD] Desenvolvimento guiado a comportamento Christiano Milfont XPCE 2009, Fortaleza Copyleft 2009 Milfont.org
    2. 2. <ul><li>Use Case </li></ul><ul><li> Um caso de uso captura um contrato entre os interessados de um sistema sobre seus comportamentos . </li></ul><ul><li>Writing Effective Use Cases </li></ul><ul><li>Alistair Cockburn </li></ul>Behaviour Driven Development User Story Uma estoria descreve funcionalmente o que será valioso para os usuários e aos compradores de um software . User Stories Applied Mike Cohn
    3. 3. <ul><li>User Story </li></ul><ul><ul><ul><li>Card [cartão] </li></ul></ul></ul><ul><ul><ul><li>Conversation [conversação] </li></ul></ul></ul><ul><ul><ul><li>Confirmation [confirmação] </li></ul></ul></ul><ul><li>“ Ron Jeffries, 2001” </li></ul>Behaviour Driven Development
    4. 4. <ul><li>User Story </li></ul><ul><li>I ndependente </li></ul><ul><li>N egociável </li></ul><ul><li>V alioso ao comprador </li></ul><ul><li>E stimável </li></ul><ul><li>S mall [Pequena] </li></ul><ul><li>T estável </li></ul><ul><li>User Stories Applied </li></ul><ul><li>Mike Cohn </li></ul>Behaviour Driven Development
    5. 5. Behaviour Driven Development Story Card
    6. 6. Behaviour Driven Development Story Card
    7. 7. Behaviour Driven Development Story Card
    8. 8. Behaviour Driven Development <ul><li>Story Card </li></ul><ul><li>As a… </li></ul><ul><li>I want… </li></ul><ul><li>so that… </li></ul>“ BDD fornece uma linguagem ubíqua para análise” Dan North
    9. 9. Behaviour Driven Development <ul><li>Story Card </li></ul><ul><li>As a [X] </li></ul><ul><li>I want [Y] </li></ul><ul><li>so that [Z] </li></ul><ul><li>Onde: </li></ul><ul><li>Y é alguma funcionalidade ou característica, </li></ul><ul><li>Z é o benefício ou valor dessa funcionalidade e </li></ul><ul><li>X é a pessoa ou perfil/papel beneficiado </li></ul>
    10. 10. Behaviour Driven Development <ul><li>Story Card </li></ul><ul><li>As a [role] </li></ul><ul><li>I want to [activity] </li></ul><ul><li>To do [a task] </li></ul>
    11. 11. Behaviour Driven Development <ul><li>Story Card </li></ul><ul><li>As a “ membro do projeto ” </li></ul><ul><li>I want “ Criar uma issue ” </li></ul><ul><li>so that “ Eu possa acompanhar a resolução ” </li></ul><ul><li>As a “ gerente do projeto ” </li></ul><ul><li>I want “ aceitar a entrada de uma issue ” </li></ul><ul><li>so that “ seja descartada ou resolvida apenas com minha permissão ” </li></ul>
    12. 12. Behaviour Driven Development <ul><li>Acceptance Criteria </li></ul><ul><li>Given [dado] </li></ul><ul><li>When [quando] </li></ul><ul><li>Then [então] </li></ul>
    13. 13. Behaviour Driven Development <ul><li>Acceptance Criteria </li></ul><ul><li>Given uma issue preenchida e um projeto informado </li></ul><ul><li>When um membro requisitar o cadastro </li></ul><ul><li>Then garantir que ela seja armazenada no sistema </li></ul><ul><li>And uma mensagem seja informada </li></ul><ul><li>And a issue esteja na lista de não-confirmadas </li></ul>
    14. 14. Behaviour Driven Development <ul><li>Acceptance Criteria </li></ul><ul><li>Given uma issue preenchida </li></ul><ul><li>And um projeto informado </li></ul><ul><li>And um membro autorizado </li></ul><ul><li>When um membro requisitar o cadastro </li></ul><ul><li>Then garantir que ela seja armazenada no sistema </li></ul><ul><li>And uma mensagem seja informada </li></ul><ul><li>And a issue esteja na lista de &quot;novas issues&quot; a serem resolvidas </li></ul>
    15. 15. Behaviour Driven Development <ul><li>Titulo: Cadastrar Issues </li></ul><ul><li>As a membro do projeto </li></ul><ul><li>I want criar uma issue </li></ul><ul><li>So that eu possa acompanhar a resolução do mesmo. </li></ul><ul><li>Cenário 1 </li></ul><ul><li>Given uma issue preenchida e um projeto informado </li></ul><ul><li>When um membro requisitar o cadastro </li></ul><ul><li>Then garantir que ela seja armazenada no sistema </li></ul><ul><li>And uma mensagem seja informada </li></ul><ul><li> And a issue esteja na lista de não-confirmadas </li></ul><ul><li>Cenário 2 </li></ul><ul><li>Given um nome e um tipo e um nivel e um sumario a um projeto </li></ul><ul><li>When o membro requisitar o cadastro </li></ul><ul><li>Then garantir que seja criada uma issue </li></ul><ul><li> And armazenada no sistema </li></ul><ul><li> And uma mensagem seja informada </li></ul><ul><li> And a issue esteja na lista de não-confirmadas </li></ul>
    16. 16. Behaviour Driven Development <ul><li>Given um nome e um tipo e um nivel e um sumario a um projeto </li></ul><ul><li>When o membro requisitar o cadastro </li></ul><ul><li>Then garantir que seja criada uma issue </li></ul><ul><li> And armazenada no sistema </li></ul><ul><li> And uma mensagem seja informada </li></ul><ul><li> And a issue esteja na lista de não-confirmadas </li></ul><ul><li>@Given (&quot;a $name and a $type and a $level and a $summary and a $project &quot;) </li></ul><ul><li>public void relatar(String name… ) throws IllegalArgumentIssueException { </li></ul><ul><ul><ul><li>throw new IllegalArgumentIssueException(&quot;erro&quot;); </li></ul></ul></ul><ul><li>} </li></ul>
    17. 17. Behaviour Driven Development <ul><li>Given um nome e um tipo e um nivel e um sumario a um projeto </li></ul><ul><li>When o membro requisitar o cadastro </li></ul><ul><li>Then garantir que seja criada uma issue </li></ul><ul><li> And armazenada no sistema </li></ul><ul><li> And uma mensagem seja informada </li></ul><ul><li> And a issue esteja na lista de não-confirmadas </li></ul><ul><li>@Given (&quot;a $name and a $type and a $level and a $summary and a $project &quot;) </li></ul><ul><li>public void relatar(String name… ) throws IllegalArgumentIssueException { </li></ul><ul><ul><ul><li>Issue issue = member </li></ul></ul></ul><ul><ul><ul><ul><li>.createIssue( name ) </li></ul></ul></ul></ul><ul><ul><ul><ul><li>.withType( type ) </li></ul></ul></ul></ul><ul><ul><ul><ul><li>.withLevel( level ) </li></ul></ul></ul></ul><ul><ul><ul><ul><li>.withSummary( summary ) </li></ul></ul></ul></ul><ul><ul><ul><ul><li>.toProject( project) ; </li></ul></ul></ul></ul><ul><ul><ul><li>ensureThat(issue .getStatus(), equalTo(Status. UNCONFIRMED )); </li></ul></ul></ul><ul><ul><ul><li>… </li></ul></ul></ul><ul><li>} </li></ul>
    18. 18. Behaviour Driven Development <ul><li>Reference </li></ul><ul><li>http://groups.google.com.br/group/xpce </li></ul>

    ×