SlideShare una empresa de Scribd logo
1 de 31
Descargar para leer sin conexión
BDD y Test automatizados
1
Universidad Pontificia de Salamanca
Máster Universitario en Informática Móvil
Sofía Swidarowicz Andrade
17 de Abril de 2015
Configuración de nuestro proyecto
Configuración del proyecto
2
3
Estructura del proyecto:
Configuración del proyecto
.
!"" Gemfile
!"" Gemfile.lock
!"" binary
#   !"" android
#   $"" ios
!"" config
!"" features
$"" output
4
Estructura del proyecto:
Configuración del proyecto
.
!"" Gemfile
!"" binary
!"" config
#   $"" cucumber.yml
!"" features
$"" output
5
Estructura del proyecto:
Configuración del proyecto
.
!"" Gemfile
!"" binary
!"" config
!"" features
#   !"" 1_login.feature
#   !"" helpers
#   #   !"" android
#   #   #   !"" android_helper.rb
#   #   #   $"" support
#   #   #   $"" hooks.rb
#   #   !"" ios
#   #   #   !"" ios_helper.rb
#   #   #   $"" support
#   #   #   !"" hooks.rb
#   #   $"" media_mobile.rb
#   !"" screens
#   !"" step_definitions
#   $"" support
$"" output
6
Estructura del proyecto:
Configuración del proyecto
.
!"" Gemfile
!"" binary
!"" config
!"" features
#   !"" 1_login.feature
#   !"" helpers
#   !"" screens
#   #   !"" common_screen.rb
#   #   !"" dashboard_screen.rb
#   #   $"" login_screen.rb
#   !"" step_definitions
#   #   $"" login_step.rb
#   $"" support
#   !"" env.rb
#   !"" json_expanded_formatter.rb
#   $"" pre_loader.rb
$"" output
Configuración del proyecto
7
Si el proyecto YA EXISTE; y si contiene un
GEMFILE: Instalar las dependencias
$:bundle install (instala todas las dependencias del
gemfile del proyecto)
$:gem install bundle
Las dependencias se encuentran en el gemfile,
adjuntado al proyecto
8
$:calabash-android run build-calabash/<Nombre del
apk> features/1_login.feature --tag @HappyLogin -p
android
Comando para ejecutar un test Android
Configuración del proyecto
$:APP_BUNDLE_PATH=binary/ios/build/LoginApp-cal.app
cucumber features/1_login.feature --tag @LoginApp -
p ios
Comando para ejecutar un test iOS
Configuración del proyecto
9
Query sobre elementos UI
$:query(“*”)
$:query(“*”,:setText=>’Hola’)
$:touch(“class id:’myid’”)
$:query(“class id:’myid’”).count
Configuración del proyecto
10
1.- Instalar calabash-ios 1.- Instalar calabash-android
2.- Calabash-ios setup
3.- Calabash-ios console
2.- Calabash-android console
Configuración del proyecto
11
1.- Instalar Ruby - RVM
$: curl -sSL https://get.rvm.io | bash -s stable --ruby
Configuración del proyecto
12
Configuración del proyecto iOS
13
1.- Command Line Tools instaladas
$: xcode-select --install
Configuración del proyecto iOS
14
3.- Creamos el server de calabash
$: calabash-ios setup
2.- instalamos calabash-ios
$: gem install calabash-cucumber
15
3.1 Generando el esqueleto calabash, si empezamos de
cero un proyecto
$: calabash-ios gen
Configuración del proyecto
Configuración del proyecto iOS
16
4.- Compilamos la app
Abrimos Xcode y compilamos como siempre
Configuración del proyecto iOS
17
5.- Movemos el .app a un fichero conocido y accesible
$: DEVELOPER_DIR=/Applications/Xcode-6-1-1/Xcode.app/
Contents/Developer/ xcodebuild -sdk iphonesimulator -
scheme "LoginApp-cal" -target "LoginApp-cal"
ONLY_ACTIVE_ARCH=NO CONFIGURATION_BUILD_DIR="calabash-
build" clean build
Configuración del proyecto iOS
18
6.- Ejecutamos la consola de calabash
$: APP_BUNDLE_PATH="calabash-build/LoginApp-cal.app"
calabash-ios console
$: start_test_server_in_background
7.- Si se abre el simulador, has logrado configurar
exitosamente calabash-ios en tu app
19
8.- Prueba a lanzar un: query(“*”)
Configuración del proyecto iOS
Configuración Android
20
21
1.- Debemos tener instalados en Android Studio y un
dispositivo virtual, como DALVIK o Genymotion
Android Virtual Device
Android SDK
O Genymotion
Configuración del proyecto
Android
22
2.- Comprobar que tenemos el ANDROID_HOME
$: echo “ANDROID_HOME”
Sino debemos crearlo:
export HOME=/Users/myusuario
export ANDROID_HOME=$HOME/Library/Android/sdk
export PATH_ANDROID=$PATH_ANDROID:$ANDROID_HOME:
$ANDROID_HOME/tools:$ANDROID_HOME/platform-
tools:$ANDROID_HOME/add-ons
export PATH="$PATH_ANDROID/platform-tools:$PATH"
Configuración del proyecto
Android
23
3.- Debemos instalar también GRADLE
4.- Instalamos en raíz
https://gradle.org/
$: /Users/phynet/gradle-2.3
Configuración del proyecto
Android
24
5.- Seguido configuramos nuestro PATH
Instalamos en raíz
export HOME=/Users/myuser
export ANDROID_HOME=$HOME/Library/Android/sdk
export PATH_ANDROID=$PATH_ANDROID:$ANDROID_HOME:$ANDROID_HOME/
tools:$ANDROID_HOME/platform-tools:$ANDROID_HOME/add-ons
export GRADLE_HOME=$HOME/gradle-2.3/bin
export PATH="$PATH_ANDROID/platform-tools:$GRADLE_HOME:$PATH"
Configuración del proyecto
Android
25
$: gem install calabash-android
6.- Instala la gema de calabash-android:
Configuración del proyecto
Android
26
7.- En una ventana del terminal, ve a la ruta de tu
proyecto Android:
cd ruta-de-mi-proyecto-android
Configuración del proyecto
Android
27
9.- Movemos nuestro .apk a una ruta de más fácil acceso
8.- Necesitamos tener el .apk de nuestra aplicación
$: gradle assembleDebug
Compilamos con:
$: my-project/build-calabash/<Nombre del apk>
Configuración del proyecto
Android
28
10.- Abrimos nuestro AVD Dalvik con:
$: emulator -avd Nexus_API_19
11.- Realizamos el resign de la app con calabash
$: calabash-android resign <Nombre del apk>
Configuración del proyecto
Android
29
12.- Ejecutamos la consola con:
13.- Realizamos el calabash-android reinstall apps
$: reinstall_apps
$: calabash-android console build-
calabash/<Nombre del apk>
$: start_test_server_in_background
Configuración del proyecto
Android
Descarga el proyecto en:
30
https://github.com/phynet/BDD-CALABASH-Example
https://github.com/phynet/Heroes-iOS-Calabash-Example
https://github.com/phynet/Heroes-Android-Calabash-Example
Proyecto BDD:
Binary iOS:
Binary Android:
Enlaces de interés
https://github.com/calabash/calabash-ios/wiki/B1-Updating-your-
Calabash-iOS-version
Actualizar framework calabash-ios

