31
Vanderson Botêlho da Silva [email protected] Demoiselle Behave Demoiselle Behave Desenvolvimento Orientado a Comportamento https://github.com/demoiselle/behave

Demoiselle Behave - Visão Geral

Embed Size (px)

DESCRIPTION

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

Citation preview

Page 1: Demoiselle Behave - Visão Geral

Vanderson Botêlho da [email protected]

Demoiselle BehaveDemoiselle BehaveDesenvolvimento Orientado a Comportamento

https://github.com/demoiselle/behave

Page 2: Demoiselle Behave - Visão Geral

A Organização

Page 3: Demoiselle Behave - Visão Geral

➢ 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.

Page 4: Demoiselle Behave - Visão Geral

Framework para Desenvolvimento de Soluções

Page 5: Demoiselle Behave - Visão Geral

Testes Ágeis com BDD

Page 6: Demoiselle Behave - Visão Geral

Está tudo Está tudo pronto!pronto!

Page 7: Demoiselle Behave - Visão Geral

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?

Page 8: Demoiselle Behave - Visão Geral

““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

Page 9: Demoiselle Behave - Visão Geral

Porque usar BDD?Porque usar BDD?

Page 10: Demoiselle Behave - Visão Geral

Especificação de Comportamento

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

Page 11: Demoiselle Behave - Visão Geral

Use Use histórias concretashistórias concretas

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

Page 12: Demoiselle Behave - Visão Geral

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.

Page 13: Demoiselle Behave - Visão Geral

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

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

Page 14: Demoiselle Behave - Visão Geral

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

Page 15: Demoiselle Behave - Visão Geral

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]

Page 16: Demoiselle Behave - Visão Geral

BDD na Prática

Page 17: Demoiselle Behave - Visão Geral

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

Page 18: Demoiselle Behave - Visão Geral

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

Page 19: Demoiselle Behave - Visão Geral

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.

Page 20: Demoiselle Behave - Visão Geral

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.

Page 21: Demoiselle Behave - Visão Geral

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;

}

Page 22: Demoiselle Behave - Visão Geral

@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

Page 23: Demoiselle Behave - Visão Geral

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

Page 24: Demoiselle Behave - Visão Geral

Mapeamento de Tela– Interface Element

public class WebButton extends WebBase implements Button {

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

}}

Page 25: Demoiselle Behave - Visão Geral

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

Page 26: Demoiselle Behave - Visão Geral

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

Page 27: Demoiselle Behave - Visão Geral

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

Page 28: Demoiselle Behave - Visão Geral

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

Page 29: Demoiselle Behave - Visão Geral

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"

Page 30: Demoiselle Behave - Visão Geral

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;

Page 31: Demoiselle Behave - Visão Geral

Demonstração...