SlideShare une entreprise Scribd logo
1  sur  14
Testes
automatizados
utilizando BDD
OPTHS 2012
BDD
✔ BDD - Behavior Driven Development
✔ Desenvolvimento Guiado por Comportamento
✔ Técnica de desenvolvimento ágil que utiliza
linguagem padronizada para descrever o
comportamento do software.
✔ Potencializa a colaboração entre:
✔ Desenvolvedores
✔ Setores de qualidade
✔ Pessoas não-técnicas ou de negócios em um projeto
de software
Behat
● Behat é uma ferramenta que utiliza BDD
Site do projeto: http://behat.org
● Nele o teste descreve a história e a partir
dessa descrição, ela pode rodar como um
teste automatizado.
– Exemplo:
Dado que estou na tela de login
Quando eu informo o usuário
E eu informo a senha
E eu confirmo
Então eu deveria vizualizar a tela inicial
Mink
Simula a interação entre o browser e a aplicação web.
Site do projeto: http://mink.behat.org
// Carrega uma página no browser
$session->visit('http://www.consegi.gov.br/');
// Carrega outra página
$session->visit('http://www.serpro.gov.br')
// Usa os controles de histórico
$session->reload();
$session->back();
$session->forward();
Selenium Webdriver
● Um dos drivers de interface com os
navegadores.
● Aceita comandos e envia para o navegador
● Portável para a maioria dos navegadores
Navegadores e versões suportadas:
Firefox Chrome Opera IE
4 - 10 * 8 e 9 7 - 9
Sintaxe Gherkin
● Gherkin é o padrão de escrita utilizado pelo Behat para descrição dos
comportamentos
●
Utiliza edentação e palavras reservadas para definir a estrutura das
funcionalidades
● Features
– Cada funcionalidade deve ser descrita em um arquivo .feature
● Caminho: ...homebehat/features
– Cada Feature é composta por um grupo de Scenarios
Sintaxe Gherkin
● Estrutura:
Feature: Descrição concisa da funcionalidade
A fim de atingir um objetivo
Um ator específico
Deseja realizar uma ação que agregue valor ao negócio em questão
Scenario: Um situação determinável
Given alguma pré-condição
And outra pré-condição
When alguma ação do ator
And outra ação
Then alguma resposta testável é verificada
And outra verificação é realizada
Scenario: Outra situação
...
Feature Context
● Podemos criar comportamentos personalizados
que poderão ser reutilizados em todas as
Features
– ...homebehat/features/bootstrap/FeatureContext.php
Comunicação
Feature
Context
Driver
Navegadores
Vamos à prática!
● Abra a “Cheat Sheet” do Behat
– http://docs.behat.org/
● Configurando o Gedit com HighLight para o
Gherkin
– Pesquise no oráculo por: gedit gherkin highlight
– Abra o primeiro resultado:
http://ranskills.wordpress.com/2011/07/11/how-to-create
● Crie um arquivo com nome cadpinoquio.feature
dentro da pasta features
Primeiro Exemplo
@cadpinoquio @javascript
Scenario: Cadastro do Pinóquio
Afim de registrar um usuário no sistema
Qualquer usuário
Deseja inserir seus dados e verificar a confirmação
Given I am on "/pinoquio.html"
When I fill in "name" with "Exemplo"
And I fill in "email" with "exemplo@consegi.gov.br"
And I select "M" from "sex"
And I click in "#submit"
Then I should see "Cadastro efetuado com sucesso"
And I should see "Exemplo"
And I should see "exemplo@consegi.gov.br"
And I should see "M"
Testando...
● Abrir um terminal e digitar:
java -jar /home/consegi/selenium-server-
standalone-2.25.0.jar
● Abrir outro terminal e digitar:
cd ~/demo-behat
./bin/behat --tags=”@meuform”
Baby Steps
● Desenvolvendo
– Crie um arquivo /var/www/pinoquio.html
– Insira um conteúdo que resolva o primeiro erro do
teste
– Salve e rode o teste novamente
– Repita o ciclo até que o teste não possua erro.
Perguntas ?

Contenu connexe

Tendances

Seu Cliente no Controle! Testes ágeis
Seu Cliente no Controle! Testes ágeisSeu Cliente no Controle! Testes ágeis
Seu Cliente no Controle! Testes ágeisVanderson Silva
 
