BDD - Além do Hello World
Upcoming SlideShare
Loading in...5
×
 

BDD - Além do Hello World

on

  • 1,664 views

Palestra apresentada no #TDC2011 Goiânia.

Palestra apresentada no #TDC2011 Goiânia.

Desenvolvimento Software ao invés de código.

Statistics

Views

Total Views
1,664
Views on SlideShare
1,392
Embed Views
272

Actions

Likes
2
Downloads
28
Comments
1

6 Embeds 272

http://jogano10.com 209
http://paper.li 30
http://ederig.wordpress.com 29
http://www.linkedin.com 2
http://a0.twimg.com 1
http://jogano10.com HTTP 1

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

BDD - Além do Hello World BDD - Além do Hello World Presentation Transcript

  • BDD além do Hello World #TDC2011 Goiania Eder Ignatowiczsábado, 29 de outubro de 2011
  • Audiência #TDC2011 Trilha de Testes PO / Clientesábado, 29 de outubro de 2011
  • Audiência #TDC2011 Trilha de Testes PO / Cliente Testersábado, 29 de outubro de 2011
  • Audiência #TDC2011 Trilha de Testes PO / Cliente Tester Developersábado, 29 de outubro de 2011
  • Eder Ignatowicz @ederign Developer?sábado, 29 de outubro de 2011
  • Eder Ignatowicz @ederign Multidisciplinarsábado, 29 de outubro de 2011
  • Eder Ignatowicz @ederignsábado, 29 de outubro de 2011
  • sábado, 29 de outubro de 2011
  • sábado, 29 de outubro de 2011
  • No princípio...sábado, 29 de outubro de 2011
  • while ((!found) && (pos < (fileContent.Length - 6))) { byteData = new byte[6]; Array.Copy(fileContent, pos, byteData, 0, 6); pos = pos + 6; str_byteData = enc.GetString(byteData); if (str_byteData.Contains("s")) { posE_byteData = str_byteData.IndexOf("s"); pos = pos + (posE_byteData - 6); Array.Copy(fileContent, pos, byteData, 0, 6); pos = pos + 6; if (byteData[0] == 0x73) // s { if (byteData[1] == 0x74) // t { if (byteData[2] == 0x72) // r { if (byteData[3] == 0x65) // e { if (byteData[4] == 0x61) // a { if (byteData[5] == 0x6D) // m { found = true; break; } else { if (byteData[5] == 0x73) { pos = pos - 1; } } Como “testar” isto? }sábado, 29 de outubro de 2011
  • sábado, 29 de outubro de 2011
  • Kent Beck “enviou” o TDD aos programadoressábado, 29 de outubro de 2011
  • É o fim dos nossos problemas?sábado, 29 de outubro de 2011
  • Eu sou um programador, não um tester... “Na minha máquina funciona”sábado, 29 de outubro de 2011
  • Meu código é difícil de testar...sábado, 29 de outubro de 2011
  • É trivial, não preciso testarsábado, 29 de outubro de 2011
  • Preciso de uma semana para executar os testes de regressãosábado, 29 de outubro de 2011
  • Eu não tenho tempo para automatizar os testessábado, 29 de outubro de 2011
  • Hipótese Sapir-Whorf “existe uma relação sistemática entre ascategorias gramaticais da língua e a forma de seusfalantes entenderem o mundo e se portarem dentro dele...” Na sua versão forte, pode ser considerada uma forma de determinismo lingüístico, embora o interesse dos psicólogos pela influência da linguagem nosábado, 29 de outubro de 2011
  • It’s all behaviour!!!sábado, 29 de outubro de 2011
  • BDD: Behaviour Driven Development “Escrevendo SOFTWARE e não código”sábado, 29 de outubro de 2011
  • Princípios do BDD It’s all behaviour Com objetivo de acelerar a cobrança do aluguel Como um cobrador Eu quero visualizar o total da dívida de um locatário Descrição da história (Wiki, JIRA, Tracker, Word)sábado, 29 de outubro de 2011
  • Princípios do BDD It’s all behaviour Assert.assertEquals (locatario.dividaTotal(), 17000,00); Testes automatizados de unidade e aceitaçãosábado, 29 de outubro de 2011
  • Princípios do BDD It’s all behaviour 1-) Devo um aluguel de R$1200,00 2-) Devo um aluguel de R$1200,00 3-) O total da dívida deve ser R$2400,00 Procedimento de Testessábado, 29 de outubro de 2011
  • Traduçãosábado, 29 de outubro de 2011
  • Tradução VOCÊ NÃO QUER FAZER ISTO!sábado, 29 de outubro de 2011
  • Linguagem Comum Title (one line describing the story)   Narrative: As a [role] I want [feature] So that [benefit]   Acceptance Criteria: (presented as Scenarios)   Scenario 1: Title Given [context]   And [some more context]... When  [event] Then  [outcome]   And [another outcome]...   Scenario 2: ...sábado, 29 de outubro de 2011
  • Linguagem Comum Dado (Given) uma conta de aluguel Quando (When) o locatário deve um aluguel no valor de R$1200,00 E (And) o locatário deve outro aluguel no valor de R$1200,00 Então (Then) o total da dívida é R$2400,00sábado, 29 de outubro de 2011
  • Falando a mesma linguagem.... Nós podemos nos entender melhor; Nós podemos nos aprofundar no entendimento do problema; E maximizar as chances de construirmos as coisas certas.sábado, 29 de outubro de 2011
  • Princípios do BDD Deliver stakeholder value Com objetivo de acelerar a cobrança do aluguel, por quê? Com objetivo de controlar melhor a cobrança de juros, por quê? Com objetivo de controlar melhor os meus resultados financeiros, BAZINGA!sábado, 29 de outubro de 2011
  • Redução de Custos Eu perco menos tempo e dinheiro construindo coisas que não são exatamente necessárias e investigando valores que me ajudam a priorizar corretamente!sábado, 29 de outubro de 2011
  • Princípios do BDD Enough is Enough Ficou fácil descobrir onde se inicia e termina uma funcionalidade. Parei de desperdiçar dinheiro com funcionalidades supérfluassábado, 29 de outubro de 2011
  • Detalhamento correto Dado (Given) uma conta de aluguel Quando (When) o locatario deve um aluguel no valor de R$1200,00 E (And) o locatário deve outro aluguel no valor de R$1200,00 Então (Then) o total da dívida é R$2400,00sábado, 29 de outubro de 2011
  • Detalhamento correto... Eu tenho algo para construir o mais rápido possível! Eu tenho algo para testar rapidamente!sábado, 29 de outubro de 2011
  • Diminuindo a Carga no Final do Sprintsábado, 29 de outubro de 2011
  • Explore no início Chance menor de ser surpreendido e tempo de descobrir mais problemas Bugs e novos cenários rapidamentesábado, 29 de outubro de 2011
  • SubProdutos do BDDsábado, 29 de outubro de 2011
  • Rede de Segurançasábado, 29 de outubro de 2011
  • Testes Automatizados Eu posso fazer modificações com confiança e velocidade Hummm… eu posso utilizar estes testes?sábado, 29 de outubro de 2011
  • Testes de Regressão Manualsábado, 29 de outubro de 2011
  • Propriedade Coletiva Features + Definição de Passossábado, 29 de outubro de 2011
  • Suíte de Regressão Automática Testes de regressão ficaram baratos! Posso gerar versões mais rapidamente Eu posso me focar em mais testes exploratórios!sábado, 29 de outubro de 2011
  • Especificação “Tradicional”sábado, 29 de outubro de 2011
  • Especificação executável Dado (Given) uma conta de aluguel Quando (When) o locatário deve um aluguel no valor de R$1200,00 E (And) o locatário deve outro aluguel no valor de R$1200,00 Então (Then) o total da dívida é R$2400,00sábado, 29 de outubro de 2011
  • Resumindo, porque BDD?sábado, 29 de outubro de 2011
  • Melhor entendimento do problema Chance de melhorar meu investimento Desenvolvimento mais eficiente Feedback rápido Documentação "viva"sábado, 29 de outubro de 2011
  • Melhor entendimento do problema Eu sei onde inicia, o que fazer em seguida e quando parar o desenvolvimento de uma feature Chance de construir algo rapidamente Rede de segurança para efetuar mudançassábado, 29 de outubro de 2011
  • Melhor entendimento do problema Software para testar mais rapidamente Mais tempo para testes exploratóriossábado, 29 de outubro de 2011
  • JBehavesábado, 29 de outubro de 2011
  • sábado, 29 de outubro de 2011
  • JBehave Title  (one  line  describing  the  story)  Narrative: As  a  [role] Advantages  of  the  “As  a  user,  I  want”   I  want  [feature] user  story  template,  by  Mike  Cohn So  that  [benefit]   Acceptance  Criteria:  (presented  as  Scenarios)   Scenario  1:  Title Given  [context]    And  [some  more  context]... When    [event] Cenários  descrevendo  os   Then    [outcome]    And  [another  outcome]... comportamentos  esperados.   Scenario  2:  ...sábado, 29 de outubro de 2011
  • JBehave Utilização das palavras chave dos cenários em texto puro; Criação classes para mapear os passos (Steps); Criação de classes para rodar os cenários, chamando os steps necessários;sábado, 29 de outubro de 2011
  • Live Coding - JBehavesábado, 29 de outubro de 2011
  • JBehave != BDDsábado, 29 de outubro de 2011
  • “All of these tools are great... but, in the end, tools are tools. While RSpec and Cucumber are optimized for BDD, using them doesnʼt automatically mean youʼre doing BDD" The RSpec Booksábado, 29 de outubro de 2011
  • Dúvidas?sábado, 29 de outubro de 2011
  • Eder Ignatowicz @ederignsábado, 29 de outubro de 2011
  • Bibliografia Apresentação baseado no trabalho de Brent Snooksábado, 29 de outubro de 2011