SlideShare una empresa de Scribd logo
1 de 61
Descargar para leer sin conexión
Calabash BDD en entornos móviles
¡Hola ! 
Enrique Sánchez 
Tester & Automation Engineer 
12 y 13 de noviembre de 2014 Valencia, España
¿Quién soy? 
• Technical Team Leader y Responsable Técnico del Área de 
Testing en 
• Más de 4 años de experiencia en testing en empresas como 
• Co-organizador de MAQA y Evangelista BDD y Agile 
12 y 13 de noviembre de 2014 Valencia, España
¿Qué es Medianet? 
Somos una empresa de consultoría 
tecnológica fundada en 1995, 
presente en España, Estados Unidos y 
México 
Somos más de 200 TalenTech People 
con pasión por la calidad y la 
innovación 
12 y 13 de noviembre de 2014 Valencia, España
¿Qué es Medianet? 
12 y 13 de noviembre de 2014 Valencia, España
¿Qué es Medianet? 
Confían en nosotros gente como… 
12 y 13 de noviembre de 2014 Valencia, España
¿Por qué este Seminario?
¿Cuántos tipos de dispositivos móviles, 
versiones de S.O. y configuraciones existen hoy 
día? 
12 y 13 de noviembre de 2014 Valencia, España
¿Cómo podemos aplicar los mismos 
parámetros de calidad a un proyecto móvil que 
a un proyecto web? 
12 y 13 de noviembre de 2014 Valencia, España
Cómo conseguimos no 
gastar más tiempo 
arreglando bugs que 
haciendo cosas útiles 
12 y 13 de noviembre de 2014 Valencia, España
¿De qué va entonces este 
seminario?
Queremos aprender cómo montar un entorno 
que nos permita hacer pruebas para diferentes 
entornos móviles… 
12 y 13 de noviembre de 2014 Valencia, España
Sin volvernos locos… 
vaya… salió Android 5… no me lo esperaba 
12 y 13 de noviembre de 2014 Valencia, España
Sin tener que instalar o conocer miles de 
tecnologías diferentes… 
12 y 13 de noviembre de 2014 Valencia, España
¡¡¡y sin romper versiones anteriores!!! 
12 y 13 de noviembre de 2014 Valencia, España
12 y 13 de noviembre de 2014 Valencia, España
Pongamos un Caso Práctico 
O cómo MediaTesting se 
ahorró un pastón en pruebas
MediaTesting es una empresa a la que le ha 
empezado a ir bien con el desarrollo móvil… 
pero tienen un pequeño problema 
12 y 13 de noviembre de 2014 Valencia, España
Nuestros clientes quieren más calidad en el 
desarrollo de las pruebas pero no quieren 
pagar mucho más… 
12 y 13 de noviembre de 2014 Valencia, España
Enseguida empiezan a pensar en qué opciones 
hay en el mercado y descubren que hay un 
muchas opciones dependiendo del entorno 
Kiwi 
12 y 13 de noviembre de 2014 Valencia, España
Incluso hay algunas Cross-Platform 
12 y 13 de noviembre de 2014 Valencia, España
¿Qué es Calabash?
Calabash enables you to write and execute 
automated acceptance tests of mobile apps. 
Calabash is cross-platform, supporting Android 
and iOS native apps. 
12 y 13 de noviembre de 2014 Valencia, España
¿Por Qué Calabash?
Multiplataforma: iOS y Android 
Permite testing sobre apps nativas 
Independiente del lenguaje elegido para el 
desarrollo 
Open Source 
12 y 13 de noviembre de 2014 Valencia, España
¿Cómo funciona?
Calabash consiste en una serie de librerías que 
permiten probar la funcionalidad. 
Para ello se utiliza una serie de acciones que 
imitan al comportamiento de un usuario final: 
• Gestos: tocar, swipe, rotar… 
• Aserciones: comprobar si un elemento existe 
o contiene cierta información 
• Sreenshots: capturas de pantalla del estado 
actual del dispositivo 
12 y 13 de noviembre de 2014 Valencia, España
Demo I 
Cómo configurarlo
Instala Ruby 
Usa RVM -> http://rvm.io/ 
Instala las gemas necesarias 
$> 
gem 
install 
cucumber 
$> 
gem 
install 
calabash-­‐cucumber 
$> 
gem 
install 
calabash-­‐android 
12 y 13 de noviembre de 2014 Valencia, España
1. ANDROID 
Comprueba que tienes una variable de entorno ANDROID_HOME 
$> 
echo 
$ANDROID_HOME 
Si no lo tenemos, exportarlo dentro de ~/.bahsrc o 
~/.bash_profile 
$> 
export 
ANDROID_HOME=path/to/sdk 
Más info: https://github.com/calabash/calabash-android 
2. IOS 
Instala la última versión de Xcode 
Instala las Command Line Tools (http://osxdaily.com/2014/02/12/install-command- 
line-tools-mac-os-x/) 
Más info: https://github.com/calabash/calabash-ios 
12 y 13 de noviembre de 2014 Valencia, España
ANDROID 
Instala Genymotion (https://cloud.genymotion.com/page/launchpad/ 
download/) 
Baja el simulador para la ROM que quieras 
Configúralo para que use tu ANDROID_HOME 
12 y 13 de noviembre de 2014 Valencia, España
iOS 
Instala sim-launcher* 
$> 
brew 
install 
ios-­‐sim 
* Sólo si no usas iOS 8.1, en cualquier otro caso asegúrate de tener instalado 
12 y 13 de noviembre de 2014 Valencia, España 
Instruments
12 y 13 de noviembre de 2014 Valencia, España
Es hora de crear nuestro proyecto: 
$> 
mkdir 
VLC_testing_calabash 
12 y 13 de noviembre de 2014 Valencia, España
Crea un árbol de directorios similar al siguiente: 
├ 
config 
<-­‐ 
Guardaremos 
la 
config 
genérica 
├ 
features 
<-­‐ 
Dónde 
irán 
las 
features 
│ 
├ 
android 
<-­‐ 
Definiciones 
concretas 
para 
Android 
│ 
│ 
├ 
pages 
<-­‐ 
Screen 
Objects 
para 
Android 
│ 
│ 
├ 
support 
<-­‐ 
Soporte 
para 
Android 
│ 
├ 
ios 
│ 
│ 
├ 
pages 
<-­‐ 
Definiciones 
concretas 
para 
iOS 
│ 
│ 
├ 
support 
<-­‐ 
Screen 
Objects 
para 
iOS 
│ 
├ 
step_definitions 
<-­‐ 
Definición 
de 
los 
steps 
│ 
├ 
support 
<-­‐ 
Soporte 
genérico 
├ 
apps 
<-­‐ 
Guardaremos 
los 
binarios 
de 
las 
apps 
12 y 13 de noviembre de 2014 Valencia, España
Copiamos estos dos binarios al directorio apps 
$> 
cd 
apps 
$> 
wget 
https://www.dropbox.com/sh/4liqujul5mqme1z/ 
AADbw2HLusihacSxepIFj5Rna/Android-­‐debug.apk?dl=0 
$> 
wget 
https://www.dropbox.com/sh/4liqujul5mqme1z/ 
AACydxl0KG8i0fpMw_HJvXK9a/WordPress-­‐cal.app?dl=0 
12 y 13 de noviembre de 2014 Valencia, España
ANDROID 
Firma la app usando Calabash 
$> 
calabash-­‐android 
resign 
<apk> 
Si aparece algún error entonces sigue estas instrucciones: https:// 
github.com/calabash/calabash-android/wiki/Running-Calabash-Android 
12 y 13 de noviembre de 2014 Valencia, España
Comprueba que todo se ha instalado 
correctamente 
$> 
calabash-­‐android 
console 
app/<andriod>.apk 
irb(main):001:0> 
reinstall_apps 
=> 
nil 
irb(main):002:0> 
start_test_server_in_background 
=> 
nil 
12 y 13 de noviembre de 2014 Valencia, España
iOS 
Comprueba que todo se ha instalado 
correctamente 
$> 
APP_BUNDLE_PATH=app/<ios>-­‐cal.app 
calabash-­‐ios 
console 
irb(main):001:0> 
start_test_server_in_background 
=> 
nil 
12 y 13 de noviembre de 2014 Valencia, España
12 y 13 de noviembre de 2014 Valencia, España
Si has llegado hasta aquí tu jefe estará muy 
contento… 
12 y 13 de noviembre de 2014 Valencia, España
Creemos Features
Demo II 
Creamos una nueva Feature
Creemos una nueva feature que sea común para iOS y Android: 
$> 
vim 
features/login.feature 
Feature: 
Login 
@invalid 
Scenario: 
Add 
site 
-­‐ 
Invalid 
login 
Given 
I 
am 
about 
to 
login 
When 
I 
enter 
invalid 
credentials 
Then 
I 
am 
presented 
with 
an 
error 
message 
to 
correct 
credentials 
@valid 
Scenario: 
Add 
site 
Given 
I 
am 
about 
to 
login 
When 
I 
enter 
valid 
credentials 
Then 
I 
am 
successfully 
authenticated 
And 
I 
can 
see 
posts 
for 
the 
site 
12 y 13 de noviembre de 2014 Valencia, España
Definamos los steps: 
$> 
vim 
features/login.feature 
Given(/^I 
am 
about 
to 
login$/) 
do 
@current_page 
= 
page(LoginPage).await(timeout: 
30) 
@current_page.self_hosted_site 
end 
When(/^I 
enter 
invalid 
credentials$/) 
do 
user 
= 
CREDENTIALS[:invalid_user] 
@current_page 
= 
@current_page.login(user[:username], 
user[:password], 
CREDENTIALS[:site]) 
end 
Then(/^I 
am 
presented 
with 
an 
error 
message 
to 
correct 
credentials$/) 
do 
#TODO 
end 
When(/^I 
enter 
valid 
credentials$/) 
do 
user 
= 
CREDENTIALS[:valid_user] 
@current_page 
= 
@current_page.login(user[:username], 
user[:password],CREDENTIALS[:site]) 
end 
Then(/^I 
am 
successfully 
authenticated$/) 
do 
unless 
@current_page.is_a?(SitePage) 
raise 
"Expected 
SitePage, 
but 
found 
#{@current_page}" 
end 
end 
12 y 13 de noviembre de 2014 Valencia, España
Definamos los steps: 
$> 
vim 
features/login.feature 
When(/^I 
can 
see 
posts 
for 
the 
site$/) 
do 
@current_page.to_posts 
end 
12 y 13 de noviembre de 2014 Valencia, España
Creamos los Screen Objects y el código auxiliar 
$> 
git 
clone 
https://github.com/enriquesanchezb/ 
vlctesting14.git 
12 y 13 de noviembre de 2014 Valencia, España
12 y 13 de noviembre de 2014 Valencia, España
¿Cómo añadimos esto a un 
proceso de IC?
Continuous Integration is a software 
development practice where members of a 
team integrate their work frequently (…) 
Each integration is verified by an automated 
build (including test) to detect integration errors 
as quickly as possible 
12 y 13 de noviembre de 2014 Valencia, España
12 y 13 de noviembre de 2014 Valencia, España
Demo III 
Rock’n’roll
Instalamos Jenkins 
$> brew install jenkins 
12 y 13 de noviembre de 2014 Valencia, España
Instalamos los plugins 
que necesitamos 
12 y 13 de noviembre de 2014 Valencia, España
Comprobamos que 
Xcode y el 
ANDROID_HOME 
están correctos 
12 y 13 de noviembre de 2014 Valencia, España
Creamos un nuevo Job para cada una de las 
dos tareas que queremos realizar 
12 y 13 de noviembre de 2014 Valencia, España
Darle nombre a la tarea 
Crear un nuevo 
comando de 
shell 
12 y 13 de noviembre de 2014 Valencia, España
Preguntas? Gracias!
Enrique Sánchez | enrique.sanchezbayuela@medianet.es | @EnriqueSanchezB 
12 y 13 de noviembre de 2014 Valencia, España
Seminario Calabash - VLCTesting 2014