Más contenido relacionado

Destacado

Viaje por el mundo
Viaje por el mundoViaje por el mundo
Viaje por el mundo
WGC20
 
Diostedice
DiostediceDiostedice
Diostedice
JOALEMAR
 
Fundación progreso y democracia
Fundación progreso y democraciaFundación progreso y democracia
Fundación progreso y democracia
elosuaj
 
Trabajo final semiótica
Trabajo final semióticaTrabajo final semiótica
Trabajo final semiótica
Mauro111286
 
Apréndete el abecedario
Apréndete el abecedarioApréndete el abecedario
Apréndete el abecedario
WGC20
 
Autos electricos
Autos electricosAutos electricos
Autos electricos
WGC20
 
Ej 2.4.4 vaciado de un depósito
Ej 2.4.4 vaciado de un depósitoEj 2.4.4 vaciado de un depósito
Ej 2.4.4 vaciado de un depósito
litri6692
 
Presentación de dalái lama
Presentación de dalái lamaPresentación de dalái lama
Presentación de dalái lama
lygobu
 

Destacado (20)

Topología de la red
Topología de la redTopología de la red
Topología de la red
 
Pancreas
PancreasPancreas
Pancreas
 
Viaje por el mundo
Viaje por el mundoViaje por el mundo
Viaje por el mundo
 
Acuerdo 019 de 2012 insentivos tributarios para los que inviertan en Neiva
Acuerdo 019 de 2012 insentivos tributarios para los que inviertan en NeivaAcuerdo 019 de 2012 insentivos tributarios para los que inviertan en Neiva
Acuerdo 019 de 2012 insentivos tributarios para los que inviertan en Neiva
 
