seminario calabash - vlctesting 2014

Post on 04-Jul-2015

514 Views

Category:

Software

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

Cómo montar un entorno de testing móvil y añadirlo a un proceso de Integración Continua usando Calabash

TRANSCRIPT

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

top related