Demoiselle Behave - Parte 1

  • View
    2.321

  • Download
    2

Embed Size (px)

DESCRIPTION

Treinamento da ferramenta de automao de testes de software Demoiselle Behave (http://demoiselle.github.io/behave/). Parte 1: Apresenta conceitos essenciais do BDD e da ferramenta DBehave, alm de propor um exerccio prtico de uso com foco em construo de histrias.

Transcript

  • 1. Treinamento:Treinamento: AutomaoAutomao de Testesde Testes Mdulo 01 - HistriasMdulo 01 - Histrias

2. Mdulo 1 Histrias 2 IntroduoIntroduo Demoiselle BehaveDemoiselle Behave O que ? um framework de integrao para tcnicas de Desenvolvimento Orientadas a Comportamento Behaviour Driven Development (BDD). mais que uma ferramenta BDD: Abstrao para ferramentas de BDD; Abstrao para ferramentas de automao de testes; Abstrao para ferramentas de gesto de testes. um subprojeto do Framework Demoiselle: (http://www.frameworkdemoiselle.gov.br/). 3. Mdulo 1 Histrias 3 Viso GeralViso Geral 6) acessar sistema 5) selecionar motor de execuo 1) iniciar teste 3) ler histrias 4) ler mapeamentos de tela 7) registrar resultados 2) selecionar motor BDD Alvo doAlvo do Mdulo 1Mdulo 1 4. Mdulo 1 Histrias 4 IntroduoIntroduo BDD - Behaviour Driven DevelopmentBDD - Behaviour Driven Development Processo de desenvolvimento de software criado por Dan North que combina tcnicas e princpios do Test Driver Development TDD. Problemas encontrados no TDD: Onde comea o processo? O que testar e o que no testar? O que chamamos de teste? Como analisar falhas? 5. Mdulo 1 Histrias 5 IntroduoIntroduo BDDBDD Essncia: Repensar a abordagem de testes unitrios e de aceitao: Testes unitrios iniciados com o prefixo should. Testes de aceitao escritos como histrias de usurios. Como um [papel] Eu quero [recurso], para que [benefcios] Dado [contexto inicial], quando [evento ocorre], ento [garantir alguns resultados] Os critrios de aceitao escritos como cenrios: 6. Mdulo 1 Histrias 6 IntroduoIntroduo BDDBDD A partir destes princpios, North propos um framework BDD para um ambiente de colaborao entre desenvolvedores e outros papis no tcnicos, de um projeto de software. Durante o Agile specifications, BDD and Testing eXchange em 2009 Dan North definiu: BDD is a second-generation, outside-in, pull-based,BDD is a second-generation, outside-in, pull-based, multiple-stakeholder, multiple-scale, high-automation,multiple-stakeholder, multiple-scale, high-automation, agile methodology. It describes a cycle of interactionsagile methodology. It 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. 7. Mdulo 1 Histrias 7 IntroduoIntroduo BDDBDD Second Generation Processo gil que auxilia o time a entregar software de alta qualidade, respondendo questes at ento em aberto pelos processos geis iniciais, tais como documentao e testes. Outside-in and pull-based Permite que o software seja construdo com foco nos resultados esperados do sistema, assegurando que estes resultados sejam alcanados. Possvel pela colaborao das especificaes de forma ilustrativa. As histrias so criadas apenas quando necessrias. 8. Mdulo 1 Histrias 8 IntroduoIntroduo BDDBDD Multiple-stakeholder BDD ajuda a eliminar a ideia de um usurio sem forma reconhecendo que diferentes grupos de pessoas sero afetadas com o software de diferentes maneiras. Na Gesto de Qualidade de Software, Gerald Weinberg escreveu: "Qualidade um valor para uma pessoa. BDD permite entender e definir a qualidade, especificando para quais pessoas o software trar algum valor e quo necessrio ser para elas. Agile BDD funciona melhor com iteraes curtas de trabalho, onde o time especifica, implementa e entrega pequenas partes do software. Requer equipes multifuncionais para colaborar com as especificaes e testes. 9. Mdulo 1 Histrias 9 IntroduoIntroduo BDDBDD High-automation Quando a qualidade da soluo definida, o time precisa verificar as funcionalidades do sistema com frequncia, comparando-as com os resultados esperados. Para fazer esta verificao eficaz, ele tem de ser automatizado. BDD depende fortemente de automao e especificaes executveis. A automao da definio BDD no nvel mais alto feita com uso de ferramentas como o JBehave. 10. Mdulo 1 Histrias 10 IntroduoIntroduo Especificao de ComportamentoEspecificao de Comportamento Um dos grandes riscos na construo de um software no entender exatamente o que ele deve fazer. Uma alternativa para reduzir essa dificuldade fazer uso de exemplos concretos para ilustrar o que se deseja do software. Cenrios de uso so mais eficientes na comunicao do que descries, por mais detalhadas que sejam. Utilizar exemplos reais para descrever o comportamento desejado de um sistema, nos mantm conectados com a viso dos nossos stakeholders. 11. Mdulo 1 Histrias 11 IntroduoIntroduo Especificao de ComportamentoEspecificao de Comportamento Quando nos comunicamos usando cenrios de uso reais conseguimos fazer que nossos clientes visualizem a soluo em uso. Dessa forma, conseguimos obter feedbacks teis e, at algumas boas ideias, antes de escrever qualquer linha de cdigo. 12. Mdulo 1 Histrias 12 IntroduoIntroduo Linguagem GherkinLinguagem Gherkin uma Business Readable Domain Specific Language (DSL). Uma linguagem simples para especificao de domnio de negcio. uma linguagem semiformal para construo de testes que avaliam o comportamento da aplicao. Permite a colaborao de mltiplos atores para a especificao 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 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 13. Mdulo 1 Histrias 13 IntroduoIntroduo Especificao FormalEspecificao Formal Especificao FormalEspecificao Formal Funcionalidade: Acessa ao Sistema Cenrio: Acessa sistema com usurio vlido Dado que vou para a tela "Tela de Login" Quando informo "joao" no campo "Usurio" E informo "123" no campo "Campo Senha" Quando clico em "Entrar" Ento estou autenticado Especificao TestvelEspecificao Testvel transcrio WebDriver driver = new FirefoxDriver(); driver.get("http://localhost:8080/treino/"); WebElement login = driver.findElement(By.xpath("(//input[contai ns(@id, 'formLogin')][contains(@type, 'text')])")); login.clear(); login.sendKeys("joao"); WebElement senha = driver.findElement(By.xpath("(//input[contai ns(@id, 'formLogin')][contains(@type, 'password')])")); senha.sendKeys("123"); WebElement botaoOk = driver.findElement(By.xpath("(//button[conta ins(@type, 'submit')])")); botaoOk.click(); Linguagem de ProgramaoLinguagem de Programao transcrio 14. Mdulo 1 Histrias 14 IntroduoIntroduo WebDriver driver = new FirefoxDriver(); driver.get("http://localhost:8080/treino/"); WebElement login = driver.findElement(By.xpath("(//input[contai ns(@id, 'formLogin')][contains(@type, 'text')])")); login.click(); login.clear(); login.sendKeys("joao"); WebElement senha = driver.findElement(By.xpath("(//input[contai ns(@id, 'formLogin')][contains(@type, 'password')])")); senha.clear(); senha.sendKeys("123"); WebElement botaoOk = driver.findElement(By.xpath("(//button[conta ins(@type, 'submit')])")); botaoOk.click(); Funcionalidade: Acessa ao Sistema Cenrio: Acessa sistema com usurio vlido Dado que vou para a tela "Tela de Login" Quando informo "joao" no campo "Usurio" E informo "123" no campo "Campo Senha" Quando clico em "Entrar" Ento estou autenticado BenefciosBenefcios CustoCusto ManutenoManuteno AprendizagemAprendizagem ProdutividadeProdutividade 15. Mdulo 1 Histrias 15 IntroduoIntroduo WebDriver driver = new FirefoxDriver(); driver.get("http://localhost:8080/treino/"); WebElement login = driver.findElement(By.xpath("(//input[contai ns(@id, 'formLogin')][contains(@type, 'text')])")); login.click(); login.clear(); login.sendKeys("joao"); WebElement senha = driver.findElement(By.xpath("(//input[contai ns(@id, 'formLogin')][contains(@type, 'password')])")); senha.clear(); senha.sendKeys("123"); WebElement botaoOk = driver.findElement(By.xpath("(//button[conta ins(@type, 'submit')])")); botaoOk.click(); Funcionalidade: Acessa ao Sistema Cenrio: Acessa sistema com usurio vlido Dado que vou para a tela "Tela de Login" Quando informo "joao" no campo "Usurio" E informo "123" no campo "Campo Senha" Quando clico em "Entrar" Ento estou autenticado BenefciosBenefcios ColaboraoColaborao 16. Mdulo 1 Histrias 16 IntroduoIntroduo Linguagem EstruturaLinguagem Estrutura Dado: Descreve uma situao Dado que um cliente desistiu da compra Quando: Descreve uma certa ao Quando solicito a excluso de um produto Ento: Descreve os resultados esperados Ento o sistema apresentar uma mensagem de erro E: Repete o ltimo termo Ento a lista de usurios apresentada E uma mensagem apresentada 17. Mdulo 1 Histrias 17 IntroduoIntroduo Arquitetura dbehaveArquitetura dbehave Core Parser Runner Integration TECNOLOGIAS JBehave Concordion Cucumber TECNOLOGIAS Selenium FEST TECNOLOGIAS ALM - RQM 18. Mdulo 1 Histrias 18 IntroduoIntroduo Arquitetura dbehaveArquitetura dbehave Parser Camada responsvel pelo carregamento das histrias. Usa como implementao de referncia a linguagem Gherkin e o framework Jbehave. Pode ser extensvel para outras linguagens. Fornece o recurso para Reuso de Histrias. Parser TECNOLOGIAS JBehave Concordion Cucumber 19. Mdulo 1 Histrias 19 IntroduoIntroduo Arquitetura dbehaveArquitetura dbehave Parser Reuso de Histrias Funcionalidade:AcessoaoSistema Comoum:operadordosistema Euquero:serautenticadopormeiodesenha Demodoque:oacessoaosistemasejadadoapenasaosoperadores Cadastrados Cenrio:Acessarosistemacomousurio"{usurio}"esenha"{senha}" Dadoquevouparaatela"TeladeLogin" Quandoinformo"{usurio}"nocampo"CampoUsurio" Einformo"{senha}"nocampo"CampoSenha" Quandoclicoem"Entrar" Entoserexibido"Sejabemvindo" Cenrio:AcessaroSistemaXPTO Acessarosistemacomousurio"06762344887"esenha"188542" 20. Mdulo 1 Histrias 20 Exerccio 1Exerccio 1 ObjetivosObjetivos Construir uma soluo de Controle de Estoque utilizando