Diostedice
DiostediceDiostedice
Diostedice
 
Que es una red
Que es una redQue es una red
Que es una red
 
Pasos para trabajar con un procedimiento existente en eGAMbpm
Pasos para trabajar con un procedimiento existente en eGAMbpmPasos para trabajar con un procedimiento existente en eGAMbpm
Pasos para trabajar con un procedimiento existente en eGAMbpm
 
Patri
PatriPatri
Patri
 
Libro qué es el ama
Libro qué es el amaLibro qué es el ama
Libro qué es el ama
 
Fundación progreso y democracia
Fundación progreso y democraciaFundación progreso y democracia
Fundación progreso y democracia
 
Trabajo final semiótica
Trabajo final semióticaTrabajo final semiótica
Trabajo final semiótica
 
Turismo y Reserva de la Biosfera de La Rioja
Turismo y Reserva de la Biosfera de La RiojaTurismo y Reserva de la Biosfera de La Rioja
Turismo y Reserva de la Biosfera de La Rioja
 
Informatica basica
Informatica basicaInformatica basica
Informatica basica
 
Apréndete el abecedario
Apréndete el abecedarioApréndete el abecedario
Apréndete el abecedario
 
Autos electricos
Autos electricosAutos electricos
Autos electricos
 
Ej 2.4.4 vaciado de un depósito
Ej 2.4.4 vaciado de un depósitoEj 2.4.4 vaciado de un depósito
Ej 2.4.4 vaciado de un depósito
 
Testing Proud
Testing ProudTesting Proud
Testing Proud
 
Solidaridad
SolidaridadSolidaridad
Solidaridad
 
Presentación de dalái lama
Presentación de dalái lamaPresentación de dalái lama
Presentación de dalái lama
 
Mitos mediáticos
Mitos mediáticosMitos mediáticos
Mitos mediáticos
 

Similar a BDD - Configuración de un proyecto móvil (iOS - Android)

Aplicaciones moviles iphone ipad
Aplicaciones moviles iphone ipadAplicaciones moviles iphone ipad
Aplicaciones moviles iphone ipad
catalan21
 

Similar a BDD - Configuración de un proyecto móvil (iOS - Android) (20)

Desarrollo de aplicaciones multiplataforma 1/2
Desarrollo de aplicaciones multiplataforma 1/2Desarrollo de aplicaciones multiplataforma 1/2
Desarrollo de aplicaciones multiplataforma 1/2
 
Las buenas prácticas oficiales para aplicaciones Symfony
Las buenas prácticas oficiales para aplicaciones SymfonyLas buenas prácticas oficiales para aplicaciones Symfony
Las buenas prácticas oficiales para aplicaciones Symfony
 
Frameworrk
FrameworrkFrameworrk
Frameworrk
 
Arán Lora - Análisis dinámico de aplicaciones en iOS sin Jailbreak [rooted2019]
Arán Lora - Análisis dinámico de aplicaciones en iOS sin Jailbreak [rooted2019]Arán Lora - Análisis dinámico de aplicaciones en iOS sin Jailbreak [rooted2019]
Arán Lora - Análisis dinámico de aplicaciones en iOS sin Jailbreak [rooted2019]
 
internet of things day 2014 (taller)
internet of things day 2014 (taller)internet of things day 2014 (taller)
internet of things day 2014 (taller)
 
La Caja de Herramientas del Desarrollador Moderno PHPConferenceAR
La Caja de Herramientas del Desarrollador Moderno PHPConferenceARLa Caja de Herramientas del Desarrollador Moderno PHPConferenceAR
La Caja de Herramientas del Desarrollador Moderno PHPConferenceAR
 
Aplicaciones moviles iphone ipad
Aplicaciones moviles iphone ipadAplicaciones moviles iphone ipad
Aplicaciones moviles iphone ipad
 
Ios programming
Ios programmingIos programming
Ios programming
 
Manual genisisweb vol2
Manual genisisweb vol2Manual genisisweb vol2
Manual genisisweb vol2
 
Node-webkit
Node-webkitNode-webkit
Node-webkit
 
App inventor
App inventorApp inventor
App inventor
 
Atix21
Atix21Atix21
Atix21
 
Arquitectura xamarin - Nuestra primera app
Arquitectura xamarin - Nuestra primera appArquitectura xamarin - Nuestra primera app
Arquitectura xamarin - Nuestra primera app
 
