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 ?

Testes automatizados (2)

  • 1.
  • 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çãoentre 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 ● Umdos 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 ● Podemoscriar comportamentos personalizados que poderão ser reutilizados em todas as Features – ...homebehat/features/bootstrap/FeatureContext.php
  • 9.
  • 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 umterminal 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.
  • 14.