1
BDD on Mobile
Louise Souza e Ricardo Nacif
Utilizando Cucumber + Appium para executar
testes automatizados em Smartphones
2
Apresentação
Formada em Ciência da Computação,
trabalha com qualidade de software e
automação de testes a 3 anos na
Aven...
3
Apresentação
QA Engineer na Avenue Code e
desenvolvedor web, desenvolve
soluções de teste automatizados
utilizando metod...
4
Sumário
1. BDD
2. Cucumber
o Gherkin
3. Selenium
4. Appium
5. Touch Action
Cardápio do dia
5
Objetivo da apresentação
● Testar uma funcionalidade de um site
mobile utilizando práticas Agile:
○ BDD
■ Cucumber
■ Sel...
6
Introdução ao BDD
● Desenvolvimento Guiado por Comportamento
○ Técnica de desenvolvimento ágil
○ Encoraja a colaboração ...
7
Objetivos do BDD
● Resolver os problemas causados pelo TDD
○ Em Destaque: Falta de clareza para a equipe
● Permite que o...
8
BDD Layout
● Utiliza uma linguagem ubíqua para definir o
processo de analise.
As a <Role>
I want <Feature>
So that I Rec...
9
Exemplo
Validar a quantidade de dígitos do cartão de crédito
informado pelo usuário.
10
Exemplo BDD
Como um usuário de um eCommerce
Eu quero que uma mensagem de erro seja exibida
quando a quantidade de dígit...
11
Exemplo BDD
Critérios de aceitação
1. A mensagem de erro deve informar a quantidade
de dígitos esperada
2. Ela deve ser...
12
Exemplo BDD
13
● Cucumber é um framework de
testes BDD
● Utilizado para automação, torna
extremamente fácil essa interação,
devido a d...
14
Gherkin
Documentação e Automação
Testes!!!!!
15
Gherkin
● Funcionalidade(Feature)
Um texto conciso que descreva a funcionalidade
● Cenário(Scenario)
Descrição do teste...
16
Gherkin
● Dado(Given)
Alguma pré condição
● Quando(When)
Alguma ação executada pelo ator(papel)
● Então(Then)
Condição ...
17
Exemplo Cucumber
Para que eu possa adicionar novos amigos
Como um usuário do Facebook Mobile
Eu quero ver as indicações...
18
Feature File
[Texto/Imagem/Vídeo]
Funcionalidade: Recomendações de amigos no Facebook Mobile
Cenário: Ver as indicações...
19
Selenium
Selenium é um framework de testes
que permite a automação de testes
de aceitação ou testes de
funcionalidade p...
20
Appium
● Framework open source de testes
automatizados para smartphones
● Realiza testes em aplicativos nativos e web.
21
Appium
22
Appium - Prós
● Open Source
● Comunidade crescendo a cada dia
● Suporta testes em diferentes versões do
iOS e do Android
23
Appium - Prós
● Utiliza o protocolo WebDriver, o mesmo
do Selenium
● Testes podem ser executados em
dispositivos reais
...
24
Appium - Contras
● Para rodar os testes no iOS, você precisa de um
Mac
● Não suporta rodar múltiplos testes em paralelo...
25
Touch Action
Open Source Ruby Gem
26
Gestos TouchAction
Toque
27
Gestos TouchAction
Toque - Duplo
28
Gestos TouchAction
Pressionar
29
Gestos TouchAction
Deslizar
30
Gestos TouchAction
Mover
31
Gestos TouchAction
Pinça
32
Gestos TouchAction
Rotacionar
Script manda um
código javascript
contendo o YUI e o
nome do gesto a
ser executado
junto com as
opções
33
TouchAction Gem
...
34
TouchAction Gem
● Tem suporte para Selenium, Watir
Webdriver e Capybara
● Gestos totalmente configuráveis através
de op...
35
TouchAction Gem
36
Demonstração
37
Feature File
[Texto/Imagem/Vídeo]Cenário: Ver as indicações de amizade no feed de notícias
Dado que estou na página ini...
38
Facebook Automation
FOTO CODIGO
39
Facebook Automation
40
Facebook Automation
41
TouchAction Gem
github.com/Ricardonacif/cucumber_appium
42
jobs.net/jobs/avenuecode/
43
lsouza@avenuecode.com rjunior@avenuecode.com
Próximos SlideShares
Carregando em…5
×

