SlideShare uma empresa Scribd logo
1 de 37
Automação mobile com Calabash
Grupo de Testes Carioca + Meetech
Josenildo Amorim
- 6 anos de QA
- Foco recente em automação
- Agilismo é vida!
- QA para ajudar a fazer o melhor produto
Afinal, o que o mobile tem de
diferente?
Fragmentação
i see versions… everywhere!
Tamanhos de tela
Galaxy S5 vs iPhone 5S
size matters !
mas parece que o jogo virou...
Tá, e como eu
automatizo isso?
Calabash
- Criado pela LessPainful, comprado pela
Xamarin
- Open source
- Cross plataform
- Testes escritos em Ruby
- Cucumber
Calabash
Android
Arquitetura Android
Calabash Android: Passo a Passo
- Gerar Apk (Android Studio/Terminal)
- Assinar Apk para criação do test server
- Conectar device/simulator
- Executar especificações
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
Executar especificações
Deve estar dentro do diretório onde estão as features
Apenas 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
Calabash
iOS
(em alguns casos, calabash cucumber)
Arquitetura iOS
Calabash iOS: Passo a Passo
- Configurar projeto no Xcode
- Gerar App com target do Calabash (Xcode/
Terminal)
- Verificar device/simulator conectados
- Executar especificações
Configurando o projeto no Xcode
calabash 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.
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)
Executar especificações
Deve estar dentro do diretório onde estão as features
Em 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
Debugar
é preciso!
Debugando
- Elementos para interagir com o app
- Query
- Console em Ruby
- Acesso aos métodos que você escreveu
- Resolução de erros
Debugando
Iniciando 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
Exemplos de consultas no console
query "* 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
Estrutura
do projeto
Arquitetura de Projeto em 3 camadas
Screen
Steps
Feature
Cucumber
Ruby
Ruby
Feature
Especificação da funcionalidade, composta
por Contexto, Cenários e Passos.
Steps
Automação dos passos presentes nos
cenários da feature.
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.
Conhecendo o
sunomono
Não é esse (mas é bom também)
- Monta a estrutura básica do projeto
- Possui métodos base
- Cross plataform
- Scripts para facilitar os builds
- Aceitamos PRs :)
Sunomono
Dúvidas?
Links
- Site oficial do Calabash
- Github calabash android
- Github calabash iOS
- Github sunomono
www.concretesolutions.com.br
Rio de Janeiro – Rua São José, 90 – cj. 2121
Centro – (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

Mais conteúdo relacionado

Destaque

RSS Talento 1.0 - Os Segredos de Uma Gestão Eficaz
RSS Talento 1.0 - Os Segredos de Uma Gestão EficazRSS Talento 1.0 - Os Segredos de Uma Gestão Eficaz
RSS Talento 1.0 - Os Segredos de Uma Gestão EficazMarina Salvitti Reichenbach
 
Siren button - Phone based Emergency Alert System
Siren button - Phone based Emergency Alert SystemSiren button - Phone based Emergency Alert System
Siren button - Phone based Emergency Alert SystemVasudev Jagarlamudi
 
Spastic paraplegia
Spastic paraplegiaSpastic paraplegia
Spastic paraplegiaagho john
 
Kuhn_HonoringFreedom_Full_Promo
Kuhn_HonoringFreedom_Full_PromoKuhn_HonoringFreedom_Full_Promo
Kuhn_HonoringFreedom_Full_PromoThomas Baylerian
 
Terminos basicos de la estadistica
Terminos basicos de la estadisticaTerminos basicos de la estadistica
Terminos basicos de la estadisticaJose Antonio Virardi
 
Agace cegesti manual_aguas_para_empresas
Agace cegesti manual_aguas_para_empresasAgace cegesti manual_aguas_para_empresas
Agace cegesti manual_aguas_para_empresasSilvio Duran
 
ўқув амалиёти аппарат 22 март
ўқув амалиёти аппарат 22 мартўқув амалиёти аппарат 22 март
ўқув амалиёти аппарат 22 мартIlyosbey Nazarov
 
2. martin nash checkit story
2. martin nash   checkit story2. martin nash   checkit story
2. martin nash checkit storyChris Hill
 
Urban Airship and Android Integration for Push Notification and In-App Notifi...
Urban Airship and Android Integration for Push Notification and In-App Notifi...Urban Airship and Android Integration for Push Notification and In-App Notifi...
Urban Airship and Android Integration for Push Notification and In-App Notifi...Zeeshan Rahman
 

Destaque (17)

RSS Talento 1.0 - Os Segredos de Uma Gestão Eficaz
RSS Talento 1.0 - Os Segredos de Uma Gestão EficazRSS Talento 1.0 - Os Segredos de Uma Gestão Eficaz
RSS Talento 1.0 - Os Segredos de Uma Gestão Eficaz
 
projects_with_descriptions
projects_with_descriptionsprojects_with_descriptions
projects_with_descriptions
 
Siren button - Phone based Emergency Alert System
Siren button - Phone based Emergency Alert SystemSiren button - Phone based Emergency Alert System
Siren button - Phone based Emergency Alert System
 
Alisadora para el cabello
Alisadora para el cabelloAlisadora para el cabello
Alisadora para el cabello
 
Deep Web
Deep WebDeep Web
Deep Web
 
Spastic paraplegia
Spastic paraplegiaSpastic paraplegia
Spastic paraplegia
 
Home loan
Home loanHome loan
Home loan
 
Tornillo
TornilloTornillo
Tornillo
 
patel
patelpatel
patel
 
Kuhn_HonoringFreedom_Full_Promo
Kuhn_HonoringFreedom_Full_PromoKuhn_HonoringFreedom_Full_Promo
Kuhn_HonoringFreedom_Full_Promo
 
Wix behavior paper
Wix behavior paperWix behavior paper
Wix behavior paper
 
Terminos basicos de la estadistica
Terminos basicos de la estadisticaTerminos basicos de la estadistica
Terminos basicos de la estadistica
 
Agace cegesti manual_aguas_para_empresas
Agace cegesti manual_aguas_para_empresasAgace cegesti manual_aguas_para_empresas
Agace cegesti manual_aguas_para_empresas
 
Behavior paper
Behavior paperBehavior paper
Behavior paper
 
ўқув амалиёти аппарат 22 март
ўқув амалиёти аппарат 22 мартўқув амалиёти аппарат 22 март
ўқув амалиёти аппарат 22 март
 
2. martin nash checkit story
2. martin nash   checkit story2. martin nash   checkit story
2. martin nash checkit story
 
Urban Airship and Android Integration for Push Notification and In-App Notifi...
Urban Airship and Android Integration for Push Notification and In-App Notifi...Urban Airship and Android Integration for Push Notification and In-App Notifi...
Urban Airship and Android Integration for Push Notification and In-App Notifi...
 

Semelhante a Automação mobile com Calabash

Android Dev Conference 2017 - Automação de Testes na Cloud
Android Dev Conference 2017 - Automação de Testes na CloudAndroid Dev Conference 2017 - Automação de Testes na Cloud
Android Dev Conference 2017 - Automação de Testes na CloudiMasters
 
Curso de Desenvolvimento de Aplicativos Híbridos com PhoneGap/Cordova, e Ionic
Curso de Desenvolvimento de Aplicativos Híbridos com PhoneGap/Cordova, e IonicCurso de Desenvolvimento de Aplicativos Híbridos com PhoneGap/Cordova, e Ionic
Curso de Desenvolvimento de Aplicativos Híbridos com PhoneGap/Cordova, e IonicFelipe Blini
 
[GUTS-RS] Workshop (prático) de Testes Automatizados para dispositivos móveis...
[GUTS-RS] Workshop (prático) de Testes Automatizados para dispositivos móveis...[GUTS-RS] Workshop (prático) de Testes Automatizados para dispositivos móveis...
[GUTS-RS] Workshop (prático) de Testes Automatizados para dispositivos móveis...GUTS-RS
 
Xamarin + TDD - Reagindo rápido à mudanças no mundo mobile
Xamarin + TDD - Reagindo rápido à mudanças no mundo mobileXamarin + TDD - Reagindo rápido à mudanças no mundo mobile
Xamarin + TDD - Reagindo rápido à mudanças no mundo mobileakamud
 
[MTC 2021] Regressão visual com applitools, appium e amazon aws device farm -...
[MTC 2021] Regressão visual com applitools, appium e amazon aws device farm -...[MTC 2021] Regressão visual com applitools, appium e amazon aws device farm -...
[MTC 2021] Regressão visual com applitools, appium e amazon aws device farm -...minastestingconference
 
MTC - Automatizando Visual Regression Testing
MTC - Automatizando Visual Regression TestingMTC - Automatizando Visual Regression Testing
MTC - Automatizando Visual Regression TestingSamanta Cicilia
 
Java+DDD+BDD+TDD=Sucesso Total
Java+DDD+BDD+TDD=Sucesso TotalJava+DDD+BDD+TDD=Sucesso Total
Java+DDD+BDD+TDD=Sucesso TotalEduardo Bregaida
 
Automatizando tudo no mundo mobile com fastlane
Automatizando tudo no mundo mobile com fastlaneAutomatizando tudo no mundo mobile com fastlane
Automatizando tudo no mundo mobile com fastlaneakamud
 
Criando uma grid para execução de testes paralelo com Appium
Criando uma grid para execução de testes paralelo com AppiumCriando uma grid para execução de testes paralelo com Appium
Criando uma grid para execução de testes paralelo com AppiumElias Nogueira
 
TDC2016SP - Entrega Contínua com Xamarin: Monte sua esteira
TDC2016SP - Entrega Contínua com Xamarin: Monte sua esteiraTDC2016SP - Entrega Contínua com Xamarin: Monte sua esteira
TDC2016SP - Entrega Contínua com Xamarin: Monte sua esteiratdc-globalcode
 
TDC2016 - SP - Trilha Xamarin - Entrega Contínua com Xamarin #MonteSuaEsteira
TDC2016 - SP - Trilha Xamarin - Entrega Contínua com Xamarin #MonteSuaEsteiraTDC2016 - SP - Trilha Xamarin - Entrega Contínua com Xamarin #MonteSuaEsteira
TDC2016 - SP - Trilha Xamarin - Entrega Contínua com Xamarin #MonteSuaEsteiraDiego Gabriel Cardoso
 
Workshop react + adonis.js
Workshop react + adonis.jsWorkshop react + adonis.js
Workshop react + adonis.jsDenis Velrino
 
DDD + BDD + TDD - RF 2015
DDD + BDD + TDD - RF 2015 DDD + BDD + TDD - RF 2015
DDD + BDD + TDD - RF 2015 Eduardo Bregaida
 

Semelhante a Automação mobile com Calabash (20)

Android Dev Conference 2017 - Automação de Testes na Cloud
Android Dev Conference 2017 - Automação de Testes na CloudAndroid Dev Conference 2017 - Automação de Testes na Cloud
Android Dev Conference 2017 - Automação de Testes na Cloud
 
Curso de Desenvolvimento de Aplicativos Híbridos com PhoneGap/Cordova, e Ionic
Curso de Desenvolvimento de Aplicativos Híbridos com PhoneGap/Cordova, e IonicCurso de Desenvolvimento de Aplicativos Híbridos com PhoneGap/Cordova, e Ionic
Curso de Desenvolvimento de Aplicativos Híbridos com PhoneGap/Cordova, e Ionic
 
[GUTS-RS] Workshop (prático) de Testes Automatizados para dispositivos móveis...
[GUTS-RS] Workshop (prático) de Testes Automatizados para dispositivos móveis...[GUTS-RS] Workshop (prático) de Testes Automatizados para dispositivos móveis...
[GUTS-RS] Workshop (prático) de Testes Automatizados para dispositivos móveis...
 
Xamarin + TDD - Reagindo rápido à mudanças no mundo mobile
Xamarin + TDD - Reagindo rápido à mudanças no mundo mobileXamarin + TDD - Reagindo rápido à mudanças no mundo mobile
Xamarin + TDD - Reagindo rápido à mudanças no mundo mobile
 
[MTC 2021] Regressão visual com applitools, appium e amazon aws device farm -...
[MTC 2021] Regressão visual com applitools, appium e amazon aws device farm -...[MTC 2021] Regressão visual com applitools, appium e amazon aws device farm -...
[MTC 2021] Regressão visual com applitools, appium e amazon aws device farm -...
 
Plack
PlackPlack
Plack
 
MTC - Automatizando Visual Regression Testing
MTC - Automatizando Visual Regression TestingMTC - Automatizando Visual Regression Testing
MTC - Automatizando Visual Regression Testing
 
Java+DDD+BDD+TDD=Sucesso Total
Java+DDD+BDD+TDD=Sucesso TotalJava+DDD+BDD+TDD=Sucesso Total
Java+DDD+BDD+TDD=Sucesso Total
 
Introdução ao Android
Introdução ao AndroidIntrodução ao Android
Introdução ao Android
 
PhoneGap
PhoneGapPhoneGap
PhoneGap
 
Debug de cabo a rabo
Debug de cabo a raboDebug de cabo a rabo
Debug de cabo a rabo
 
Automatizando tudo no mundo mobile com fastlane
Automatizando tudo no mundo mobile com fastlaneAutomatizando tudo no mundo mobile com fastlane
Automatizando tudo no mundo mobile com fastlane
 
Criando uma grid para execução de testes paralelo com Appium
Criando uma grid para execução de testes paralelo com AppiumCriando uma grid para execução de testes paralelo com Appium
Criando uma grid para execução de testes paralelo com Appium
 
Empreendedori$mo com Android
Empreendedori$mo com AndroidEmpreendedori$mo com Android
Empreendedori$mo com Android
 
TDC2016SP - Entrega Contínua com Xamarin: Monte sua esteira
TDC2016SP - Entrega Contínua com Xamarin: Monte sua esteiraTDC2016SP - Entrega Contínua com Xamarin: Monte sua esteira
TDC2016SP - Entrega Contínua com Xamarin: Monte sua esteira
 
TDC2016 - SP - Trilha Xamarin - Entrega Contínua com Xamarin #MonteSuaEsteira
TDC2016 - SP - Trilha Xamarin - Entrega Contínua com Xamarin #MonteSuaEsteiraTDC2016 - SP - Trilha Xamarin - Entrega Contínua com Xamarin #MonteSuaEsteira
TDC2016 - SP - Trilha Xamarin - Entrega Contínua com Xamarin #MonteSuaEsteira
 
Workshop react + adonis.js
Workshop react + adonis.jsWorkshop react + adonis.js
Workshop react + adonis.js
 
Conhecendo o PhoneGap
Conhecendo o PhoneGapConhecendo o PhoneGap
Conhecendo o PhoneGap
 
Conheça a Plataforma Xamarin
Conheça a Plataforma XamarinConheça a Plataforma Xamarin
Conheça a Plataforma Xamarin
 
DDD + BDD + TDD - RF 2015
DDD + BDD + TDD - RF 2015 DDD + BDD + TDD - RF 2015
DDD + BDD + TDD - RF 2015
 

Automação mobile com Calabash

  • 1. Automação mobile com Calabash Grupo de Testes Carioca + Meetech
  • 2. Josenildo Amorim - 6 anos de QA - Foco recente em automação - Agilismo é vida! - QA para ajudar a fazer o melhor produto
  • 3. Afinal, o que o mobile tem de diferente?
  • 5. Tamanhos de tela Galaxy S5 vs iPhone 5S size matters ! mas parece que o jogo virou...
  • 6. Tá, e como eu automatizo isso?
  • 8. - Criado pela LessPainful, comprado pela Xamarin - Open source - Cross plataform - Testes escritos em Ruby - Cucumber
  • 11. Calabash Android: Passo a Passo - Gerar Apk (Android Studio/Terminal) - Assinar Apk para criação do test server - Conectar device/simulator - Executar especificações
  • 12. 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
  • 13. Executar especificações Deve estar dentro do diretório onde estão as features Apenas 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
  • 14. Calabash iOS (em alguns casos, calabash cucumber)
  • 16. Calabash iOS: Passo a Passo - Configurar projeto no Xcode - Gerar App com target do Calabash (Xcode/ Terminal) - Verificar device/simulator conectados - Executar especificações
  • 17. Configurando o projeto no Xcode calabash 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.
  • 18. 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)
  • 19. Executar especificações Deve estar dentro do diretório onde estão as features Em 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
  • 21. Debugando - Elementos para interagir com o app - Query - Console em Ruby - Acesso aos métodos que você escreveu - Resolução de erros
  • 22. Debugando Iniciando 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
  • 23. Exemplos de consultas no console query "* 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
  • 25. Arquitetura de Projeto em 3 camadas Screen Steps Feature Cucumber Ruby Ruby
  • 26. Feature Especificação da funcionalidade, composta por Contexto, Cenários e Passos.
  • 27.
  • 28. Steps Automação dos passos presentes nos cenários da feature.
  • 29.
  • 30. 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.
  • 31.
  • 33. Não é esse (mas é bom também)
  • 34. - Monta a estrutura básica do projeto - Possui métodos base - Cross plataform - Scripts para facilitar os builds - Aceitamos PRs :) Sunomono
  • 36. Links - Site oficial do Calabash - Github calabash android - Github calabash iOS - Github sunomono
  • 37. www.concretesolutions.com.br Rio de Janeiro – Rua São José, 90 – cj. 2121 Centro – (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