BDD - Além do Hello World

59
BDD além do Hello World #TDC2011 Goiania Eder Ignatowicz sábado, 29 de outubro de 2011

description

Palestra apresentada no #TDC2011 Goiânia.Desenvolvimento Software ao invés de código.

Transcript of BDD - Além do Hello World

Page 1: BDD - Além do Hello World

BDD além do Hello World

#TDC2011 GoianiaEder Ignatowicz

sábado, 29 de outubro de 2011

Page 2: BDD - Além do Hello World

Audiência #TDC2011Trilha de Testes

PO / Cliente

sábado, 29 de outubro de 2011

Page 3: BDD - Além do Hello World

Audiência #TDC2011Trilha de Testes

PO / Cliente Tester

sábado, 29 de outubro de 2011

Page 4: BDD - Além do Hello World

Audiência #TDC2011Trilha de Testes

PO / Cliente DeveloperTester

sábado, 29 de outubro de 2011

Page 5: BDD - Além do Hello World

Eder Ignatowicz

@ederign

Developer?

sábado, 29 de outubro de 2011

Page 6: BDD - Além do Hello World

Eder Ignatowicz

@ederign

Multidisciplinar

sábado, 29 de outubro de 2011

Page 7: BDD - Além do Hello World

Eder Ignatowicz

@ederign

sábado, 29 de outubro de 2011

Page 8: BDD - Além do Hello World

sábado, 29 de outubro de 2011

Page 9: BDD - Além do Hello World

sábado, 29 de outubro de 2011

Page 10: BDD - Além do Hello World

No princípio...

sábado, 29 de outubro de 2011

Page 11: BDD - Além do Hello World

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

Page 12: BDD - Além do Hello World

sábado, 29 de outubro de 2011

Page 13: BDD - Além do Hello World

Kent Beck “enviou” o TDD aos programadores

sábado, 29 de outubro de 2011

Page 14: BDD - Além do Hello World

É o fim dos nossos problemas?

sábado, 29 de outubro de 2011

Page 15: BDD - Além do Hello World

Eu sou um programador, não um tester...

“Na minha máquina funciona”

sábado, 29 de outubro de 2011

Page 16: BDD - Além do Hello World

Meu código é difícil de testar...

sábado, 29 de outubro de 2011

Page 17: BDD - Além do Hello World

É trivial, não preciso testar

sábado, 29 de outubro de 2011

Page 18: BDD - Além do Hello World

Preciso de uma semana para executar os testes de

regressão

sábado, 29 de outubro de 2011

Page 19: BDD - Além do Hello World

Eu não tenho tempo para automatizar os testes

sábado, 29 de outubro de 2011

Page 20: BDD - Além do Hello World

Hipótese Sapir-Whorf

“existe uma relação sistemática entre as categorias gramaticais da língua e a forma de seus falantes 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 no

sábado, 29 de outubro de 2011

Page 21: BDD - Além do Hello World

It’s all behaviour!!!

sábado, 29 de outubro de 2011

Page 22: BDD - Além do Hello World

BDD: Behaviour Driven Development

“Escrevendo SOFTWARE e não código”

sábado, 29 de outubro de 2011

Page 23: BDD - Além do Hello World

Princípios do BDDIt’s all behaviour

Descrição da história (Wiki, JIRA, Tracker, Word)

Com objetivo de acelerar a cobrança do aluguel

Como um cobradorEu quero visualizar o total da dívida de um locatário

sábado, 29 de outubro de 2011

Page 24: BDD - Além do Hello World

Princípios do BDDIt’s all behaviour

Testes automatizados de unidade e aceitação

Assert.assertEquals(locatario.dividaTotal(), 17000,00);

sábado, 29 de outubro de 2011

Page 25: BDD - Além do Hello World

Princípios do BDDIt’s all behaviour

Procedimento de Testes

1-) Devo um aluguel de R$1200,002-) Devo um aluguel de R$1200,003-) O total da dívida deve serR$2400,00

sábado, 29 de outubro de 2011

Page 26: BDD - Além do Hello World

Tradução

sábado, 29 de outubro de 2011

Page 27: BDD - Além do Hello World

Tradução

VOCÊ NÃO QUER FAZER

ISTO!sábado, 29 de outubro de 2011

