SlideShare uma empresa Scribd logo
1 de 96
Testando
sua aplicação
com BDD
Behavior Driven Development
Leonn Leite
Lenon Leite Lenin Leite
Castelo de areia espectativa
Expectativa
Castelo de areia espectativa
Expectativa mínima
realidade
Realidade
Indecisão
Clientes também são
indecisos
Tudo já
nasce atrasado
Sempre há
Problema
na comunicação
No RS
No DF
Metodologia Ágil
Porque é importante usar
testes?
Sem testes Com testes
Qual seria a solução?!
•Definir os valores do negócio (backlog)
•Priorizar as coisas baseando nas necessidades
•Descrever os cenários
•Só depois, implementar
User Stories
Ubiquitous Language
gherkin
Dan
North
TDD
TDD
BDD
“Behaviour” is a more useful
word, than “test” - Dan North,
2003
Escrevendo uma
feature
Escrevendo uma
historia
Com linguagem
gherkin
Pode ser escrito à mão
O que vamos fazer?!
Como queremos?!
•Escolhemos a operação
•Adicionamos números
Ex: somar. 1,2,4,5,6…
getcomposer.org
composer require behat/behat
download behat.phar
Iniciando o projeto com behat
vendor/bin/behat --init
Executando os testes
vendor/bin/behat
Resultado dos testes
• Passed
• Failed
• Pending
• Undefined
• Skipped
Jeito fácil
vendor/bin/behat --append-snippets
Annotations
@given
@when
@then
@and
@but
E também temos:
@BeforeSuite, @AfterSuite
@BeforeFeature, @AfterFeature
@BeforeScenario, @AfterScenario
@BeforeStep, @AfterStep
E como ficou nos
testes?
Resultado dos testes
• Passed
• Failed
• Pending
• Undefined
• Skipped
Mas você não usa os assets?
Cade o TDD?
Não, mas é possivel
composer require phpunit/phpunit
E se eu quiser adicionar mais
features…
Vou ter que colocar tudo no
FeatureContext.php?
|> Daqui
|> Para cá
Configurar o
behat.yml
Seria legal se eu conseguisse
garantir que minha feature
está de acordo com o
esperado.
Backend e frontend…
"One of the most important
parts in the web is a browser.”
behat/mink
Goutte
Selenium
Selenium2
BrowserKit
Zombie
Sahi
WUnit
behat/mink
composer require
behat/mink-goutte-driver
composer require
behat/mink-extension
phprs.feature
BDD não é
bala de prata
Obrigato
Dúvidas?
https://github.com/Sylius/Sylius
Ótimo exemplo
Leonn Leite
@leonnleite
/leonnleite
+leonnleite
Github.com/leonnleite/behat-talk
Ps: nunca fui para Las Vegas

Mais conteúdo relacionado

Semelhante a Testando aplicações com BDD

Sobre TDD - Tech Friday da Everis Uberlândia
Sobre TDD - Tech Friday da Everis UberlândiaSobre TDD - Tech Friday da Everis Uberlândia
Sobre TDD - Tech Friday da Everis UberlândiaRogerio Fontes
 
Domain Driven Design com Python
Domain Driven Design com PythonDomain Driven Design com Python
Domain Driven Design com PythonFrederico Cabral
 
Teste sua aplicação antes que ela teste você
Teste sua aplicação antes que ela teste vocêTeste sua aplicação antes que ela teste você
Teste sua aplicação antes que ela teste vocêTiago Link
 
Apresentando Extreme Programming
Apresentando Extreme ProgrammingApresentando Extreme Programming
Apresentando Extreme ProgrammingMilfont Consulting
 
BDD e TDD na prática com SpecFlow e Visual Studio 2012
BDD e TDD na prática com SpecFlow e Visual Studio 2012BDD e TDD na prática com SpecFlow e Visual Studio 2012
BDD e TDD na prática com SpecFlow e Visual Studio 2012Igor Abade
 
Arquitetura de Software e o DNAD2013
Arquitetura de Software e o DNAD2013Arquitetura de Software e o DNAD2013
Arquitetura de Software e o DNAD2013André Borgonovo
 
Integração do Zabbix com Testes Automatizados
Integração do Zabbix com Testes AutomatizadosIntegração do Zabbix com Testes Automatizados
Integração do Zabbix com Testes AutomatizadosRobert Silva
 
Agile Brazil 2018 BDD - a chave para melhorar a comunicação entre stakehold...
Agile Brazil 2018   BDD - a chave para melhorar a comunicação entre stakehold...Agile Brazil 2018   BDD - a chave para melhorar a comunicação entre stakehold...
Agile Brazil 2018 BDD - a chave para melhorar a comunicação entre stakehold...Allan Ferreira
 
5 dicas para estruturar seu teste de performance
5 dicas para estruturar seu teste de performance5 dicas para estruturar seu teste de performance
5 dicas para estruturar seu teste de performanceAriane Izac
 
