[38º guru sp] automação de testes web em ruby com cucumber e webdriver

Download [38º GURU SP] Automação de Testes Web em Ruby com Cucumber e Webdriver

Post on 20-Mar-2017

1.461 views

Category:

Technology

1 download

Embed Size (px)

TRANSCRIPT

  • www.qualister.com.br

    (48) 4052-9536 / 9540 contato@qualister.com.br

    Automao de Testes Web em Ruby com

    Cucumber e Webdriver

    por Jlio de Lima @juliodelimas

    38 encontro do Guru-SP | So Paulo, 07 de novembro de 2015

  • Palestrante

    Jlio de LimaEspecialista em teste de software com nfase em automao de testes de software, possui formao em Tecnologia da Informao e certificaes internacionais (CTFL e CTAL-TM pelo ISTQB) e nacional (CBTS pela ALATS) relacionada a testes de software alm de ser certificado na ferramenta SoapUI Pro pela SmartBear Software. Atualmente consultor de automao de testes e instrutor na Qualister e professor de disciplina de teste de software em cursos de ps-graduao no Paran e em Santa Catarina.

    julio.lima@qualister.com.br

    twitter.com/juliodelimasbr.linkedin.com/in/juliodelimas

    goldtips.by/juliodelimas

  • www.qualister.com.brwww.qualister.com.br

    Texto do Ttulo

    Nvel de Corpo Um Nvel de Corpo Dois

    Nvel de Corpo Trs Nvel de Corpo Quatro

    Nvel de Corpo Cinco

    3

  • www.qualister.com.brwww.qualister.com.br

    Texto do Ttulo

    Nvel de Corpo Um Nvel de Corpo Dois

    Nvel de Corpo Trs Nvel de Corpo Quatro

    Nvel de Corpo CincoCucumber

    Especificao dos Testes

    Frameworks utilizados

    4

    Selenium Webdriver

    Driver

    RSpec Expectativas

  • www.qualister.com.brwww.qualister.com.br

    Texto do Ttulo

    Nvel de Corpo Um Nvel de Corpo Dois

    Nvel de Corpo Trs Nvel de Corpo Quatro

    Nvel de Corpo Cinco

    Cucumber um framework escrito em Ruby utilizado para automao de testes de aceitao. Testes escritos com Cucumber descrevem como a aplicao deve se comportar.

    A descrio dos comportamentos da aplicao pode ser feitos em diversos idiomas, inclusive em Portugus. Cucumber escrito em Ruby, mas pode ser utilizado em diversas linguagens de programao, como: Java, C# e Python.

    A descrio dos comportamentos da aplicao composta basicamente por Funcionalidade, Cenrios e Passos do cenrio. Esta descrio feita utilizando Gherkin, um modelo de escrita compreendida pelo Cucumber.

    Cucumber

    5

    Cucumber Especificao

    dos Testes

  • www.qualister.com.brwww.qualister.com.br

    Texto do Ttulo

    Nvel de Corpo Um Nvel de Corpo Dois

    Nvel de Corpo Trs Nvel de Corpo Quatro

    Nvel de Corpo Cinco

    O que o Cucumber pode fazer

    Escrever comportamentos do sistema em texto puro, em diversos idiomas Testar classes e mtodos Ruby, Java, C# e Python Executar testes a partir de linha de comando Integrar-se com ferramentas de integrao contnua Gerar documentao dos comportamentos da aplicao Gerar relatrios de execuo dos testes

    Cucumber

    6

    Cucumber Especificao

    dos Testes

  • www.qualister.com.brwww.qualister.com.br

    Texto do Ttulo

    Nvel de Corpo Um Nvel de Corpo Dois

    Nvel de Corpo Trs Nvel de Corpo Quatro

    Nvel de Corpo Cinco

    Gherkin a sintaxe utilizada para escrever funcionalidades no Cucumber. um domnio especfico de linguagem para escrever regras de negcio de fcil leitura

    Sintaxe criada para ser utilizada por usurio tcnicos e no tcnicos. Funcionalidades escritas no formato Gherkin tambm so usadas como documentao do sistema. Elas no detalham como a funcionalidade dever ser implementada.

    Cada linha da descrio da funcionalidade iniciada por uma palavra chave e o escopo definido utilizando indentao. Funcionalidades em Gherkin podem ser escritas em portugus ou em mais de 30 idiomas. Linhas podem ser comentadas utilizando # no incio da linha

    Gherkin

    7

    Gherkin DSL

  • www.qualister.com.brwww.qualister.com.br

    Texto do Ttulo

    Nvel de Corpo Um Nvel de Corpo Dois

    Nvel de Corpo Trs Nvel de Corpo Quatro

    Nvel de Corpo Cinco

    Exemplo: # language: ptFuncionalidade: Descrio da funcionalidade desejada Sendo algum que ser beneficiado Posso utilizar uma funcionalidade do sistema Para que possa alcanar um benefcio para o negcio Cenrio: Uma situao de negcio Dado que tenho uma precondio Quando eu executo alguma ao E executo alguma outra ao Ento recebo uma sada resultante das aes executadas Mas algo muda no estado atual do sistema

    Gherkin

    8

    Gherkin DSL

    Daniel Wildt e Rafael Helm - Histrias de Usurio 3a Ed.(www.wildtech.com.br/historias-de-usuario/)

    Introducing BDD | Dan North & Associates (dannorth.net/introducing-bdd/)

    http://www.wildtech.com.br/historias-de-usuario/http://dannorth.net/introducing-bdd/

  • www.qualister.com.brwww.qualister.com.br

    Texto do Ttulo

    Nvel de Corpo Um Nvel de Corpo Dois

    Nvel de Corpo Trs Nvel de Corpo Quatro

    Nvel de Corpo Cinco

    Os arquivos so salvos com a extenso .feature.

    Funcionalidades podem ter mltiplos cenrios e cada cenrio iniciado pela palavra chave Cenrio.

    Cada cenrio possui passos, sempre iniciados pelas palavras chave: Dado, Quando, Ento, E e Mas.

    Gherkin

    9

    Gherkin DSL

  • www.qualister.com.brwww.qualister.com.br

    Texto do Ttulo

    Nvel de Corpo Um Nvel de Corpo Dois

    Nvel de Corpo Trs Nvel de Corpo Quatro

    Nvel de Corpo Cinco

    Selenium Webdriver um framework de automao de testes originalmente escrito em Java, mas posteriormente disseminado em diversas linguagens de programao.

    Possui uma biblioteca completa de simulao de aes do usurio sobre o browser, permitindo assim automatizar estas aes.

    O WebDriver conversa diretamente com um browser real (Firefox, por padro), por isso, h a necessidade de t-lo instalado na mquina.

    O que ?

    10

    Selenium Webdriver

    Driver

  • www.qualister.com.brwww.qualister.com.br

    Texto do Ttulo

    Nvel de Corpo Um Nvel de Corpo Dois

    Nvel de Corpo Trs Nvel de Corpo Quatro

    Nvel de Corpo Cinco

    O RSpec um framework BDD (Behavior-Driven Development), escrito em Ruby, utilizado para estruturar os testes em ordem comportamental, utilizando escrita em linguagem natural.

    Ele tambm possui uma potente biblioteca de expectativas e matchers, que utilizada juntamente com outros diversos frameworks de validao de aplicaes.

    Usaremos ele em conjunto com os demais frameworks para validar nossas aplicaes.

    O que ?

    11

    RSpec Especificao

    dos testes

  • www.qualister.com.brwww.qualister.com.br

    Texto do Ttulo

    Nvel de Corpo Um Nvel de Corpo Dois

    Nvel de Corpo Trs Nvel de Corpo Quatro

    Nvel de Corpo Cinco

    12

    Preparando o projeto

  • www.qualister.com.brwww.qualister.com.br

    Texto do Ttulo

    Nvel de Corpo Um Nvel de Corpo Dois

    Nvel de Corpo Trs Nvel de Corpo Quatro

    Nvel de Corpo Cinco

    Preparando o projeto

    1. Crie o diretrio C:\GURUSP\Cucumber2. Crie o diretrio C:\GURUSP\Cucumber\features3. Crie o diretrio C:\GURUSP\Cucumber\features\step_definitions4. Crie o diretrio C:\GURUSP\Cucumber\features\support5. Instale o Bundler, um gerenciador de dependncias, com gem install bundler6. Execute o comando bundle init dentro do diretrio Cucumber

    Adicione as dependncias ao Gemfile que foi gerado na raiz do projeto:# A sample Gemfile source "http://rubygems.org" # gem "rails" gem 'selenium-webdriver', '~> 2.48.1' gem 'rspec-expectations', '~> 3.3.1' gem 'cucumber', '~> 2.1.0'

    8. Execute o comando "bundle install9. E ento veremos o status abaixo:Bundle complete! 3 Gemfile dependencies, 15 gems now installed. 13

  • www.qualister.com.brwww.qualister.com.br

    Texto do Ttulo

    Nvel de Corpo Um Nvel de Corpo Dois

    Nvel de Corpo Trs Nvel de Corpo Quatro

    Nvel de Corpo Cinco

    14

    Hands-on

  • www.qualister.com.brwww.qualister.com.br

    Texto do Ttulo

    Nvel de Corpo Um Nvel de Corpo Dois

    Nvel de Corpo Trs Nvel de Corpo Quatro

    Nvel de Corpo Cinco

    15

    Hands-on

    Crie dentro do diretrio features um arquivo chamado gerenciarMovimentacoes.feature e adicione a ele o seguinte texto:# language: pt

    Funcionalidade: Gerenciar Movimentaes Sendo o administrador de uma loja Posso gerenciar movimentaes Para que possa ver, de forma simples, as entradas e sadas de valores Cenrio: Gerando uma movimentao de entrada Dado que eu esteja autenticado como administrador E que eu tenha acessado o menu "Movimentaes" E clicado em "Nova movimentao para inserir uma movimentao Quando informar "Entrada" como tipo de movimentao E informar "50,00" como valor da movimentao E Informar "PlayStation e XBox" como itens da movimentao E clicar em "Gravar" Ento verei a mensagem "Sucesso ao inserir a movimentao" como sucesso da operao

  • www.qualister.com.brwww.qualister.com.br

    Texto do Ttulo

    Nvel de Corpo Um Nvel de Corpo Dois

    Nvel de Corpo Trs Nvel de Corpo Quatro

    Nvel de Corpo Cinco

    16

    Hands-on

    Agora, execute o comando cucumber --color na raiz do projeto e ento veremos como foi a execuo dos cenrios:

    1 scenario (1 undefined)

    8 steps (8 undefined)

    0m0.062s

    Sero gerados snippets de cdigo para os cenrios ainda no definidos, veja um exemplo:

    You can implement step definitions for undefined steps with these snippets:

    Dado(/^que eu esteja autenticado como administrador$/) do pending # Write code here end

  • www.qualister.com.brwww.qualister.com.br

    Texto do Ttulo

    Nvel de Corpo Um Nvel de Corpo Dois

    Nvel de Corpo Trs Nvel de Corpo Quatro

    Nvel de Corpo Cinco

    17

    Hands-