BDD on Mobile: Utilizando Cucumber e Appium para executar testes automatizados em smartphones -...

Preview:

Citation preview

1

BDD on Mobile

Louise Souza e Ricardo Nacif

Utilizando Cucumber + Appium para executar testes automatizados em Smartphones

2

ApresentaçãoFormada 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

ApresentaçãoQA 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

Sumário

1. BDD2. Cucumbero Gherkin

3. Selenium4. Appium5. Touch Action

Cardápio do dia

5

Objetivo da apresentação

● Testar uma funcionalidade de um site mobile utilizando práticas Agile:○ BDD

■ Cucumber■ Selenium■ Appium■ Touch Actions Gem

Louise Avelar de Souza
Ricardo, vou deixar esse slide aqui.. sei q ta ruim mas depois a gente discute sobre!
Ricardo Junior
Só por uns bullets points e tirar a ultima frase na minha opinião

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

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

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

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 eCommerceEu 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éditoPara que eu possa enviar meus dados de pagamento corretamente

Ricardo Junior
Seria: Como um usuárioEu quero que uma mensagem de erro seja exibida quando a quantidade de dígitos digitada for menor que 16 no campo de cartão de créditoPara que eu possa enviar meus dados de pagamento corretamente

11

Exemplo BDD

Critérios de aceitação1. A mensagem de erro deve informar a quantidade

de dígitos esperada2. Ela deve ser exibida sob o campo de cartão de

crédito

12

Exemplo BDD

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

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 a ser realizado

● Esquema do Cenário(Scenario Outline)Descrição do teste a ser realizado quando se utiliza uma tabela

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

Exemplo Cucumber

Para que eu possa adicionar novos amigosComo um usuário do Facebook MobileEu quero ver as indicações de amigos no meu feed de notícias

18

Feature File

[Texto/Imagem/Vídeo]Funcionalidade: Recomendações de amigos no Facebook MobileCená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 logadoQuando eu percorrer meu feed de notíciasEntão eu devo ver um painel com as indicações de amizade E eu devo poder deslizar para ver mais indicações

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

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

● É possível rodar os testes em cloud utilizando serviços como Sauce Labs, BrowserStack e Testdroid.

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

Touch ActionOpen 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

Script Ruby/Selenium

com a Touch Action Gem

Servidor do Appium manda o

código pro simulador ou smartphone

34

TouchAction Gem

● Tem suporte para Selenium, Watir Webdriver e Capybara

● Gestos totalmente configuráveis através de opções

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 inicial do facebook (www.facebook.com) E que eu estou logadoQuando eu percorrer meu feed de notíciasEntão eu devo ver um painel com as indicações de amizade E eu devo poder deslizar para ver mais indicações

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

Recommended