BDD on Mobile: Utilizando Cucumber e Appium para executar testes automatizados em smartphones - Louise Souza e Ricardo Nacif

588 visualizações

Publicada em

Cucumber é uma ferramenta de testes BDD amplamente utilizada devido a facilidade de se escrever casos de testes que são entendidos por qualquer pessoa, tecnica ou da área de negócios. Através de linguagem natural, é possível que uma pessoa não técnica descreva casos de testes que são facilmente automatizados por uma pessoa técnica, utilizando a linguagem de programação desejada como Java, Ruby ou JavaScript. Combinado com o Appium, poderoso framework para execução de testes automatizados em smartphones e tablets, pode ser uma solução robusta para testes de integrações em sites mobile e aplicativos nativos para iOS e Android.

Publicada em: Software
0 comentários
1 gostou
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
588
No SlideShare
0
A partir de incorporações
0
Número de incorporações
5
Ações
Compartilhamentos
0
Downloads
13
Comentários
0
Gostaram
1
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide
  • Appium é um framework de testes que permite que você rode os testes automatizados em smartphones, tanto em aplicativos nativos para iOS e android quanto para applicativos web
  • Este daqui é o fluxo de um teste automatizado rodando usando o Appium. Basicamente, você escreve seu script em qualquer linguagem desejada (ele suporta as mesmas linguagens que o selenium suporta), esse comando é enviado para o servidor Appium, que comunica com o Apple instruments e manda os comandos pro smartphone
  • Por ser open source, você pode ajudar a desenvolver, customizar ou resolver bugs.
    A comunidade já é bem grande e está crescendo mais ainda, então isso ajuda caso você precise de algum suporte. Suporta diferentes versoes de iOS e Android
  • Ele utiliza o mesmo protocolo json do Selenium, ou seja, se voce já tem scripts feitos pro selenium, eles podem rodar em um smartphone usando o appium
    Pode executar testes em smartphones reais ou simuladores
    É possível rodar os testes em algum serviço cloud como Sauce Labs, Browser Stack e Testdroid. A grande vantagem é poder rodar em vários smartphones reais sem precisar tê-los, além de poder rodar multiplis testes ao mesmo tempo.
  • É necessário um mac pra rodar os testes no iOS
    A apple só permite um simulador de iOS rodando ao mesmo tempo, então localmente não é possivel rodar os testes em paralelo Um defeito que nós enfrentamos é que o Appium não permite simular gestos touch mais complexos em aplicativos web. Então por exemplo, não é possível simular uma o gesto de deslizar em um site que tenha um carrosel. A gente enfrentou essa necessidade, onde precisavamos testar uma feature que exigia o gesto de deslizar, e acabamos criando a uma gem chamada Touch Action
  • A Touch Action é uma Ruby gem open source, que adiciona a possibilidade de executar gestos mais complexos como
  • A gem adiciona esses gestos ao Selenium Webdriver, Watir Webdriver e ao capybara. Podemos passar configurações específicas para os gestos, como por exemplo: Deslizar 80 pixels para a direita, ou rotacionar 30 graus
  • A gem adiciona esses gestos ao Selenium Webdriver, Watir Webdriver e ao capybara. Podemos passar configurações específicas para os gestos, como por exemplo: Deslizar 80 pixels para a direita, ou rotacionar 30 graus
  • A gem adiciona esses gestos ao Selenium Webdriver, Watir Webdriver e ao capybara. Podemos passar configurações específicas para os gestos, como por exemplo: Deslizar 80 pixels para a direita, ou rotacionar 30 graus
  • Agora iremos demonstrar um teste sendo automatizado usando Cucumber, Appium e a gem TouchAction
  • Aqui está o nosso feature file com o cenário que iremos automatizar. É o cenário de indicações de amizade no feed do Facebook. Pra cada linha dessa, iremos desenvolver um código de automação que irá ser executado no smartphone.
  • No caso estamos utilizando Ruby, mas poderia ser qualquer outra linguagem supportada pelo Appium. Não vou entrar muito em detalhes do código pois não tem nada de novo. Mas aqui vemos: Dado que estou na pagina… aí o código de automação pra ir pra pagina do Facebook. E estou logado, o código pra logar no facebook.
  • Eu devo poder deslizar… Pra cada indicação de amizade, a gente checa se ela está visivel, e depois executa o swipe. Como voces podem ver ali, eu chamei o metodo touch_action, passando o gesto a ser executado, e as opcoes (no caso a distancia de -100px)
  • Explicar o passo a passo do video. Por em camera lenta.
  • A gem adiciona esses gestos ao Selenium Webdriver, Watir Webdriver e ao capybara. Podemos passar configurações específicas para os gestos, como por exemplo: Deslizar 80 pixels para a direita, ou rotacionar 30 graus
  • BDD on Mobile: Utilizando Cucumber e Appium para executar testes automatizados em smartphones - Louise Souza e Ricardo Nacif

    1. 1. 1 BDD on Mobile Louise Souza e Ricardo Nacif Utilizando Cucumber + Appium para executar testes automatizados em Smartphones
    2. 2. 2 Apresentação Formada em Ciência da Computação, trabalha com qualidade de software e automação de testes a 3 anos na Avenue Code, atuando na criação de frameworks e casos de testes automatizados para desktop e mobile. Utilizando metodologias ágeis, Louise lidera a equipe de QAs que atuam em diversos clientes nacionais e internacionais. Louise Souza
    3. 3. 3 Apresentação QA Engineer na Avenue Code e desenvolvedor web, desenvolve soluções de teste automatizados utilizando metodologias ágeis. Formado em Sistemas de Informação, trabalha com Ruby desde 2011 e acredita que ferramentas open source são ideais para um bom processo de CI. Ricardo Nacif
    4. 4. 4 Sumário 1. BDD 2. Cucumber o Gherkin 3. Selenium 4. Appium 5. Touch Action Cardápio do dia
    5. 5. 5 Objetivo da apresentação ● Testar uma funcionalidade de um site mobile utilizando práticas Agile: ○ BDD ■ Cucumber ■ Selenium ■ Appium ■ Touch Actions Gem
    6. 6. 6 Introdução ao BDD ● Desenvolvimento Guiado por Comportamento ○ Técnica de desenvolvimento ágil ○ Encoraja a colaboração entre desenvolvedores, QA’s e pessoas não técnicas
    7. 7. 7 Objetivos do BDD ● Resolver os problemas causados pelo TDD ○ Em Destaque: Falta de clareza para a equipe ● Permite que os testes sejam escritos antes do desenvolvimento Com o BDD, toda a equipe compreende o comportamento esperado e os testes são escritos em forma de frase. Assim, quando o desenvolvimento terminar basta executar os testes
    8. 8. 8 BDD Layout ● Utiliza uma linguagem ubíqua para definir o processo de analise. As a <Role> I want <Feature> So that I Receive <Value> Como um < Papel> Eu quero <O que eu quero alcançar> Para que <Por que eu quero alcançar>
    9. 9. 9 Exemplo Validar a quantidade de dígitos do cartão de crédito informado pelo usuário.
    10. 10. 10 Exemplo BDD Como um usuário de um eCommerce Eu quero que uma mensagem de erro seja exibida quando a quantidade de dígitos informada for menor que 16 caracteres no campo de cartão de crédito Para que eu possa enviar meus dados de pagamento corretamente
    11. 11. 11 Exemplo BDD Critérios de aceitação 1. A mensagem de erro deve informar a quantidade de dígitos esperada 2. Ela deve ser exibida sob o campo de cartão de crédito
    12. 12. 12 Exemplo BDD
    13. 13. 13 ● Cucumber é um framework de testes BDD ● Utilizado para automação, torna extremamente fácil essa interação, devido a documentação ser desenvolvida em linguagem usual ● Utiliza a linguagem Gherkin
    14. 14. 14 Gherkin Documentação e Automação Testes!!!!!
    15. 15. 15 Gherkin ● Funcionalidade(Feature) Um texto conciso que descreva a funcionalidade ● Cenário(Scenario) Descrição do teste a ser realizado ● Esquema do Cenário(Scenario Outline) Descrição do teste a ser realizado quando se utiliza uma tabela
    16. 16. 16 Gherkin ● Dado(Given) Alguma pré condição ● Quando(When) Alguma ação executada pelo ator(papel) ● Então(Then) Condição a ser alcançada ● E(And) Qualquer outro passo complementar
    17. 17. 17 Exemplo Cucumber Para que eu possa adicionar novos amigos Como um usuário do Facebook Mobile Eu quero ver as indicações de amigos no meu feed de notícias
    18. 18. 18 Feature File [Texto/Imagem/Vídeo] Funcionalidade: Recomendações de amigos no Facebook Mobile Cenário: Ver as indicações de amizade no feed de notícias Dado que estou na página inicial do facebook (www.facebook.com) E que eu estou logado Quando eu percorrer meu feed de notícias Então eu devo ver um painel com as indicações de amizade E eu devo poder deslizar para ver mais indicações
    19. 19. 19 Selenium Selenium é um framework de testes que permite a automação de testes de aceitação ou testes de funcionalidade para executar em um browser.
    20. 20. 20 Appium ● Framework open source de testes automatizados para smartphones ● Realiza testes em aplicativos nativos e web.
    21. 21. 21 Appium
    22. 22. 22 Appium - Prós ● Open Source ● Comunidade crescendo a cada dia ● Suporta testes em diferentes versões do iOS e do Android
    23. 23. 23 Appium - Prós ● Utiliza o protocolo WebDriver, o mesmo do Selenium ● Testes podem ser executados em dispositivos reais ● É possível rodar os testes em cloud utilizando serviços como Sauce Labs, BrowserStack e Testdroid.
    24. 24. 24 Appium - Contras ● Para rodar os testes no iOS, você precisa de um Mac ● Não suporta rodar múltiplos testes em paralelo ● É uma ferramenta em desenvolvimento, possuí bugs ● Não possuí suporte nativo para simular gestos em aplicações web
    25. 25. 25 Touch Action Open Source Ruby Gem
    26. 26. 26 Gestos TouchAction Toque
    27. 27. 27 Gestos TouchAction Toque - Duplo
    28. 28. 28 Gestos TouchAction Pressionar
    29. 29. 29 Gestos TouchAction Deslizar
    30. 30. 30 Gestos TouchAction Mover
    31. 31. 31 Gestos TouchAction Pinça
    32. 32. 32 Gestos TouchAction Rotacionar
    33. 33. Script manda um código javascript contendo o YUI e o nome do gesto a ser executado junto com as opções 33 TouchAction Gem Script Ruby/Selenium com a Touch Action Gem Servidor do Appium manda o código pro simulador ou smartphone
    34. 34. 34 TouchAction Gem ● Tem suporte para Selenium, Watir Webdriver e Capybara ● Gestos totalmente configuráveis através de opções
    35. 35. 35 TouchAction Gem
    36. 36. 36 Demonstração
    37. 37. 37 Feature File [Texto/Imagem/Vídeo]Cenário: Ver as indicações de amizade no feed de notícias Dado que estou na página inicial do facebook (www.facebook.com) E que eu estou logado Quando eu percorrer meu feed de notícias Então eu devo ver um painel com as indicações de amizade E eu devo poder deslizar para ver mais indicações
    38. 38. 38 Facebook Automation FOTO CODIGO
    39. 39. 39 Facebook Automation
    40. 40. 40 Facebook Automation
    41. 41. 41 TouchAction Gem github.com/Ricardonacif/cucumber_appium
    42. 42. 42 jobs.net/jobs/avenuecode/
    43. 43. 43 lsouza@avenuecode.com rjunior@avenuecode.com

    ×