37
Automação mobile com Calabash Grupo de Testes Carioca + Meetech

Automação mobile com calabash

Embed Size (px)

Citation preview

Page 1: Automação mobile com calabash

Automação mobile com CalabashGrupo de Testes Carioca + Meetech

Page 2: Automação mobile com calabash

Josenildo Amorim- 6 anos de QA - Foco recente em automação - Agilismo é vida!- QA para ajudar a fazer o melhor produto

Page 3: Automação mobile com calabash

Afinal, o que o mobile tem de diferente?

Page 4: Automação mobile com calabash

Fragmentaçãoi see versions… everywhere!

Page 5: Automação mobile com calabash

Tamanhos de tela

Galaxy S5 vs iPhone 5S

size matters !

mas parece que o jogo virou...

Page 6: Automação mobile com calabash

Tá, e como eu automatizo isso?

Page 7: Automação mobile com calabash

Calabash

Page 8: Automação mobile com calabash

- Criado pela LessPainful, comprado pela Xamarin

- Open source- Cross plataform- Testes escritos em Ruby- Cucumber

Page 9: Automação mobile com calabash

Calabash Android

Page 10: Automação mobile com calabash

Arquitetura Android

Page 11: Automação mobile com calabash

Calabash Android: Passo a Passo

- Gerar Apk (Android Studio/Terminal)- Assinar Apk para criação do test

server- Conectar device/simulator- Executar especificações

Page 12: Automação mobile com calabash

Assinar APK calabash-android resign <apk>

Gerar APK Android Studio

./gradlew assembleDebug (mac/linux)gradlew.bat (windows)

Conectar devices/simulator device em modo depuração (adb)

emulator -avd <nome_do_emulator> OU Android Studio

Page 13: Automação mobile com calabash

Executar especificaçõesDeve estar dentro do diretório onde estão as featuresApenas um device conectado:

calabash-android run <seu-apk> -p android

Mais de um device conectado:

ADB_DEVICE_ARG="id-do-device" calabash-android run <seu-apk> -p android

Page 14: Automação mobile com calabash

Calabash iOS

(em alguns casos, calabash cucumber)

Page 15: Automação mobile com calabash

Arquitetura iOS

Page 16: Automação mobile com calabash

Calabash iOS: Passo a Passo

- Configurar projeto no Xcode- Gerar App com target do Calabash

(Xcode/ Terminal)- Verificar device/simulator conectados- Executar especificações

Page 17: Automação mobile com calabash

Configurando o projeto no Xcodecalabash ios setup - Cria uma nova configuração de build com o calabash.framework. Deve ser executado dentro do diretório do projeto iOS

-cal Target - Uma cópia do target original gerado pelo passo anterior. O build para teste deve ser feito nesse target.Fique atento, pois novas funcionalidades feitas pelos devs ios devem ser linkadas a esse target também, senão o build irá falhar.

Page 18: Automação mobile com calabash

Gerar App XCode

xcodebuild - workspace <caminho-do-workspace> -scheme <target-cal> -destination <simulator> -

configuration <build-config>Verificar devices/simulator conectados

xcrun simctl -list (simulator)ios-deploy -c (device)

Page 19: Automação mobile com calabash

Executar especificaçõesDeve estar dentro do diretório onde estão as featuresEm simuladores:

APP_BUNDLE_PATH='<caminho-para-app>' DEVICE_TARGET='<id-simulador>' cucumber -p ios

Em devices (deve estar na mesma rede que o mac):

APP_BUNDLE_PATH='<caminho-para-app>' DEVICE_TARGET='<id-device>'

DEVICE_ENDPOINT="<http://ip-do-device:37265>"cucumber -p ios

Page 20: Automação mobile com calabash

Debugar é preciso!

Page 21: Automação mobile com calabash

Debugando

- Elementos para interagir com o app- Query- Console em Ruby- Acesso aos métodos que você escreveu- Resolução de erros

Page 22: Automação mobile com calabash

DebugandoIniciando o console:

calabash-android console <apk>

APP_BUNDLE_PATH='.app/ipa' DEVICE_TARGET='id-device' DEVICE_ENDPOINT ="http://ip-do-device:37265" calabash-ios

console

e em seguida, iniciar a aplicação pelo console..

start_test_server_in_background

Page 23: Automação mobile com calabash

Exemplos de consultas no consolequery "* id:'seu id'" <= Retorna os elementos ao id correspondente

query "* marked:'texto ou id'" <= Retorna os elementos ao texto/id correspondente

query "* id:'seu id'", :text <= Retorna o texto do elemento

result = query "* id:'seu id'" <= Adiciona o resultado a uma variável

query "*", :someMethod <= Acessa um método específico como :getError

query "* {text CONTAINS[c] 'text'}" <= Retorna qualquer string que tiver o texto da query

query "* id:'seu id' index:seu index" <= Retorna o elemento pelo index

Page 24: Automação mobile com calabash

Estrutura do

projeto

Page 25: Automação mobile com calabash

Arquitetura de Projeto em 3 camadas

Screen

Steps

FeatureCucumber

Ruby

Ruby

Page 26: Automação mobile com calabash

Feature

Especificação da funcionalidade, composta por Contexto, Cenários e Passos.

Page 27: Automação mobile com calabash
André Mendes
Concordo com a Sam
Page 28: Automação mobile com calabash

Steps

Automação dos passos presentes nos cenários da feature.

Page 29: Automação mobile com calabash
Page 30: Automação mobile com calabash

Screen

Abstração de uma tela Android/iOS, na forma de uma classe ruby, contendo os elementos que serão utilizados no momento da execução da especificação.

Page 31: Automação mobile com calabash
Page 32: Automação mobile com calabash

Conhecendo o sunomono

Page 33: Automação mobile com calabash

Não é esse (mas é bom também)

Page 34: Automação mobile com calabash

- Monta a estrutura básica do projeto- Possui métodos base- Cross plataform- Scripts para facilitar os builds- Aceitamos PRs :)

Sunomono

Page 35: Automação mobile com calabash

Dúvidas?

Page 36: Automação mobile com calabash

Links- Site oficial do Calabash- Github calabash android- Github calabash iOS- Github sunomono

Page 37: Automação mobile com calabash

www.concretesolutions.com.br

Rio de Janeiro – Rua São José, 90 – cj. 2121Centro – (21) 2240-2030

São Paulo - Av. Nações Unidas, 11.541 3º andar - Brooklin - (11) 4119-0449

Ajudamos empresas a criar produtos digitais de sucesso