19

BDD com specflow e selenium webdriver

Embed Size (px)

DESCRIPTION

Apresentação sobre BDD com specflow e selenium webdriver

Citation preview

Page 1: BDD com specflow e selenium webdriver
Page 2: BDD com specflow e selenium webdriver

Behaviour-Driven DevelopmentBDD

Cristian MathiasFelipe Foliatti

Page 3: BDD com specflow e selenium webdriver

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

Page 4: BDD com specflow e selenium webdriver

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

Foco na entrega de valor.

Page 5: BDD com specflow e selenium webdriver

BDD é a “documentação viva”.

Page 6: BDD com specflow e selenium webdriver

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

Page 7: BDD com specflow e selenium webdriver

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

...

Page 8: BDD com specflow e selenium webdriver

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

...

Page 9: BDD com specflow e selenium webdriver

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

Page 10: BDD com specflow e selenium webdriver

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”

Page 11: BDD com specflow e selenium webdriver

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)

Page 12: BDD com specflow e selenium webdriver

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 |

Page 13: BDD com specflow e selenium webdriver

• 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

Page 14: BDD com specflow e selenium webdriver

• Navegar entre as páginas.

• Submeter formulários.

• Selecionas menus.

• Preencher campos texto.

• Procurar elementos html.

Selenium WebDriver

Permite automatizar ações do navegador.

Page 15: BDD com specflow e selenium webdriver

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();

Page 16: BDD com specflow e selenium webdriver

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();

Page 17: BDD com specflow e selenium webdriver

Hands-onBDD + Specflow + Selenium WebDriver

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

Page 18: BDD com specflow e selenium webdriver

Obrigado!Cristian Mathias

[email protected]

Felipe [email protected]

Page 19: BDD com specflow e selenium webdriver

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/