Tuesday 18 March 2014

Android QA Automation Architecture 2

Los emuladores android son muy útiles a la hora de desarrollar y probar nuestras aplicaciones android, pero en muchos casos, debido a sus limitaciones, debemos recurrir a dispositivos reales.
Entre estas limitaciones podemos encontrar la falta de sensores ( como NFC, bluetooth y Wifi), instrucciones específicas de procesador (en algunos celulares con microprocesador Intel) y el soporte para dispositivos USB.
Si bien podemos usar dispositivos reales para el desarrollo local, es muy importante poder contar con un entorno de integración continua que utilice los mismos dispositivos.
A continuación les muestro la arquitectura que armé para integración contínua con dispositivos android reales y Jenkins



Arquitectura
Como pueden ver en el diagrama de arquitectura, el servidor con Jenkins tiene una conexión con los diferentes equipos. En este caso estoy utilizando tres con la misma version de android (api level 19) y diferentes vendors o marcas (HTC, Motorola y Samsung) 
Esta arquitectura puede cambiar con otros parámetros, por ejemplo utilizar equipos con diferentes api levels y vendors, tamaños de pantalla, etc.

Conexión

La conexión entre los dispositivos y el servidor es llevada a cabo mediante ADB. Aquí tenemos dos opciones:
  • Mediante un cable usb conectado al servidor
  • A través de la red wifi, mediante el protocolo tcp/ip (Recomendado)
Tip: Si tienen Jenkins en una máquina virtual, pueden probar mapear el puerto USB del driver de ADB a la máquina host.
 Para conectar el celular mediante wifi, tienen que activar ADB sobre red. Esta opción no está disponible en todos los dispositivos, pero existen aplicaciones que permiten hacerlo (necesitan ser root)


Una vez activada la opción, necesitamos conocer nuestra IP. Para ello entramos a la configuración WIFI.

Tip: Es muy importante usar una ip estática en los celulares que estén en Jenkins
Ahora podemos realizar la conexión:

De esta manera, ya tenemos conectado el celular con el servidor
El procedimiento se tiene que repetir para todos los celulares que necesitemos conectar.

Jobs

La configuración de los job es prácticamente la misma. Lo único que hay que tener en cuenta es deshabilitar los emuladores ( si tienen el plugin de android-emulator en jenkins)
También hay que seleccionar el dispositivo en el que queremos correr las tareas, de la siguiente manera:

Ejemplo:

Labels: , , ,