Más contenido relacionado

La actualidad más candente

Flujos de trabajo para un desarrollador web frontend
Flujos de trabajo para un desarrollador web frontendFlujos de trabajo para un desarrollador web frontend
Flujos de trabajo para un desarrollador web frontendLeonidas Esteban González
 
Multiplica tu productividad usando un preprocesador de css
Multiplica tu productividad usando un preprocesador de cssMultiplica tu productividad usando un preprocesador de css
Multiplica tu productividad usando un preprocesador de cssLeonidas Esteban González
 
Code Blast 2012 - Fast Mobile Prototyping
Code Blast 2012 - Fast Mobile PrototypingCode Blast 2012 - Fast Mobile Prototyping
Code Blast 2012 - Fast Mobile PrototypingINSIGNIA4U
 
Sácale todo el provecho a Stylus el mejor pre procesador de CSS
Sácale todo el provecho a Stylus el mejor pre procesador de CSSSácale todo el provecho a Stylus el mejor pre procesador de CSS
Sácale todo el provecho a Stylus el mejor pre procesador de CSSLeonidas Esteban González
 
Code Blast 2012 - Node.js
Code Blast 2012 - Node.jsCode Blast 2012 - Node.js
Code Blast 2012 - Node.jsINSIGNIA4U
 
Taller subflash 2012
Taller subflash 2012Taller subflash 2012
Taller subflash 2012Raul Jimenez
 