Grails: O Java em Alta Produtividade
Grails: O Java em Alta ProdutividadeGrails: O Java em Alta Produtividade
Grails: O Java em Alta ProdutividadeCleórbete Santos
 
Rapida apresentacao sobre o Grails
Rapida apresentacao sobre o GrailsRapida apresentacao sobre o Grails
Rapida apresentacao sobre o GrailsDiego Cavalcanti
 
Dojo iOS Básico - Aula 2
Dojo iOS Básico - Aula 2Dojo iOS Básico - Aula 2
Dojo iOS Básico - Aula 2Gustavo Barbosa
 
ANGULARJS: UM FRAMEWORK PARA FACILITAR SUA VIDA
ANGULARJS: UM FRAMEWORK PARA FACILITAR SUA VIDAANGULARJS: UM FRAMEWORK PARA FACILITAR SUA VIDA
ANGULARJS: UM FRAMEWORK PARA FACILITAR SUA VIDAWilson Mendes
 
Pagestackr - RejectConf SP 2007
Pagestackr - RejectConf SP 2007Pagestackr - RejectConf SP 2007
Pagestackr - RejectConf SP 2007George Guimarães
 
AngularJS - Just Digital
AngularJS - Just DigitalAngularJS - Just Digital
AngularJS - Just DigitalJust Digital
 
Criando plugins jQuery
Criando plugins jQueryCriando plugins jQuery
Criando plugins jQueryRicardo Coelho
 
Componentizando a Web com Polymer
Componentizando a Web com PolymerComponentizando a Web com Polymer
Componentizando a Web com PolymerStefan Horochovec
 

Tendances (11)

Grunt
GruntGrunt
Grunt
 
Seu Cliente no Controle! Testes ágeis
Seu Cliente no Controle! Testes ágeisSeu Cliente no Controle! Testes ágeis
Seu Cliente no Controle! Testes ágeis
 
Grails: O Java em Alta Produtividade
Grails: O Java em Alta ProdutividadeGrails: O Java em Alta Produtividade
Grails: O Java em Alta Produtividade
 
Rapida apresentacao sobre o Grails
Rapida apresentacao sobre o GrailsRapida apresentacao sobre o Grails
Rapida apresentacao sobre o Grails
 
Dojo iOS Básico - Aula 2
Dojo iOS Básico - Aula 2Dojo iOS Básico - Aula 2
Dojo iOS Básico - Aula 2
 
ANGULARJS: UM FRAMEWORK PARA FACILITAR SUA VIDA
ANGULARJS: UM FRAMEWORK PARA FACILITAR SUA VIDAANGULARJS: UM FRAMEWORK PARA FACILITAR SUA VIDA
ANGULARJS: UM FRAMEWORK PARA FACILITAR SUA VIDA
 
Pagestackr - RejectConf SP 2007
Pagestackr - RejectConf SP 2007Pagestackr - RejectConf SP 2007
Pagestackr - RejectConf SP 2007
 
AngularJS - Just Digital
AngularJS - Just DigitalAngularJS - Just Digital
AngularJS - Just Digital
 
Criando plugins jQuery
Criando plugins jQueryCriando plugins jQuery
Criando plugins jQuery
 
Componentizando a Web com Polymer
Componentizando a Web com PolymerComponentizando a Web com Polymer
Componentizando a Web com Polymer
 
Selenium - WebDriver
Selenium - WebDriverSelenium - WebDriver
Selenium - WebDriver
 

En vedette

BDD + PHP = behat!
BDD + PHP = behat!BDD + PHP = behat!
BDD + PHP = behat!Vitor Mattos
 
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
 
BDD (Behavior-Driven Development)
BDD (Behavior-Driven Development)BDD (Behavior-Driven Development)
BDD (Behavior-Driven Development)Renato Groff
 
DDD + BDD + TDD - RF 2015
DDD + BDD + TDD - RF 2015 DDD + BDD + TDD - RF 2015
DDD + BDD + TDD - RF 2015 Eduardo Bregaida
 
[GUTS-RS] Tendências de Teste de Software para 2016
[GUTS-RS] Tendências de Teste de Software para 2016[GUTS-RS] Tendências de Teste de Software para 2016
[GUTS-RS] Tendências de Teste de Software para 2016GUTS-RS
 
BDD in Action – principles, practices and real-world application
BDD in Action – principles, practices and real-world applicationBDD in Action – principles, practices and real-world application
BDD in Action – principles, practices and real-world applicationJohn Ferguson Smart Limited
 