Tutorial CodeIgniter + Netbeans 7
Tutorial CodeIgniter + Netbeans 7Tutorial CodeIgniter + Netbeans 7
Tutorial CodeIgniter + Netbeans 7
 
HTML5, CSS3 y móviles
HTML5, CSS3 y móvilesHTML5, CSS3 y móviles
HTML5, CSS3 y móviles
 
2.1 android cep jaen 2014 estructura de aplicación
2.1 android cep jaen 2014   estructura de aplicación2.1 android cep jaen 2014   estructura de aplicación
2.1 android cep jaen 2014 estructura de aplicación
 
Taller de introducción a iOS development
Taller de introducción a iOS developmentTaller de introducción a iOS development
Taller de introducción a iOS development
 
Taller de desarrollo de aplicaciones móviles con la tecnología del SIG Corpor...
Taller de desarrollo de aplicaciones móviles con la tecnología del SIG Corpor...Taller de desarrollo de aplicaciones móviles con la tecnología del SIG Corpor...
Taller de desarrollo de aplicaciones móviles con la tecnología del SIG Corpor...
 
GUIA DE LABORATORIO DEL USO DE LOS FRAMEWORS PHONEGAP Y JQUERY MOBILE EN APL...
GUIA DE  LABORATORIO DEL USO DE LOS FRAMEWORS PHONEGAP Y JQUERY MOBILE EN APL...GUIA DE  LABORATORIO DEL USO DE LOS FRAMEWORS PHONEGAP Y JQUERY MOBILE EN APL...
GUIA DE LABORATORIO DEL USO DE LOS FRAMEWORS PHONEGAP Y JQUERY MOBILE EN APL...
 
Una vuelta por xamarin - .NET Conf CL 2018
Una vuelta por xamarin - .NET Conf CL 2018Una vuelta por xamarin - .NET Conf CL 2018
Una vuelta por xamarin - .NET Conf CL 2018
 

