demoiselle behave - visão geral

Post on 27-May-2015

250 Views

Category:

Technology

6 Downloads

Preview:

Click to see full reader

DESCRIPTION

Apresentação realizada na PUCPR para alunos do sexto período do curso de Ciência da Computação

TRANSCRIPT

Vanderson Botêlho da Silvavanderson.silva@serpro.gov.br

Demoiselle BehaveDemoiselle BehaveDesenvolvimento Orientado a Comportamento

https://github.com/demoiselle/behave

A Organização

➢ A Empresa➢ Maior empresa pública de TI da América Latina conta

com 11.000 funcionários em todo o país

➢ Opção pelo Software Livre:➢ Otimizar os recursos públicos, incentivar o compartilhamento

de conhecimento e estimular a cooperação entre o governo, academia e sociedade.

Framework para Desenvolvimento de Soluções

Testes Ágeis com BDD

Está tudo Está tudo pronto!pronto!

BDDBDDBehavior Driven Development

Um processo de desenvolvimentoprocesso de desenvolvimento de software criado pelo Dan North que combina técnicas e princípios do Test Driver Development TDD

Problemas encontrados no TDD:Por onde começaonde começa o processo?

O queO que testar e o que não testar?

O que chamamosO que chamamos de teste?Como analisaranalisar falhas?

““BDD is a BDD is a second-generationsecond-generation, , outside-inoutside-in, , pull-basedpull-based, , multiple-stakeholdermultiple-stakeholder, , multiple-scalemultiple-scale, ,

high-automationhigh-automation, , agile methodologyagile methodology. . It describes a cycle of interactions It describes a cycle of interactions

with well-defined outputs, resulting in the delivery with well-defined outputs, resulting in the delivery of working, tested software that matters.”of working, tested software that matters.”

Dan North

Porque usar BDD?Porque usar BDD?

Especificação de Comportamento

– Um dos grandes problemas na construção de um software é não entender exatamente o que ele deve fazer

Use Use histórias concretashistórias concretas

para ilustrar o que separa ilustrar o que sedeseja do softwaredeseja do software

Cenários de uso são mais Cenários de uso são mais eficienteseficientesna comunicaçãona comunicação do que descrições. do que descrições.

Exemplos reais Exemplos reais nos nos mantêm conectadosmantêm conectados

com a visão dos nossoscom a visão dos nossosstakeholdersstakeholders

Linguagem GherkinLinguagem Gherkin– É uma “Business Readable Domain Specific Language

(DSL)”. Uma linguagem para especificação de domínio de negócio simples;

– Linguagem semi-formal para construção de testes que avaliam o comportamento da aplicação;

– Permite a colaboração múltiplo-ator para a especificação do software.

“That said, I do think that the greatest potential benefit of DSLs comes when business people participate

directly in the writing of the DSL code” Martin Fowler

Essência:– Testes de aceitação escritos como estórias de

usuários.

– Os critérios de aceitação devem ser escritos em termos de cenários e implementados como classes:

Como um [papel] Eu quero [recurso], para que [benefícios]

Dado [contexto inicial], quando [evento ocorre], então [garantir alguns resultados]

BDD na Prática

Funcionalidade: Operar a Calculadora

Narrativa:Para obter as operações básicas da calculadoraComo um usuário qualquerDesejo resolver problemas matemáticos de forma mais rápida

Cenário: Somar

Dado que inicio a CalculadoraQuando adiciono "5"E adiciono "7"Então seu valor será "12"

Escreva suas histórias

Escreva suas histórias

Cenário: Somar

Dado que inicio a CalculadoraQuando adiciono "5"E adiciono "7"Então seu valor será "12"

@When("Quando inicio a Calculadora")public void goToWithName(String local) {}

@When("adiciono \"$valor\"")public void whenAdiciono(double valor) {}

@Then("seu valor será \"$valor\"")public void thenSeuValorSera(double valor) {}

Suas frases mapeadas em métodos

Mapeamento de Tela– Objetivo

● Para testes sob interfaces gráficas o mapeamento de tela visa desacoplar os elementos de tela ao script de automação.

– Benefícios● Evita duplicação de código;● Maior manutenibilidade: se houver mudanças na tela a

correção deverá ser aplicada em um único lugar.