Testing en BDD con Python y Behave
Testing en BDD con Python y BehaveTesting en BDD con Python y Behave
Testing en BDD con Python y BehaveMario IC
 

La actualidad más candente (9)

Flujos de trabajo para un desarrollador web frontend
Flujos de trabajo para un desarrollador web frontendFlujos de trabajo para un desarrollador web frontend
Flujos de trabajo para un desarrollador web frontend
 
Cocoapods
CocoapodsCocoapods
Cocoapods
 
Multiplica tu productividad usando un preprocesador de css
Multiplica tu productividad usando un preprocesador de cssMultiplica tu productividad usando un preprocesador de css
Multiplica tu productividad usando un preprocesador de css
 
Code Blast 2012 - Fast Mobile Prototyping
Code Blast 2012 - Fast Mobile PrototypingCode Blast 2012 - Fast Mobile Prototyping
Code Blast 2012 - Fast Mobile Prototyping
 
Sácale todo el provecho a Stylus el mejor pre procesador de CSS
Sácale todo el provecho a Stylus el mejor pre procesador de CSSSácale todo el provecho a Stylus el mejor pre procesador de CSS
Sácale todo el provecho a Stylus el mejor pre procesador de CSS
 
Code Blast 2012 - Node.js
Code Blast 2012 - Node.jsCode Blast 2012 - Node.js
Code Blast 2012 - Node.js
 
