O documento apresenta técnicas de testes automatizados em aplicativos móveis utilizando Cucumber, Appium e a biblioteca TouchAction. É demonstrado como escrever testes BDD com Cucumber e executá-los em smartphones através do Appium, simulando interações de toque com a TouchAction.
BDD on Mobile: Utilizando Cucumber e Appium para executar testes automatizados em smartphones - Louise Souza e Ricardo Nacif
1. 1
BDD on Mobile
Louise Souza e Ricardo Nacif
Utilizando Cucumber + Appium para executar
testes automatizados em Smartphones
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
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
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
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
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
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>
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
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
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
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
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
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
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
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
Appium
● Framework open source de testes
automatizados para smartphones
● Realiza testes em aplicativos nativos e web.
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
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
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
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
TouchAction Gem
● Tem suporte para Selenium, Watir
Webdriver e Capybara
● Gestos totalmente configuráveis através
de opções
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
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 paraleloUm 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