En vedette (9)

BDD - aula
BDD - aulaBDD - aula
BDD - aula
 
Behaviour Driven Development
Behaviour Driven DevelopmentBehaviour Driven Development
Behaviour Driven Development
 
BDD + PHP = behat!
BDD + PHP = behat!BDD + PHP = behat!
BDD + PHP = behat!
 
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
 
BDD (Behavior-Driven Development)
BDD (Behavior-Driven Development)BDD (Behavior-Driven Development)
BDD (Behavior-Driven Development)
 
DDD + BDD + TDD - RF 2015
DDD + BDD + TDD - RF 2015 DDD + BDD + TDD - RF 2015
DDD + BDD + TDD - RF 2015
 
BDD: Cucumber + Selenium + Java
BDD: Cucumber + Selenium + JavaBDD: Cucumber + Selenium + Java
BDD: Cucumber + Selenium + Java
 
[GUTS-RS] Tendências de Teste de Software para 2016
[GUTS-RS] Tendências de Teste de Software para 2016[GUTS-RS] Tendências de Teste de Software para 2016
[GUTS-RS] Tendências de Teste de Software para 2016
 
BDD in Action – principles, practices and real-world application
BDD in Action – principles, practices and real-world applicationBDD in Action – principles, practices and real-world application
BDD in Action – principles, practices and real-world application
 

Similaire à Testes automatizados com BDD e Behat

Testes automatizados cp
Testes automatizados cpTestes automatizados cp
Testes automatizados cpcesarvianna
 
2017 08-11 - Androidos V - Minicurso - Introdução ao android
2017 08-11 - Androidos V - Minicurso - Introdução ao android2017 08-11 - Androidos V - Minicurso - Introdução ao android
2017 08-11 - Androidos V - Minicurso - Introdução ao androidMessias Batista
 
Qualidade em projetos PHP - SoLiSC 2011
Qualidade em projetos PHP - SoLiSC 2011Qualidade em projetos PHP - SoLiSC 2011
Qualidade em projetos PHP - SoLiSC 2011Luís Cobucci
 
1º Meetup Zabbix Meetup do Recife: Aécio Pires - Gerenciando Zabbix com o Sal...
1º Meetup Zabbix Meetup do Recife: Aécio Pires - Gerenciando Zabbix com o Sal...1º Meetup Zabbix Meetup do Recife: Aécio Pires - Gerenciando Zabbix com o Sal...
1º Meetup Zabbix Meetup do Recife: Aécio Pires - Gerenciando Zabbix com o Sal...Zabbix BR
 
Gerenciando o Zabbix com o SaltStack
Gerenciando o Zabbix com o SaltStackGerenciando o Zabbix com o SaltStack
Gerenciando o Zabbix com o SaltStackAécio Pires
 
Qualidade em projetos PHP - PHPSC Conf 2011
Qualidade em projetos PHP - PHPSC Conf 2011Qualidade em projetos PHP - PHPSC Conf 2011
Qualidade em projetos PHP - PHPSC Conf 2011Luís Cobucci
 
Gerenciando o Zabbix com o SaltStack
Gerenciando o Zabbix com o SaltStackGerenciando o Zabbix com o SaltStack
Gerenciando o Zabbix com o SaltStackAécio Pires
 
Agile Brazil 2018
Agile Brazil 2018Agile Brazil 2018
Agile Brazil 2018Karla Silva
 
Android DevConference - Automatizando testes sem sofrimento
Android DevConference - Automatizando testes sem sofrimentoAndroid DevConference - Automatizando testes sem sofrimento
Android DevConference - Automatizando testes sem sofrimentoiMasters
 
pepinos do cliente no código de testes da aplicação com OSS
pepinos do cliente no código de testes da aplicação com OSSpepinos do cliente no código de testes da aplicação com OSS
pepinos do cliente no código de testes da aplicação com OSSRodrigo Urubatan
 
[Karla e Larissa] Agile Brazil 2018
[Karla e Larissa] Agile Brazil 2018[Karla e Larissa] Agile Brazil 2018
[Karla e Larissa] Agile Brazil 2018Larissa Soares
 
Demoiselle Behave - Parte 1
Demoiselle Behave - Parte 1Demoiselle Behave - Parte 1
Demoiselle Behave - Parte 1Vanderson Silva
 