Taller subflash 2012
Taller subflash 2012Taller subflash 2012
Taller subflash 2012
 
Carlos
CarlosCarlos
Carlos
 
Testing en BDD con Python y Behave
Testing en BDD con Python y BehaveTesting en BDD con Python y Behave
Testing en BDD con Python y Behave
 

Similar a Seminario Calabash - VLCTesting 2014

VLCTESTING-testeo-y-calidad-javascript-Jaime-Lopez
VLCTESTING-testeo-y-calidad-javascript-Jaime-LopezVLCTESTING-testeo-y-calidad-javascript-Jaime-Lopez
VLCTESTING-testeo-y-calidad-javascript-Jaime-LopezJaime L. López Carratalá
 
Lecciones aprendidas desarrollando una plataforma de Mobile Monkey Testing
Lecciones aprendidas desarrollando una plataforma de Mobile Monkey TestingLecciones aprendidas desarrollando una plataforma de Mobile Monkey Testing
Lecciones aprendidas desarrollando una plataforma de Mobile Monkey TestingAbstracta
 
El tester no es un desarrollador - VLCTesting '14
El tester no es un desarrollador - VLCTesting '14El tester no es un desarrollador - VLCTesting '14
El tester no es un desarrollador - VLCTesting '14Víctor Gómez Adán
 
cómo medir lo inmensurable: real user experience
cómo medir lo inmensurable: real user experiencecómo medir lo inmensurable: real user experience
cómo medir lo inmensurable: real user experienceAlmudena Vivanco
 
Un taller práctica de Innovación colectiva
Un taller práctica de Innovación colectivaUn taller práctica de Innovación colectiva
Un taller práctica de Innovación colectivaRodger Evans
 