BDD - Configuración de un proyecto móvil (iOS - Android)

  • 1. BDD y Test automatizados 1 Universidad Pontificia de Salamanca Máster Universitario en Informática Móvil Sofía Swidarowicz Andrade 17 de Abril de 2015 Configuración de nuestro proyecto
  • 3. 3 Estructura del proyecto: Configuración del proyecto . !"" Gemfile !"" Gemfile.lock !"" binary #   !"" android #   $"" ios !"" config !"" features $"" output
  • 4. 4 Estructura del proyecto: Configuración del proyecto . !"" Gemfile !"" binary !"" config #   $"" cucumber.yml !"" features $"" output
  • 5. 5 Estructura del proyecto: Configuración del proyecto . !"" Gemfile !"" binary !"" config !"" features #   !"" 1_login.feature #   !"" helpers #   #   !"" android #   #   #   !"" android_helper.rb #   #   #   $"" support #   #   #   $"" hooks.rb #   #   !"" ios #   #   #   !"" ios_helper.rb #   #   #   $"" support #   #   #   !"" hooks.rb #   #   $"" media_mobile.rb #   !"" screens #   !"" step_definitions #   $"" support $"" output
  • 6. 6 Estructura del proyecto: Configuración del proyecto . !"" Gemfile !"" binary !"" config !"" features #   !"" 1_login.feature #   !"" helpers #   !"" screens #   #   !"" common_screen.rb #   #   !"" dashboard_screen.rb #   #   $"" login_screen.rb #   !"" step_definitions #   #   $"" login_step.rb #   $"" support #   !"" env.rb #   !"" json_expanded_formatter.rb #   $"" pre_loader.rb $"" output
  • 7. Configuración del proyecto 7 Si el proyecto YA EXISTE; y si contiene un GEMFILE: Instalar las dependencias $:bundle install (instala todas las dependencias del gemfile del proyecto) $:gem install bundle Las dependencias se encuentran en el gemfile, adjuntado al proyecto
  • 8. 8 $:calabash-android run build-calabash/<Nombre del apk> features/1_login.feature --tag @HappyLogin -p android Comando para ejecutar un test Android Configuración del proyecto $:APP_BUNDLE_PATH=binary/ios/build/LoginApp-cal.app cucumber features/1_login.feature --tag @LoginApp - p ios Comando para ejecutar un test iOS
  • 9. Configuración del proyecto 9 Query sobre elementos UI $:query(“*”) $:query(“*”,:setText=>’Hola’) $:touch(“class id:’myid’”) $:query(“class id:’myid’”).count
  • 10. Configuración del proyecto 10 1.- Instalar calabash-ios 1.- Instalar calabash-android 2.- Calabash-ios setup 3.- Calabash-ios console 2.- Calabash-android console
  • 11. Configuración del proyecto 11 1.- Instalar Ruby - RVM $: curl -sSL https://get.rvm.io | bash -s stable --ruby
  • 13. Configuración del proyecto iOS 13 1.- Command Line Tools instaladas $: xcode-select --install
  • 14. Configuración del proyecto iOS 14 3.- Creamos el server de calabash $: calabash-ios setup 2.- instalamos calabash-ios $: gem install calabash-cucumber
  • 15. 15 3.1 Generando el esqueleto calabash, si empezamos de cero un proyecto $: calabash-ios gen Configuración del proyecto
  • 16. Configuración del proyecto iOS 16 4.- Compilamos la app Abrimos Xcode y compilamos como siempre
  • 17. Configuración del proyecto iOS 17 5.- Movemos el .app a un fichero conocido y accesible $: DEVELOPER_DIR=/Applications/Xcode-6-1-1/Xcode.app/ Contents/Developer/ xcodebuild -sdk iphonesimulator - scheme "LoginApp-cal" -target "LoginApp-cal" ONLY_ACTIVE_ARCH=NO CONFIGURATION_BUILD_DIR="calabash- build" clean build
  • 18. Configuración del proyecto iOS 18 6.- Ejecutamos la consola de calabash $: APP_BUNDLE_PATH="calabash-build/LoginApp-cal.app" calabash-ios console $: start_test_server_in_background 7.- Si se abre el simulador, has logrado configurar exitosamente calabash-ios en tu app
  • 19. 19 8.- Prueba a lanzar un: query(“*”) Configuración del proyecto iOS
  • 21. 21 1.- Debemos tener instalados en Android Studio y un dispositivo virtual, como DALVIK o Genymotion Android Virtual Device Android SDK O Genymotion Configuración del proyecto Android
  • 22. 22 2.- Comprobar que tenemos el ANDROID_HOME $: echo “ANDROID_HOME” Sino debemos crearlo: export HOME=/Users/myusuario export ANDROID_HOME=$HOME/Library/Android/sdk export PATH_ANDROID=$PATH_ANDROID:$ANDROID_HOME: $ANDROID_HOME/tools:$ANDROID_HOME/platform- tools:$ANDROID_HOME/add-ons export PATH="$PATH_ANDROID/platform-tools:$PATH" Configuración del proyecto Android
  • 23. 23 3.- Debemos instalar también GRADLE 4.- Instalamos en raíz https://gradle.org/ $: /Users/phynet/gradle-2.3 Configuración del proyecto Android
  • 24. 24 5.- Seguido configuramos nuestro PATH Instalamos en raíz export HOME=/Users/myuser export ANDROID_HOME=$HOME/Library/Android/sdk export PATH_ANDROID=$PATH_ANDROID:$ANDROID_HOME:$ANDROID_HOME/ tools:$ANDROID_HOME/platform-tools:$ANDROID_HOME/add-ons export GRADLE_HOME=$HOME/gradle-2.3/bin export PATH="$PATH_ANDROID/platform-tools:$GRADLE_HOME:$PATH" Configuración del proyecto Android
  • 25. 25 $: gem install calabash-android 6.- Instala la gema de calabash-android: Configuración del proyecto Android
  • 26. 26 7.- En una ventana del terminal, ve a la ruta de tu proyecto Android: cd ruta-de-mi-proyecto-android Configuración del proyecto Android
  • 27. 27 9.- Movemos nuestro .apk a una ruta de más fácil acceso 8.- Necesitamos tener el .apk de nuestra aplicación $: gradle assembleDebug Compilamos con: $: my-project/build-calabash/<Nombre del apk> Configuración del proyecto Android
  • 28. 28 10.- Abrimos nuestro AVD Dalvik con: $: emulator -avd Nexus_API_19 11.- Realizamos el resign de la app con calabash $: calabash-android resign <Nombre del apk> Configuración del proyecto Android
  • 29. 29 12.- Ejecutamos la consola con: 13.- Realizamos el calabash-android reinstall apps $: reinstall_apps $: calabash-android console build- calabash/<Nombre del apk> $: start_test_server_in_background Configuración del proyecto Android
  • 30. Descarga el proyecto en: 30 https://github.com/phynet/BDD-CALABASH-Example https://github.com/phynet/Heroes-iOS-Calabash-Example https://github.com/phynet/Heroes-Android-Calabash-Example Proyecto BDD: Binary iOS: Binary Android: