BDD com specflow e selenium webdriver

Preview:

DESCRIPTION

Apresentação sobre BDD com specflow e selenium webdriver

Citation preview

Behaviour-Driven DevelopmentBDD

Cristian MathiasFelipe Foliatti

Desenvolvido em 2003, por Dan North como uma resposta ao TDD.

Reduz a distância entre negócio e tecnologia.Utiliza um vocabulário comum.

Foco na entrega de valor.

BDD é a “documentação viva”.

GHERKIN

Garante um vocabulário simples e consistente para descrever

cenários reais de funcionalidades.

• Funcionalidade

• Contexto

• Cenário

• Quando

• Então

• E

• Ou

• Esquema de Cenário

• Exemplos

Funcionalidade (Feature)

Descreve o grupo de testes de uma funcionalidade.

É armazenada em arquivos com a extensão .feature

Exemplo:

Funcionalidade: REQ001Login

Eu como funcionário da DBServer

quero poder me autenticar no sistema XYZ

para ter acesso ao meu ambiente de trabalho

...

Cenário (Scenario)

Descreve um comportamento desejado para o sistema.

Uma funcionalidade pode conter vários cenários.

Como o sistema deve se comportar em uma determinada situação.

Exemplo:

Cenário: REQ001 Validar login do administrador

...

Dado (Given), Quando (When) e Então (Then)

Palavras chaves que definem o comportamento e validação de um

cenário.

Exemplo:

Cenário: Estoque indisponível

Dado que o estoque da sandália galinha pintadinha é de 150

unidades

Quando informo uma venda de 200 unidades

Então a venda não é registrada

E (And) e Ou (Or)

Complementam os passos Dado, Quando e Então e evitam

sobrecarga.

Exemplo:

Cenário: Estoque indisponível

Dado que o estoque da sandália galinha pintadinha é de 150

unidades

Quando informo uma venda de 151 unidades

OU informo uma venda de 200 unidades

Então a venda não é registrada

E é exibida a mensagem de “estoque insuficiente”

Exemplo:

Contexto: O usuário estar logado

Dado que o usuário “cristian.mathias” esteja

logado no sistema

Todos os cenários da funcionalidade executam os passos

especificados no contexto.

Contexto (Background)

Esquema do cenário

Possibilita testar diferentes dados que estão estruturados

de forma tabular.

Esquema de cenário: Aritmética simples

Quando calcular o <operando1> <operacao> <operando2>

Então o resultado deve ser <resultadoEsperado>

Exemplos:

| operando1 | operacao |operando2 | resultadoEsperado |

| 3 | + | 3 | 6 |

| 2 | * | 2 | 4 |

• Framework open-source.

• Primeira versão em 2009.

• Permite escrever e executar especificações

dentro do Visual Studio.

• Code completion e syntax highlighting para

GHERKIN.

• http://www.specflow.org/

Specflow – Cucumber for .net

• Navegar entre as páginas.

• Submeter formulários.

• Selecionas menus.

• Preencher campos texto.

• Procurar elementos html.

Selenium WebDriver

Permite automatizar ações do navegador.

Selenium WebDriver

Alguns métodos do Selenium WebDriver:

// Encontra todos os elementos de uma tela HTML através de um

dado argumento.

driver.findElements(By by);

// Encontra o primeiro elemento de uma tela HTML através de um

dado argumento.

driver.findElement(By by);

// Fecha a janela corrente.

driver.close();

Selenium WebDriver

Alguns métodos do Selenium WebDriver:

// Abstração que permite acessar o histórico e navegar para uma

determinada URL.

driver.navigate();

// Insere caracteres num determinado elemento da tela.

elemento.sendKeys();

// Envia dados para o servidor se o elemento em questão for um

formulário.

elemento.submit();

Hands-onBDD + Specflow + Selenium WebDriver

https://github.com/cristianmathias/Demo-BDD-Specflow-WebDriver

Obrigado!Cristian Mathias

cristianm@dbserver.com.br

Felipe Foliattifelipef@dbserver.com.br

Referencias

http://www.devmedia.com.br/introducao-aos-testes-funcionais-

automatizados-com-junit-e-selenium-webdriver/28037

http://elemarjr.net/2012/04/11/bdd-na-prtica-parte-1-conceitos-

bsicos-e-algum-cdigo/

http://elemarjr.net/2012/04/12/bdd-na-prtica-parte-3-gherkin/