Sistemas de control de versiones: SVN
Sistemas de control de versiones: SVNSistemas de control de versiones: SVN
Sistemas de control de versiones: SVNpablozacrosuarez
 
Introducción a PWA
Introducción a PWAIntroducción a PWA
Introducción a PWAJose Leiva
 
Ruby On Rails definición, instalación y videotutorial
Ruby On Rails definición, instalación y videotutorialRuby On Rails definición, instalación y videotutorial
Ruby On Rails definición, instalación y videotutorialIsabel Gómez
 
Docker para desarrolladores .NET
Docker para desarrolladores .NETDocker para desarrolladores .NET
Docker para desarrolladores .NETAdrian Diaz Cervera
 
AWS para torpes - Introducción a AWS
AWS para torpes - Introducción a AWSAWS para torpes - Introducción a AWS
AWS para torpes - Introducción a AWSAlvaro García Loaisa
 
Como asegurar la Calidad en dispositivos móviles...y no morir en el intento
Como asegurar la Calidad en dispositivos móviles...y no morir en el intentoComo asegurar la Calidad en dispositivos móviles...y no morir en el intento
Como asegurar la Calidad en dispositivos móviles...y no morir en el intentoVíctor Gómez Adán
 
Dev ops infraestructura agil con open source
Dev ops   infraestructura agil con open sourceDev ops   infraestructura agil con open source
Dev ops infraestructura agil con open sourcescrumecuador
 

Similar a Seminario Calabash - VLCTesting 2014 (20)

El pequeño se hace mayor
El pequeño se hace mayor El pequeño se hace mayor
El pequeño se hace mayor
 
VLCTESTING-testeo-y-calidad-javascript-Jaime-Lopez
VLCTESTING-testeo-y-calidad-javascript-Jaime-LopezVLCTESTING-testeo-y-calidad-javascript-Jaime-Lopez
VLCTESTING-testeo-y-calidad-javascript-Jaime-Lopez
 
BDD en practica (seminario)
BDD en practica (seminario)BDD en practica (seminario)
BDD en practica (seminario)
 
Lecciones aprendidas desarrollando una plataforma de Mobile Monkey Testing
Lecciones aprendidas desarrollando una plataforma de Mobile Monkey TestingLecciones aprendidas desarrollando una plataforma de Mobile Monkey Testing
Lecciones aprendidas desarrollando una plataforma de Mobile Monkey Testing
 
El tester no es un desarrollador - VLCTesting '14
El tester no es un desarrollador - VLCTesting '14El tester no es un desarrollador - VLCTesting '14
El tester no es un desarrollador - VLCTesting '14
 
10 cosas de rails que deberías saber
10 cosas de rails que deberías saber10 cosas de rails que deberías saber
10 cosas de rails que deberías saber
 
cómo medir lo inmensurable: real user experience
cómo medir lo inmensurable: real user experiencecómo medir lo inmensurable: real user experience
cómo medir lo inmensurable: real user experience
 
Un taller práctica de Innovación colectiva
Un taller práctica de Innovación colectivaUn taller práctica de Innovación colectiva
Un taller práctica de Innovación colectiva
 
Workshop calabash appium
Workshop calabash appiumWorkshop calabash appium
Workshop calabash appium
 
Sistemas de control de versiones: SVN
Sistemas de control de versiones: SVNSistemas de control de versiones: SVN
Sistemas de control de versiones: SVN
 
act1rcg
act1rcgact1rcg
act1rcg
 
Introducción a PWA
Introducción a PWAIntroducción a PWA
Introducción a PWA
 
Ruby On Rails definición, instalación y videotutorial
Ruby On Rails definición, instalación y videotutorialRuby On Rails definición, instalación y videotutorial
Ruby On Rails definición, instalación y videotutorial
 
Docker para desarrolladores .NET
Docker para desarrolladores .NETDocker para desarrolladores .NET
Docker para desarrolladores .NET
 
AWS para torpes - Introducción a AWS
AWS para torpes - Introducción a AWSAWS para torpes - Introducción a AWS
AWS para torpes - Introducción a AWS
 
Como asegurar la Calidad en dispositivos móviles...y no morir en el intento
Como asegurar la Calidad en dispositivos móviles...y no morir en el intentoComo asegurar la Calidad en dispositivos móviles...y no morir en el intento
Como asegurar la Calidad en dispositivos móviles...y no morir en el intento
 