Pense no futuro: PHP com Zend Framework
Pense no futuro: PHP com Zend FrameworkPense no futuro: PHP com Zend Framework
Pense no futuro: PHP com Zend FrameworkFlávio Lisboa
 
Testes automatizados com alto valor de negócio e baixo custo de manutenção
Testes automatizados com alto valor de negócio e baixo custo de manutençãoTestes automatizados com alto valor de negócio e baixo custo de manutenção
Testes automatizados com alto valor de negócio e baixo custo de manutençãoTaise Dias da Silva
 
BDD on Mobile: Utilizando Cucumber e Appium para executar testes automatizado...
BDD on Mobile: Utilizando Cucumber e Appium para executar testes automatizado...BDD on Mobile: Utilizando Cucumber e Appium para executar testes automatizado...
BDD on Mobile: Utilizando Cucumber e Appium para executar testes automatizado...minastestingconference
 
Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...
Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...
Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...Daniel Makiyama
 

Similaire à Testes automatizados com BDD e Behat (20)

Testes automatizados cp
Testes automatizados cpTestes automatizados cp
Testes automatizados cp
 
Teste de software
Teste de softwareTeste de software
Teste de software
 
2017 08-11 - Androidos V - Minicurso - Introdução ao android
2017 08-11 - Androidos V - Minicurso - Introdução ao android2017 08-11 - Androidos V - Minicurso - Introdução ao android
2017 08-11 - Androidos V - Minicurso - Introdução ao android
 
Qualidade em projetos PHP - SoLiSC 2011
Qualidade em projetos PHP - SoLiSC 2011Qualidade em projetos PHP - SoLiSC 2011
Qualidade em projetos PHP - SoLiSC 2011
 
1º Meetup Zabbix Meetup do Recife: Aécio Pires - Gerenciando Zabbix com o Sal...
1º Meetup Zabbix Meetup do Recife: Aécio Pires - Gerenciando Zabbix com o Sal...1º Meetup Zabbix Meetup do Recife: Aécio Pires - Gerenciando Zabbix com o Sal...
1º Meetup Zabbix Meetup do Recife: Aécio Pires - Gerenciando Zabbix com o Sal...
 
Gerenciando o Zabbix com o SaltStack
Gerenciando o Zabbix com o SaltStackGerenciando o Zabbix com o SaltStack
Gerenciando o Zabbix com o SaltStack
 
Qualidade em projetos PHP - PHPSC Conf 2011
Qualidade em projetos PHP - PHPSC Conf 2011Qualidade em projetos PHP - PHPSC Conf 2011
Qualidade em projetos PHP - PHPSC Conf 2011
 
Gerenciando o Zabbix com o SaltStack
Gerenciando o Zabbix com o SaltStackGerenciando o Zabbix com o SaltStack
Gerenciando o Zabbix com o SaltStack
 
Agile Brazil 2018
Agile Brazil 2018Agile Brazil 2018
Agile Brazil 2018
 
Introdução ao BDD com Gherkin
Introdução ao BDD com GherkinIntrodução ao BDD com Gherkin
Introdução ao BDD com Gherkin
 
Android DevConference - Automatizando testes sem sofrimento
Android DevConference - Automatizando testes sem sofrimentoAndroid DevConference - Automatizando testes sem sofrimento
Android DevConference - Automatizando testes sem sofrimento
 
pepinos do cliente no código de testes da aplicação com OSS
pepinos do cliente no código de testes da aplicação com OSSpepinos do cliente no código de testes da aplicação com OSS
pepinos do cliente no código de testes da aplicação com OSS
 
E so mais um campinho na tela
E so mais um campinho na telaE so mais um campinho na tela
E so mais um campinho na tela
 
Mini curso JBC
Mini curso JBCMini curso JBC
Mini curso JBC
 
[Karla e Larissa] Agile Brazil 2018
[Karla e Larissa] Agile Brazil 2018[Karla e Larissa] Agile Brazil 2018
[Karla e Larissa] Agile Brazil 2018
 
Demoiselle Behave - Parte 1
Demoiselle Behave - Parte 1Demoiselle Behave - Parte 1
Demoiselle Behave - Parte 1
 
Pense no futuro: PHP com Zend Framework
Pense no futuro: PHP com Zend FrameworkPense no futuro: PHP com Zend Framework
Pense no futuro: PHP com Zend Framework
 