Page 28: BDD - Além do Hello World

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: TitleGiven [context]  And [some more context]...When  [event]Then  [outcome]  And [another outcome]... Scenario 2: ...

sábado, 29 de outubro de 2011

Page 29: BDD - Além do Hello World

Linguagem ComumDado (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,00

sábado, 29 de outubro de 2011

Page 30: BDD - Além do Hello World

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

Page 31: BDD - Além do Hello World

Princípios do BDDDeliver 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

Page 32: BDD - Além do Hello World

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

Page 33: BDD - Além do Hello World

Princípios do BDDEnough is Enough

Ficou fácil descobrir onde se inicia e termina uma funcionalidade.

Parei de desperdiçar dinheiro com funcionalidades supérfluas

sábado, 29 de outubro de 2011

Page 34: BDD - Além do Hello World

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,00

sábado, 29 de outubro de 2011

Page 35: BDD - Além do Hello World

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

Page 36: BDD - Além do Hello World

Diminuindo a Carga no Final do Sprint

sábado, 29 de outubro de 2011

Page 37: BDD - Além do Hello World

Explore no início

Bugs e novos cenários rapidamente

Chance menor de ser surpreendido e tempo de descobrir mais problemas

sábado, 29 de outubro de 2011

Page 38: BDD - Além do Hello World

SubProdutos do BDD

sábado, 29 de outubro de 2011

Page 39: BDD - Além do Hello World

Rede de Segurançasábado, 29 de outubro de 2011

Page 40: BDD - Além do Hello World

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

Page 41: BDD - Além do Hello World

Testes de Regressão Manual

sábado, 29 de outubro de 2011

Page 42: BDD - Além do Hello World

Propriedade Coletiva

Features + Definição de Passos

sábado, 29 de outubro de 2011

Page 43: BDD - Além do Hello World

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

Page 44: BDD - Além do Hello World

Especificação “Tradicional”

sábado, 29 de outubro de 2011

Page 45: BDD - Além do Hello World

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,00

sábado, 29 de outubro de 2011

Page 46: BDD - Além do Hello World

Resumindo, porque BDD?

sábado, 29 de outubro de 2011

Page 47: BDD - Além do Hello World

Melhor entendimento do problemaChance de melhorar meu investimento

Desenvolvimento mais eficienteFeedback rápido

Documentação "viva"

sábado, 29 de outubro de 2011

Page 48: BDD - Além do Hello World

Melhor entendimento do problemaEu sei onde inicia, o que fazer em

seguida e quando parar o desenvolvimento de uma feature

Chance de construir algo rapidamenteRede de segurança para efetuar

mudanças

sábado, 29 de outubro de 2011

Page 49: BDD - Além do Hello World

Melhor entendimento do problemaSoftware para testar mais

rapidamenteMais tempo para testes

exploratórios

sábado, 29 de outubro de 2011

Page 50: BDD - Além do Hello World

JBehave

sábado, 29 de outubro de 2011

Page 51: BDD - Além do Hello World

sábado, 29 de outubro de 2011

Page 52: BDD - Além do Hello World

JBehave

Title  (one  line  describing  the  story)

 Narrative:As  a  [role]I  want  [feature]So  that  [benefit]  Acceptance  Criteria:  (presented  as  Scenarios)  Scenario  1:  TitleGiven  [context]    And  [some  more  context]...When    [event]Then    [outcome]    And  [another  outcome]...  Scenario  2:  ...

Advantages  of  the  “As  a  user,  I  want”  user  story  template,  by  Mike  Cohn

Cenários  descrevendo  os  comportamentos  esperados.

sábado, 29 de outubro de 2011

Page 53: BDD - Além do Hello World

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

Page 54: BDD - Além do Hello World

Live Coding - JBehave

sábado, 29 de outubro de 2011

Page 55: BDD - Além do Hello World

JBehave != BDD

sábado, 29 de outubro de 2011

Page 56: BDD - Além do Hello World

“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 Book

sábado, 29 de outubro de 2011

Page 57: BDD - Além do Hello World

Dúvidas?

sábado, 29 de outubro de 2011

Page 58: BDD - Além do Hello World

Eder Ignatowicz

@ederign

sábado, 29 de outubro de 2011

Page 59: BDD - Além do Hello World

Bibliografia

Apresentação baseado no trabalho de Brent Snook

sábado, 29 de outubro de 2011