Os Benefícios dos testes no desenvolvimento de software
Os Benefícios dos testes no desenvolvimento de softwareOs Benefícios dos testes no desenvolvimento de software
Os Benefícios dos testes no desenvolvimento de softwareDextra Sistemas / Etec Itu
 
Behaviour driven development, com jbehave
Behaviour driven development, com jbehaveBehaviour driven development, com jbehave
Behaviour driven development, com jbehaveMarcelo Zeferino
 
Boas práticas no desenvolvimento de software através do uso de TDD
Boas práticas no desenvolvimento de software através do uso de TDDBoas práticas no desenvolvimento de software através do uso de TDD
Boas práticas no desenvolvimento de software através do uso de TDDJony Ferreira dos Santos
 

Semelhante a Testando aplicações com BDD (20)

Bdd e ci
Bdd e ciBdd e ci
Bdd e ci
 
Sobre TDD - Tech Friday da Everis Uberlândia
Sobre TDD - Tech Friday da Everis UberlândiaSobre TDD - Tech Friday da Everis Uberlândia
Sobre TDD - Tech Friday da Everis Uberlândia
 
Domain Driven Design com Python
Domain Driven Design com PythonDomain Driven Design com Python
Domain Driven Design com Python
 
Xp - extreme programing
Xp - extreme programingXp - extreme programing
Xp - extreme programing
 
Teste sua aplicação antes que ela teste você
Teste sua aplicação antes que ela teste vocêTeste sua aplicação antes que ela teste você
Teste sua aplicação antes que ela teste você
 
Tdd On Rails
Tdd On RailsTdd On Rails
Tdd On Rails
 
Apresentando Extreme Programming
Apresentando Extreme ProgrammingApresentando Extreme Programming
Apresentando Extreme Programming
 
Introdução ao TDD
Introdução ao TDDIntrodução ao TDD
Introdução ao TDD
 
Criando uma Arquitetura Testável
Criando uma Arquitetura TestávelCriando uma Arquitetura Testável
Criando uma Arquitetura Testável
 
Teste de software
Teste de softwareTeste de software
Teste de software
 
BDD em Ação - Testadores 2015
BDD em Ação - Testadores 2015BDD em Ação - Testadores 2015
BDD em Ação - Testadores 2015
 
BDD e TDD na prática com SpecFlow e Visual Studio 2012
BDD e TDD na prática com SpecFlow e Visual Studio 2012BDD e TDD na prática com SpecFlow e Visual Studio 2012
BDD e TDD na prática com SpecFlow e Visual Studio 2012
 
Arquitetura de Software e o DNAD2013
Arquitetura de Software e o DNAD2013Arquitetura de Software e o DNAD2013
Arquitetura de Software e o DNAD2013
 
Domain Driven Design
Domain Driven DesignDomain Driven Design
Domain Driven Design
 
Integração do Zabbix com Testes Automatizados
Integração do Zabbix com Testes AutomatizadosIntegração do Zabbix com Testes Automatizados
Integração do Zabbix com Testes Automatizados
 
Agile Brazil 2018 BDD - a chave para melhorar a comunicação entre stakehold...
Agile Brazil 2018   BDD - a chave para melhorar a comunicação entre stakehold...Agile Brazil 2018   BDD - a chave para melhorar a comunicação entre stakehold...
Agile Brazil 2018 BDD - a chave para melhorar a comunicação entre stakehold...
 
5 dicas para estruturar seu teste de performance
5 dicas para estruturar seu teste de performance5 dicas para estruturar seu teste de performance
5 dicas para estruturar seu teste de performance
 
Os Benefícios dos testes no desenvolvimento de software
Os Benefícios dos testes no desenvolvimento de softwareOs Benefícios dos testes no desenvolvimento de software
Os Benefícios dos testes no desenvolvimento de software
 
Behaviour driven development, com jbehave
Behaviour driven development, com jbehaveBehaviour driven development, com jbehave
Behaviour driven development, com jbehave
 
Boas práticas no desenvolvimento de software através do uso de TDD
Boas práticas no desenvolvimento de software através do uso de TDDBoas práticas no desenvolvimento de software através do uso de TDD
Boas práticas no desenvolvimento de software através do uso de TDD
 

Mais de Leonn Leite

Do legado ao DDD
Do legado ao DDDDo legado ao DDD
Do legado ao DDDLeonn Leite
 
As maravilhas do service worker
As maravilhas do service workerAs maravilhas do service worker
As maravilhas do service workerLeonn Leite
 
Como progressive web apps pode mudar a vida do seu site
Como progressive web apps pode mudar a vida do seu siteComo progressive web apps pode mudar a vida do seu site
Como progressive web apps pode mudar a vida do seu siteLeonn Leite
 
Identifique brechas, proteja sua aplicação | Php avenger e octopus
Identifique brechas, proteja sua aplicação | Php avenger e octopusIdentifique brechas, proteja sua aplicação | Php avenger e octopus
Identifique brechas, proteja sua aplicação | Php avenger e octopusLeonn Leite
 
Programando Melhor - Flisol
Programando Melhor - FlisolProgramando Melhor - Flisol
Programando Melhor - FlisolLeonn Leite
 