Progressive Web Apps - .NET Conf CO 2017
Progressive Web Apps - .NET Conf CO 2017Progressive Web Apps - .NET Conf CO 2017
Progressive Web Apps - .NET Conf CO 2017
 
Java
JavaJava
Java
 
Dev ops infraestructura agil con open source
Dev ops   infraestructura agil con open sourceDev ops   infraestructura agil con open source
Dev ops infraestructura agil con open source
 
Respuestas
RespuestasRespuestas
Respuestas
 

Más de Enrique Sánchez-Bayuela

Más de Enrique Sánchez-Bayuela (7)

Lecciones aprendidas con appium
Lecciones aprendidas con appiumLecciones aprendidas con appium
Lecciones aprendidas con appium
 
Cómo ser un Agile Tester (y no morir intentándolo)
Cómo ser un Agile Tester (y no morir intentándolo)Cómo ser un Agile Tester (y no morir intentándolo)
Cómo ser un Agile Tester (y no morir intentándolo)
 
Just Code or How I learned to write code and stop worrying about the environment
Just Code or How I learned to write code and stop worrying about the environmentJust Code or How I learned to write code and stop worrying about the environment
Just Code or How I learned to write code and stop worrying about the environment
 
BDD para la mejora de la calidad software
BDD para la mejora de la calidad softwareBDD para la mejora de la calidad software
BDD para la mejora de la calidad software
 
Why do you say BDD if it is Cucumber?
Why do you say BDD if it is Cucumber?Why do you say BDD if it is Cucumber?
Why do you say BDD if it is Cucumber?
 
BDD & Cucumber
BDD & CucumberBDD & Cucumber
BDD & Cucumber
 
Tuenti & QA
Tuenti & QATuenti & QA
Tuenti & QA
 

