Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Behaviour Driven Development

1,831 views

Published on

Published in: Technology
  • Be the first to comment

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>

×