Mapeamento de Tela– Diferenças para um Page Object

● Os mapeamentos não possuem comportamento;● Os comportamento são implementados nos steps;● Podemos reusar comportamentos para vários objetos e

vice-e-versa;● Melhor manutenção, devido a redução de código.

Mapeamento de Tela

Exemplo

@ScreenMap(name = "Tela de Busca", location = "http://www.google.com.br")public class MyPage {

@ElementMap(name = "Campo de Busca", locatorType = ElementLocatorType.Id, locator = "gbqfq")

private TextField searchField;

@ElementMap(name = "Estou com sorte", locatorType = ElementLocatorType.Id, locator = "gbqfbb")

private Button buttonLuckSearch;

}

@ScreenMap(name = "Tela de Busca", location = "http://www.google.com.br")

Identificação amigável da tela

Localização da tela

Mapeamento de Tela

Identificação amigávelda tela

Mapeamento de Tela

@ElementMap(name = "Campo de Busca", locatorType = ElementLocatorType.Id, locator = "gbqfq")

private Select menuLivros;

Identificação amigáveldo elemento de tela

Valor de Localizador

Tipo de localizador:ClassName; CssSelector

Id; LinkText; Name;TagName; XPath

Mapeamento de Tela– Interface Element

public class WebButton extends WebBase implements Button {

public void click() {waitElement(0);getElements().get(0).click();

}}

Mapeamento de Tela– Design Demoiselle Behave - Composite

● Equivalência ao design Page Object:

● Vantagens: – Reuso de comportamentos;– Polimorfismo para tipos de telas (Web, Desktop, Mobile, ...)

Dados

ScreeMapScreeMapComportamento

ElementElement+ = Dados comComportamento

Page ObjectPage Object

Histórias para Aplicações Web

● O DBehave implementa passos comunspassos comuns para interação com aplicações Web

Cenário: Procurando uma Alma Gemea

Dado que vou para a página "Alma Gemea"Quando clico em "Pesquisar"Quando informo "36" no campo "idade"Quando seleciono a opção "Solteiro"Então será exibido na "Caixa ao lado" o valor "Você está com sorte"Dado que estou na página "Buscar Alma Gemea"Então será exibido "Ricardão"

Vai para a telamapeada

Execute a operaçãode click

Informa o valorde um campo de edição

Histórias para Aplicações Web

● O DBehave implementa passos comunspassos comuns para interação com aplicações Web

Cenário: Procurando uma Alma Gemea

Dado que vou para a página "Alma Gemea"Quando clico em "Pesquisar"Quando informo "36" no campo "idade"Quando seleciono a opção "Solteiro"Então será exibido na "Caixa ao lado" o valor "Você está com sorte"Dado que estou estou na página "Buscar Alma Gemea"Quando clico em "Procurar"Então será exibido "Ricardão"

Selecione um campo de escolha (radio, check ou link)

Verifica se um elementoPossui um determinado valor

Verifica se um elementoPossui um determinado valor

Histórias para Aplicações Web

● O DBehave implementa passos comunspassos comuns para interação com aplicações Web

Cenário: Procurando uma Alma Gemea

Dado que vou para a página "Alma Gemea"Quando clico em "Pesquisar"Quando informo "36" no campo "idade"Quando seleciono a opção "Solteiro"Então será exibido na "Caixa ao lado" o valor "Você está com sorte"Dado que estou na página "Buscar Alma Gemea"Quando clico em "Procurar"Então será exibido "Ricardão"

Selecione um campo de escolha (radio, check ou link)

Informa qual a páginaAtual sem executar ação

de navegaçãoVerifica em toda a telaa presença e um texto

Funcionalidade: Acesso

Como um: visitanteEu quero: acessar o GoogleDe modo que: a página inicial apareceça para mim

Cenário: Acesso ao Google

Dado que vou para a página "Tela de Busca"Então será exibido "Google"

Cenário: Utilização da funcionalidade de pesquisaDado que vou para a página "Tela de Busca"Quando informo "Demoiselle Behave" no campo "Campo de Busca"Quando clico em "Pesquisar"Então será exibido "Demoiselle Behave"

@ElementMap( name = "Pesquisar", locatorType = ElementLocatorType.Id, locator = "gbqfb")private Button botaoPesquisar;

Demonstração...

top related