Seminario Calabash - VLCTesting 2014

  • 1. Calabash BDD en entornos móviles
  • 2. ¡Hola ! Enrique Sánchez Tester & Automation Engineer 12 y 13 de noviembre de 2014 Valencia, España
  • 3. ¿Quién soy? • Technical Team Leader y Responsable Técnico del Área de Testing en • Más de 4 años de experiencia en testing en empresas como • Co-organizador de MAQA y Evangelista BDD y Agile 12 y 13 de noviembre de 2014 Valencia, España
  • 4. ¿Qué es Medianet? Somos una empresa de consultoría tecnológica fundada en 1995, presente en España, Estados Unidos y México Somos más de 200 TalenTech People con pasión por la calidad y la innovación 12 y 13 de noviembre de 2014 Valencia, España
  • 5. ¿Qué es Medianet? 12 y 13 de noviembre de 2014 Valencia, España
  • 6. ¿Qué es Medianet? Confían en nosotros gente como… 12 y 13 de noviembre de 2014 Valencia, España
  • 7. ¿Por qué este Seminario?
  • 8. ¿Cuántos tipos de dispositivos móviles, versiones de S.O. y configuraciones existen hoy día? 12 y 13 de noviembre de 2014 Valencia, España
  • 9. ¿Cómo podemos aplicar los mismos parámetros de calidad a un proyecto móvil que a un proyecto web? 12 y 13 de noviembre de 2014 Valencia, España
  • 10. Cómo conseguimos no gastar más tiempo arreglando bugs que haciendo cosas útiles 12 y 13 de noviembre de 2014 Valencia, España
  • 11. ¿De qué va entonces este seminario?
  • 12. Queremos aprender cómo montar un entorno que nos permita hacer pruebas para diferentes entornos móviles… 12 y 13 de noviembre de 2014 Valencia, España
  • 13. Sin volvernos locos… vaya… salió Android 5… no me lo esperaba 12 y 13 de noviembre de 2014 Valencia, España
  • 14. Sin tener que instalar o conocer miles de tecnologías diferentes… 12 y 13 de noviembre de 2014 Valencia, España
  • 15. ¡¡¡y sin romper versiones anteriores!!! 12 y 13 de noviembre de 2014 Valencia, España
  • 16. 12 y 13 de noviembre de 2014 Valencia, España
  • 17. Pongamos un Caso Práctico O cómo MediaTesting se ahorró un pastón en pruebas
  • 18. MediaTesting es una empresa a la que le ha empezado a ir bien con el desarrollo móvil… pero tienen un pequeño problema 12 y 13 de noviembre de 2014 Valencia, España
  • 19. Nuestros clientes quieren más calidad en el desarrollo de las pruebas pero no quieren pagar mucho más… 12 y 13 de noviembre de 2014 Valencia, España
  • 20. Enseguida empiezan a pensar en qué opciones hay en el mercado y descubren que hay un muchas opciones dependiendo del entorno Kiwi 12 y 13 de noviembre de 2014 Valencia, España
  • 21. Incluso hay algunas Cross-Platform 12 y 13 de noviembre de 2014 Valencia, España
  • 23. Calabash enables you to write and execute automated acceptance tests of mobile apps. Calabash is cross-platform, supporting Android and iOS native apps. 12 y 13 de noviembre de 2014 Valencia, España
  • 25. Multiplataforma: iOS y Android Permite testing sobre apps nativas Independiente del lenguaje elegido para el desarrollo Open Source 12 y 13 de noviembre de 2014 Valencia, España
  • 27. Calabash consiste en una serie de librerías que permiten probar la funcionalidad. Para ello se utiliza una serie de acciones que imitan al comportamiento de un usuario final: • Gestos: tocar, swipe, rotar… • Aserciones: comprobar si un elemento existe o contiene cierta información • Sreenshots: capturas de pantalla del estado actual del dispositivo 12 y 13 de noviembre de 2014 Valencia, España
  • 28. Demo I Cómo configurarlo
  • 29. Instala Ruby Usa RVM -> http://rvm.io/ Instala las gemas necesarias $> gem install cucumber $> gem install calabash-­‐cucumber $> gem install calabash-­‐android 12 y 13 de noviembre de 2014 Valencia, España
  • 30. 1. ANDROID Comprueba que tienes una variable de entorno ANDROID_HOME $> echo $ANDROID_HOME Si no lo tenemos, exportarlo dentro de ~/.bahsrc o ~/.bash_profile $> export ANDROID_HOME=path/to/sdk Más info: https://github.com/calabash/calabash-android 2. IOS Instala la última versión de Xcode Instala las Command Line Tools (http://osxdaily.com/2014/02/12/install-command- line-tools-mac-os-x/) Más info: https://github.com/calabash/calabash-ios 12 y 13 de noviembre de 2014 Valencia, España
  • 31. ANDROID Instala Genymotion (https://cloud.genymotion.com/page/launchpad/ download/) Baja el simulador para la ROM que quieras Configúralo para que use tu ANDROID_HOME 12 y 13 de noviembre de 2014 Valencia, España
  • 32. iOS Instala sim-launcher* $> brew install ios-­‐sim * Sólo si no usas iOS 8.1, en cualquier otro caso asegúrate de tener instalado 12 y 13 de noviembre de 2014 Valencia, España Instruments
  • 33. 12 y 13 de noviembre de 2014 Valencia, España
  • 34. Es hora de crear nuestro proyecto: $> mkdir VLC_testing_calabash 12 y 13 de noviembre de 2014 Valencia, España
  • 35. Crea un árbol de directorios similar al siguiente: ├ config <-­‐ Guardaremos la config genérica ├ features <-­‐ Dónde irán las features │ ├ android <-­‐ Definiciones concretas para Android │ │ ├ pages <-­‐ Screen Objects para Android │ │ ├ support <-­‐ Soporte para Android │ ├ ios │ │ ├ pages <-­‐ Definiciones concretas para iOS │ │ ├ support <-­‐ Screen Objects para iOS │ ├ step_definitions <-­‐ Definición de los steps │ ├ support <-­‐ Soporte genérico ├ apps <-­‐ Guardaremos los binarios de las apps 12 y 13 de noviembre de 2014 Valencia, España
  • 36. Copiamos estos dos binarios al directorio apps $> cd apps $> wget https://www.dropbox.com/sh/4liqujul5mqme1z/ AADbw2HLusihacSxepIFj5Rna/Android-­‐debug.apk?dl=0 $> wget https://www.dropbox.com/sh/4liqujul5mqme1z/ AACydxl0KG8i0fpMw_HJvXK9a/WordPress-­‐cal.app?dl=0 12 y 13 de noviembre de 2014 Valencia, España
  • 37. ANDROID Firma la app usando Calabash $> calabash-­‐android resign <apk> Si aparece algún error entonces sigue estas instrucciones: https:// github.com/calabash/calabash-android/wiki/Running-Calabash-Android 12 y 13 de noviembre de 2014 Valencia, España
  • 38. Comprueba que todo se ha instalado correctamente $> calabash-­‐android console app/<andriod>.apk irb(main):001:0> reinstall_apps => nil irb(main):002:0> start_test_server_in_background => nil 12 y 13 de noviembre de 2014 Valencia, España
  • 39. iOS Comprueba que todo se ha instalado correctamente $> APP_BUNDLE_PATH=app/<ios>-­‐cal.app calabash-­‐ios console irb(main):001:0> start_test_server_in_background => nil 12 y 13 de noviembre de 2014 Valencia, España
  • 40. 12 y 13 de noviembre de 2014 Valencia, España
  • 41. Si has llegado hasta aquí tu jefe estará muy contento… 12 y 13 de noviembre de 2014 Valencia, España
  • 43. Demo II Creamos una nueva Feature
  • 44. Creemos una nueva feature que sea común para iOS y Android: $> vim features/login.feature Feature: Login @invalid Scenario: Add site -­‐ Invalid login Given I am about to login When I enter invalid credentials Then I am presented with an error message to correct credentials @valid Scenario: Add site Given I am about to login When I enter valid credentials Then I am successfully authenticated And I can see posts for the site 12 y 13 de noviembre de 2014 Valencia, España
  • 45. Definamos los steps: $> vim features/login.feature Given(/^I am about to login$/) do @current_page = page(LoginPage).await(timeout: 30) @current_page.self_hosted_site end When(/^I enter invalid credentials$/) do user = CREDENTIALS[:invalid_user] @current_page = @current_page.login(user[:username], user[:password], CREDENTIALS[:site]) end Then(/^I am presented with an error message to correct credentials$/) do #TODO end When(/^I enter valid credentials$/) do user = CREDENTIALS[:valid_user] @current_page = @current_page.login(user[:username], user[:password],CREDENTIALS[:site]) end Then(/^I am successfully authenticated$/) do unless @current_page.is_a?(SitePage) raise "Expected SitePage, but found #{@current_page}" end end 12 y 13 de noviembre de 2014 Valencia, España
  • 46. Definamos los steps: $> vim features/login.feature When(/^I can see posts for the site$/) do @current_page.to_posts end 12 y 13 de noviembre de 2014 Valencia, España
  • 47. Creamos los Screen Objects y el código auxiliar $> git clone https://github.com/enriquesanchezb/ vlctesting14.git 12 y 13 de noviembre de 2014 Valencia, España
  • 48. 12 y 13 de noviembre de 2014 Valencia, España
  • 49. ¿Cómo añadimos esto a un proceso de IC?
  • 50. Continuous Integration is a software development practice where members of a team integrate their work frequently (…) Each integration is verified by an automated build (including test) to detect integration errors as quickly as possible 12 y 13 de noviembre de 2014 Valencia, España
  • 51. 12 y 13 de noviembre de 2014 Valencia, España
  • 53. Instalamos Jenkins $> brew install jenkins 12 y 13 de noviembre de 2014 Valencia, España
  • 54. Instalamos los plugins que necesitamos 12 y 13 de noviembre de 2014 Valencia, España
  • 55. Comprobamos que Xcode y el ANDROID_HOME están correctos 12 y 13 de noviembre de 2014 Valencia, España
  • 56. Creamos un nuevo Job para cada una de las dos tareas que queremos realizar 12 y 13 de noviembre de 2014 Valencia, España
  • 57. Darle nombre a la tarea Crear un nuevo comando de shell 12 y 13 de noviembre de 2014 Valencia, España
  • 58.
  • 60. Enrique Sánchez | enrique.sanchezbayuela@medianet.es | @EnriqueSanchezB 12 y 13 de noviembre de 2014 Valencia, España