Demoiselle Behave - Visão Geral

488 visualizações

Publicada em

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

Publicada em: Tecnologia
0 comentários
2 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
488
No SlideShare
0
A partir de incorporações
0
Número de incorporações
2
Ações
Compartilhamentos
0
Downloads
11
Comentários
0
Gostaram
2
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Demoiselle Behave - Visão Geral

  1. 1. Vanderson Botêlho da Silva vanderson.silva@serpro.gov.br Demoiselle BehaveDemoiselle Behave Desenvolvimento Orientado a Comportamento https://github.com/demoiselle/behave
  2. 2. A Organização
  3. 3. ➢ 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.
  4. 4. Framework para Desenvolvimento de Soluções
  5. 5. Testes Ágeis com BDD
  6. 6. Está tudoEstá tudo pronto!pronto!
  7. 7. 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?
  8. 8. ““BDD is aBDD 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 interactionsIt describes a cycle of interactions with well-defined outputs, resulting in the deliverywith well-defined outputs, resulting in the delivery of working, tested software that matters.”of working, tested software that matters.” Dan North
  9. 9. Porque usar BDD?Porque usar BDD?
  10. 10. Especificação de Comportamento – Um dos grandes problemas na construção de um software é não entender exatamente o que ele deve fazer
  11. 11. UseUse histórias concretashistórias concretas para ilustrar o que separa ilustrar o que se deseja do softwaredeseja do software
  12. 12. Cenários de uso são maisCenários de uso são mais eficienteseficientes na comunicaçãona comunicação do que descrições.do que descrições.
  13. 13. Exemplos reaisExemplos reais nosnos mantêm conectadosmantêm conectados com a visão dos nossoscom a visão dos nossos stakeholdersstakeholders
  14. 14. 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
  15. 15. 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]
  16. 16. BDD na Prática
  17. 17. Funcionalidade: Operar a Calculadora Narrativa: Para obter as operações básicas da calculadora Como um usuário qualquer Desejo resolver problemas matemáticos de forma mais rápida Cenário: Somar Dado que inicio a Calculadora Quando adiciono "5" E adiciono "7" Então seu valor será "12" Escreva suas histórias Escreva suas histórias
  18. 18. Cenário: Somar Dado que inicio a Calculadora Quando 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
  19. 19. 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.
  20. 20. 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.
  21. 21. 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; }
  22. 22. @ScreenMap( name = "Tela de Busca", location = "http://www.google.com.br") Identificação amigável da tela Localização da tela Mapeamento de Tela a
  23. 23. Mapeamento de Tela @ElementMap( name = "Campo de Busca", locatorType = ElementLocatorType.Id, locator = "gbqfq") private Select menuLivros; Identificação amigável do elemento de tela Valor de Localizador Tipo de localizador: ClassName; CssSelector Id; LinkText; Name; TagName; XPath
  24. 24. Mapeamento de Tela – Interface Element public class WebButton extends WebBase implements Button { public void click() { waitElement(0); getElements().get(0).click(); } }
  25. 25. 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 ScreeMapScreeMap Comportamento ElementElement+ = Dados com Comportamento Page ObjectPage Object
  26. 26. 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 tela mapeada Execute a operação de click Informa o valor de um campo de edição
  27. 27. 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 elemento Possui um determinado valor Verifica se um elemento Possui um determinado valor
  28. 28. 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ágina Atual sem executar ação de navegação Verifica em toda a tela a presença e um texto
  29. 29. Funcionalidade: Acesso Como um: visitante Eu quero: acessar o Google De 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"
  30. 30. Cenário: Utilização da funcionalidade de pesquisa Dado 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;
  31. 31. Demonstração...

×