O poder do crowdfunding
O poder do crowdfundingO poder do crowdfunding
O poder do crowdfundingLeonn Leite
 

Mais de Leonn Leite (6)

Do legado ao DDD
Do legado ao DDDDo legado ao DDD
Do legado ao DDD
 
As maravilhas do service worker
As maravilhas do service workerAs maravilhas do service worker
As maravilhas do service worker
 
Como progressive web apps pode mudar a vida do seu site
Como progressive web apps pode mudar a vida do seu siteComo progressive web apps pode mudar a vida do seu site
Como progressive web apps pode mudar a vida do seu site
 
Identifique brechas, proteja sua aplicação | Php avenger e octopus
Identifique brechas, proteja sua aplicação | Php avenger e octopusIdentifique brechas, proteja sua aplicação | Php avenger e octopus
Identifique brechas, proteja sua aplicação | Php avenger e octopus
 
Programando Melhor - Flisol
Programando Melhor - FlisolProgramando Melhor - Flisol
Programando Melhor - Flisol
 
O poder do crowdfunding
O poder do crowdfundingO poder do crowdfunding
O poder do crowdfunding
 

Testando aplicações com BDD

Notas do Editor

  1. Para quem não conhece, esse é o Manny Wilson Ele também é frances Vou falar um pouco de BDD – Behavior Driver Developer (ingles sulafricano) 1)
  2. -Arquitetos -Lenin e do Lenon (depois eu te explico o porque). -Certificado zend. Além disso sou certificado scrum master pela Scrum Alliance . - Sou evangelista php e phpDF - Mais que raios é BDD?
  3. Mas para isso… vamos começar devagar
  4. Podemos aceitar isso
  5. Isso acontece por inumeros motivos Vamos ver alguns deles aqui… Exemplificar
  6. Para você pode ser facil decidir entre o Xerife Woody, aquele velho e querido brinquedo Ou o Buzz Light ear, do comando estelar um tem um chapeu maneiro, puxa a corda e fala. O outro solta laser pelo braço e voa… Para você pode ser facil, mas não para Andy.
  7. Não sabem o que querem E mudam toda hora os requisitos.
  8. TUDO É PRA ONTEM Sistemas ja nascem atrasados Quando não tem tempo, a primeira coisa que corta é o que? TESTES
  9. Um outro problema é o telefone sem fio MAS É SÓ ISSO?
  10. Um outro problema é o telefone sem fio MAS É SÓ ISSO?
  11. Um outro problema é o telefone sem fio MAS É SÓ ISSO?
  12. Equilibrio entre pouco tempo e muita mudança. Diminui interlocutores – Melhora a comunicação (telefone sem fio) XP foi um dos primeiros a incentivar testes unitários automatizados
  13. User story Como <a> Eu quero <b> Para que <c> Podem ser escritas a mão
  14. Vamos fazer um acordo? Unificar a linguagem? Vamos ubiquitous language (linguagem ubíqua) Linguagem baseada no domínio
  15. Dan North, criador do BDD – behavor drive developer jbehave desenvolvimento orientado a comportamento
  16. Tá Mas e no PHP? O que isso tem a ver? Como faremos?
  17. Framework de BDD para php Funciona com php 5.3+ Ele é inspirado no cucumber do ruby
  18. Red – Green – Refactor Escreva um teste falho Escreva um teste de sucesso Identifique pontos de melhora
  19. Não é mais feature É história
  20. Não é mais feature É história #language: pt Funcionalidade: Descrição da feature Com o objetivo de … Como … Eu preciso … Cenário: título do primeiro cenário Dado algum contexto inicial, Quando ocorre um evento, Então verifique alguns resultados. Cenário: título do segundo cenário Dado algum contexto inicial, Quando ocorre um evneto, Então verifique alguns resultados.
  21. O cliente mesmo pode escrever as features Pode ser escrito a mão E esse documento, já vai ser a documentação do sistema O sistema nasce documentado :) Vamos instalar o behat?
  22. Instalando Composer.phar require behat/behat
  23. Download do behat.phar
  24. Iniciando um projeto
  25. Feature
  26. Como se executa? Simples assim
  27. Resultado dos testes
  28. Annotations @given @when @then @and @but
  29. Feature
  30. Feature
  31. Feature
  32. Feature
  33. Feature
  34. Feature
  35. Feature
  36. Feature
  37. Feature
  38. Feature
  39. Feature
  40. E também temos: @BeforeFeature, @AfterFeature @BeforeScenario, @AfterScenario @BeforeStep, @AfterStep
  41. Feature
  42. Resultado dos testes
  43. Lembram das cores? Existe 2 skipped e dois pendentes
  44. Exemplo de transaction com @beforeFeature e @afterFeature
  45. adicionando o velho e querido phpunit
  46. se observamos, o metodo traráONomero faz um assets o segundo cenário, traz um erro proposital
  47. adicionando o velho e querido phpunit
  48. adicionando o velho e querido phpunit
  49. obrigado