Testes automatizados com alto valor de negócio e baixo custo de manutenção
Testes automatizados com alto valor de negócio e baixo custo de manutençãoTestes automatizados com alto valor de negócio e baixo custo de manutenção
Testes automatizados com alto valor de negócio e baixo custo de manutenção
 
BDD on Mobile: Utilizando Cucumber e Appium para executar testes automatizado...
BDD on Mobile: Utilizando Cucumber e Appium para executar testes automatizado...BDD on Mobile: Utilizando Cucumber e Appium para executar testes automatizado...
BDD on Mobile: Utilizando Cucumber e Appium para executar testes automatizado...
 
Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...
Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...
Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...
 

Testes automatizados com BDD e Behat

  • 2. BDD ✔ BDD - Behavior Driven Development ✔ Desenvolvimento Guiado por Comportamento ✔ Técnica de desenvolvimento ágil que utiliza linguagem padronizada para descrever o comportamento do software. ✔ Potencializa a colaboração entre: ✔ Desenvolvedores ✔ Setores de qualidade ✔ Pessoas não-técnicas ou de negócios em um projeto de software
  • 3. Behat ● Behat é uma ferramenta que utiliza BDD Site do projeto: http://behat.org ● Nele o teste descreve a história e a partir dessa descrição, ela pode rodar como um teste automatizado. – Exemplo: Dado que estou na tela de login Quando eu informo o usuário E eu informo a senha E eu confirmo Então eu deveria vizualizar a tela inicial
  • 4. Mink Simula a interação entre o browser e a aplicação web. Site do projeto: http://mink.behat.org // Carrega uma página no browser $session->visit('http://www.consegi.gov.br/'); // Carrega outra página $session->visit('http://www.serpro.gov.br') // Usa os controles de histórico $session->reload(); $session->back(); $session->forward();
  • 5. Selenium Webdriver ● Um dos drivers de interface com os navegadores. ● Aceita comandos e envia para o navegador ● Portável para a maioria dos navegadores Navegadores e versões suportadas: Firefox Chrome Opera IE 4 - 10 * 8 e 9 7 - 9
  • 6. Sintaxe Gherkin ● Gherkin é o padrão de escrita utilizado pelo Behat para descrição dos comportamentos ● Utiliza edentação e palavras reservadas para definir a estrutura das funcionalidades ● Features – Cada funcionalidade deve ser descrita em um arquivo .feature ● Caminho: ...homebehat/features – Cada Feature é composta por um grupo de Scenarios
  • 7. Sintaxe Gherkin ● Estrutura: Feature: Descrição concisa da funcionalidade A fim de atingir um objetivo Um ator específico Deseja realizar uma ação que agregue valor ao negócio em questão Scenario: Um situação determinável Given alguma pré-condição And outra pré-condição When alguma ação do ator And outra ação Then alguma resposta testável é verificada And outra verificação é realizada Scenario: Outra situação ...
  • 8. Feature Context ● Podemos criar comportamentos personalizados que poderão ser reutilizados em todas as Features – ...homebehat/features/bootstrap/FeatureContext.php
  • 10. Vamos à prática! ● Abra a “Cheat Sheet” do Behat – http://docs.behat.org/ ● Configurando o Gedit com HighLight para o Gherkin – Pesquise no oráculo por: gedit gherkin highlight – Abra o primeiro resultado: http://ranskills.wordpress.com/2011/07/11/how-to-create ● Crie um arquivo com nome cadpinoquio.feature dentro da pasta features
  • 11. Primeiro Exemplo @cadpinoquio @javascript Scenario: Cadastro do Pinóquio Afim de registrar um usuário no sistema Qualquer usuário Deseja inserir seus dados e verificar a confirmação Given I am on "/pinoquio.html" When I fill in "name" with "Exemplo" And I fill in "email" with "exemplo@consegi.gov.br" And I select "M" from "sex" And I click in "#submit" Then I should see "Cadastro efetuado com sucesso" And I should see "Exemplo" And I should see "exemplo@consegi.gov.br" And I should see "M"
  • 12. Testando... ● Abrir um terminal e digitar: java -jar /home/consegi/selenium-server- standalone-2.25.0.jar ● Abrir outro terminal e digitar: cd ~/demo-behat ./bin/behat --tags=”@meuform”
  • 13. Baby Steps ● Desenvolvendo – Crie um arquivo /var/www/pinoquio.html – Insira um conteúdo que resolva o primeiro erro do teste – Salve e rode o teste novamente – Repita o ciclo até que o teste não possua erro.