View
515
Download
0
Category
Preview:
DESCRIPTION
Cómo montar un entorno de testing móvil y añadirlo a un proceso de Integración Continua usando Calabash
Citation preview
CalabashBDD en entornos móviles
¡Hola !
Enrique SánchezTester & Automation Engineer
12 y 13 de noviembre de 2014 Valencia, España
• 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
¿Quién soy?
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ácticoO 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
Cómo configurarlo
Demo I
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
12 y 13 de noviembre de 2014 Valencia, España
* Sólo si no usas iOS 8.1, en cualquier otro caso asegúrate de tener instalado 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
Creamos una nueva Feature
Demo II
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
Rock’n’roll
Demo III
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
Recommended