codemotion 2015: ui tests, test cloud y ci con apps xamarin
TRANSCRIPT
INTEGRACIÓN CONTINUA CON XAMARINJAVIER SUÁREZ RUIZ
.
.
Integración continua con Apps XamarinJavier Suárez Ruiz
MADRID · NOV 27-28 · 2015
INTEGRACIÓN CONTINUA CON XAMARINJAVIER SUÁREZ RUIZ
.
.
Javier SuárezMicrosoft MVP Windows Platform DevelopmentSoftware Developer at Plain Concepts
• Blog: http://geeks.ms/blogs/jsuarez• Email: [email protected]• Twitter: @jsuarezruiz
INTEGRACIÓN CONTINUA CON XAMARINJAVIER SUÁREZ RUIZ
.
.
INTEGRACIÓN CONTINUA CON XAMARINJAVIER SUÁREZ RUIZ
.
.
XAMARIN: APPS NATIVAS MULTIPLATAFORMA
INTEGRACIÓN CONTINUA CON XAMARINJAVIER SUÁREZ RUIZ
.
.
XAMARIN
Base de código C# compartido • 100% acceso a APIs nativas • Alto rendimiento
iOS C# UI
Windows C# UIAndroid C# UI
Shared C# Mobile
INTEGRACIÓN CONTINUA CON XAMARINJAVIER SUÁREZ RUIZ
.
.
XAMARIN + XAMARIN.FORMS
Original Con Xamarin.Forms
iOS C# UI
Windows C# UIAndroid C# UI
Shared C# Backend
Shared UI Code
Shared C# Backend
INTEGRACIÓN CONTINUA CON XAMARINJAVIER SUÁREZ RUIZ
.
.
Cualquier cosa que pudieras hacer con Objective-C, Swift, o Java
se puede hacer con C# y Visual Studio con Xamarin.
INTEGRACIÓN CONTINUA CON XAMARINJAVIER SUÁREZ RUIZ
.
.ESTADÍSTICAS DE
CÓDIGO COMPARTID
O
Mac
iOS
Android
Windows Phone
iCircuit Touch Draw
86%
14%
72%
28%
70%
30%
61%
39%
88%
12%
76%
24%
90%
10%
INTEGRACIÓN CONTINUA CON XAMARINJAVIER SUÁREZ RUIZ
.
.
DEMOXamarin Classic y Xamarin Forms
COSAS QUE PASAN…
¿CIERTO?
INTEGRACIÓN CONTINUA CON XAMARINJAVIER SUÁREZ RUIZ
.
.
¿QUÉ VAMOS A VER?Un vistazo a la agenda
Repasamos nuestra App Xamarin, creamos pruebas unitarias y pruebas de interfaz de usuario.
Pruebas unitarias y de UIUn vistazo rápido a que es la integración continua, que puede hacer por nosotros además de que es necesario.
Integración Continua
Nos centraremos en utilizar Team City que configuraremos para desplegar, compilar y pasar tests unitarios de Apps Xamarin.
Configuración y usoCerramos integrando Xamarin Test Cloud en nuestro proceso de integración continua.
Xamarin Test Cloud
INTEGRACIÓN CONTINUA CON XAMARINJAVIER SUÁREZ RUIZ
.
.
• Fragmentación
• Complejidad de Apps
• Ciclos ágiles
• Expectación alta usuarios
EL RETO
INTEGRACIÓN CONTINUA CON XAMARINJAVIER SUÁREZ RUIZ
.
.
+5 Versiones del sistema22 Dispositivos20 Idiomas35 Localizaciones6 Tamaños de pantalla
9 Versiones del sistema6 Configuraciones de pantalla27 Tamaños de pantalla39 Idiomas
57 Localizaciones+15 FabricantesMás de 19,000 dispositivos distintos
EN TELÉFONOS, LA CALIDAD CUESTA
INTEGRACIÓN CONTINUA CON XAMARINJAVIER SUÁREZ RUIZ
.
.
INTEGRACIÓN CONTINUA CON XAMARINJAVIER SUÁREZ RUIZ
.
.
INTEGRACIÓN CONTINUA CON XAMARINJAVIER SUÁREZ RUIZ
.
.
DIVERSIFICACIÓN EN IOS
3D Touch iPhone 6s
Apple penciliPad Pro
Multi TaskingSolo en algunos iPads
iPads
iPod touchiPhones
Factores de forma
Características iOS 9
INTEGRACIÓN CONTINUA CON XAMARINJAVIER SUÁREZ RUIZ
.
.
Mercado dispositivos USADeberíamos tener 134 dispositivos para cubrir al menos el 75% del Mercado de USA
25% 50% 75% 90%Market Share
Num
ber o
f Dev
ices
13
45
134
288
0
INTEGRACIÓN CONTINUA CON XAMARINJAVIER SUÁREZ RUIZ
.
.
Ciclos prolongados
Iteraciones rápidas
Test más complejos
Tests simples
Beta Testing
Test manuales
Test automáticos de UI
Unit Testing
¿Cómo testeamos?
Test automáticos de UI permiten asegurar:
• Arranque• Apariencia• Comportamiento
En distintos dispositivos
INTEGRACIÓN CONTINUA CON XAMARINJAVIER SUÁREZ RUIZ
.
.
DEMOApp Xamarin y test unitarios
INTEGRACIÓN CONTINUA CON XAMARINJAVIER SUÁREZ RUIZ
.
.
• Crear tests automáticos de la interfaz de usuarios en C#
• Se pueden corer directamente desde Visual Studio o Xamarin Studio
• Se pueden usar simuladores• Funciona con apps: Nativas,
Híbridas o Xamarin• Se pueden subir a Test Cloud
INTRODUCCIÓN A XAMARIN.UITEST
INTEGRACIÓN CONTINUA CON XAMARINJAVIER SUÁREZ RUIZ
.
.
XAMARIN TEST CLOUD
INTEGRACIÓN CONTINUA CON XAMARINJAVIER SUÁREZ RUIZ
.
.
INTEGRACIÓN CONTINUA CON XAMARINJAVIER SUÁREZ RUIZ
.
.
DEMOXamarin UITest
INTEGRACIÓN CONTINUA CON XAMARINJAVIER SUÁREZ RUIZ
.
.
¿INTEGRACIÓN CONTINUA?¿Qué es?
La integración continua consiste en hacer integraciones automáticas de un Proyecto lo más a menudo possible para así detector fallos cuantos antes.Entendemos por integración la compilación y ejecución de pruebas.Wikipedia
INTEGRACIÓN CONTINUA CON XAMARINJAVIER SUÁREZ RUIZ
.
.
INTEGRACIÓN CONTINUAWorkflow
Resultados
Repositorio de código
Servidor BUILD
Desarrollador
App BuildEjecutar tests
Unitarios
Commit
CódigoTests Unitarios
1º
2º
3º
INTEGRACIÓN CONTINUA CON XAMARINJAVIER SUÁREZ RUIZ
.
.
¿QUÉ NOS APORTA LA INTEGRACIÓN CONTINUA?Beneficios
“La integración continua no evitará que se produzcan bugs, pero si nos permite encontrarlos
y solucionarlos de una forma dramáticamente más fácil” Martin Flowler
INTEGRACIÓN CONTINUA CON XAMARINJAVIER SUÁREZ RUIZ
.
.
¿QUÉ NOS APORTA LA INTEGRACIÓN CONTINUA?Beneficios. Encontrar errores más rápido!
• Detectar errores con mayor rapidez y antelación.
• Más sencillo de corregir.
• Más barato.
INTEGRACIÓN CONTINUA CON XAMARINJAVIER SUÁREZ RUIZ
.
.
¿QUÉ NOS APORTA LA INTEGRACIÓN CONTINUA?Beneficios. Minimiza problemas en Merges.
• Una integración continua con Builds frecuentes tiende a forzar Commits más pequeños.
• Más fácil de hacer rollback.
INTEGRACIÓN CONTINUA CON XAMARINJAVIER SUÁREZ RUIZ
.
.
¿QUÉ NOS APORTA LA INTEGRACIÓN CONTINUA?Beneficios. En mi máquina funciona…
• Consistencia. Builds reproducibles.
• La App funcionará en cualquier entorno con las mismas condiciones.
• Evitamos la “contaminación de la Build”
INTEGRACIÓN CONTINUA CON XAMARINJAVIER SUÁREZ RUIZ
.
.
VENTAJAS INTEGRACIÓN CONTINUAPoder desplegar en cualquier momento
• Necesitamos entregar una version al cliente…
• ¿Para cuando?• AHORA
INTEGRACIÓN CONTINUA CON XAMARINJAVIER SUÁREZ RUIZ
.
.
CONTROL DE CÓDIGO FUENTEOpciones
Team Foundation Server
o
Visual Studio Online
Git / GitHub
INTEGRACIÓN CONTINUA CON XAMARINJAVIER SUÁREZ RUIZ
.
.
CI SOFTWARETFS
• Mucho más que CI• Sólo para Windows. Requiere
utilizat Mac Build Host.• Requiere Xamarin Pro o Business.
INTEGRACIÓN CONTINUA CON XAMARINJAVIER SUÁREZ RUIZ
.
.
CI SOFTWARETeamCity
• Fácil de instalar.• Windows & OSX.• Versión gratuita.
INTEGRACIÓN CONTINUA CON XAMARINJAVIER SUÁREZ RUIZ
.
.
CI SOFTWAREJenkis
• Open Source• Windows & OSX• Fácil de instalar• Enorme cantidad de plug-ins
SETUP1. Servidor de control de
código Fuente.2. Servidor Integración
Continua.3. Instalar y activar Xamarin
Studio.4. Preparar Build script.5. Configurar la Build en el
servidor de Integración Continua.
MAC para la compilación de Apps iOS. Suficiente MAC Mini.
INTEGRACIÓN CONTINUA CON XAMARINJAVIER SUÁREZ RUIZ
.
.
DEMOUn vistazo a Team City
INTEGRACIÓN CONTINUA CON XAMARINJAVIER SUÁREZ RUIZ
.
.
¿PORQUE CREAR UN SCRIPT?La importancia del Script
• Traceable• Los Devs pueden usarlo también!• Documentación• Mayor facilidad a la hora de
mantenerlo todo• Simplifica la configuración del
servidor de integración
INTEGRACIÓN CONTINUA CON XAMARINJAVIER SUÁREZ RUIZ
.
.
¿PORQUE CREAR UN SCRIPT?F# MAKE
• F# Make o más conocido como FAKE, es un Sistema de automatización de Builds.
• Similar a Make o Rake.• DSL sin necesidad de F#. Si
necesitamos más funcionalidad que la disponible por defecto escribiremos código F# o referencias a librerías .NET.
• Funciona en Windows y OSX.
INTEGRACIÓN CONTINUA CON XAMARINJAVIER SUÁREZ RUIZ
.
.
HOLA MUNDO FAKEF# MAKE
#r "tools/FAKE/tools/FakeLib.dll" // include Fake libopen Fake Target "Test" (fun _ -> trace "Testing stuff...") Target "Deploy" (fun _ -> trace "Deploy stuff...") "Test" // define the dependencies ==> "Deploy" Run "Deploy"
INTEGRACIÓN CONTINUA CON XAMARINJAVIER SUÁREZ RUIZ
.
.
DEMOBUILDs automáticas de Apps Xamarin con Team City
INTEGRACIÓN CONTINUA CON XAMARINJAVIER SUÁREZ RUIZ
.
.
ENTREGA DE LA APLICACIÓNHockeyApp
• Podemos subir versiones de la App de manera automática desde nuestras Builds.
• Podemos notificar a clientes o testers.
• Recibir feedback.• Crashs.• API para desarrolladores.
INTEGRACIÓN CONTINUA CON XAMARINJAVIER SUÁREZ RUIZ
.
.
INTEGRACIÓN CONTINUA CON XAMARINJAVIER SUÁREZ RUIZ
.
.
INTEGRACIÓN CONTINUA CON XAMARINJAVIER SUÁREZ RUIZ
.
.
DEMOEntrega continua
INTEGRACIÓN CONTINUA CON XAMARINJAVIER SUÁREZ RUIZ
.
.
CONCLUSIONES INTEGRACIÓN CONTINUA¿Qué hemos aprendido?
• Automatización• Commits más frecuentes• Builds continuas, se detectan
fallos más rápido• No se sube código que rompa
la Build• Corrección de bugs con mayor
facilidad y rapidez• Build en cualquier entorno
destino
INTEGRACIÓN CONTINUA CON XAMARINJAVIER SUÁREZ RUIZ
.
.
Rápido
Equipo de QA puede probar con rapidez y recibir completos informes desde Xamarin Test Cloud
Cientos de dispositivos
Podemos accede y probar nuestra aplicación en gran cantidad de dispositivos diferentes
Integración Continua
Compilación, pruebas unitarias e integración con Xamarin Test Cloud
Reportes
Mucho más que feedback, informes completes de errores y rendimiento
Fragmentación
Combinaciones de diferentes dispositivos, versions del Sistema operative, resoluciones y pantallas.
UI testing
Pruebas en la UI de todo tipo, toques, deslizamientos, etc.
CONCLUSIONES INTEGRACIÓN CONTINUA
INTEGRACIÓN CONTINUA CON XAMARINJAVIER SUÁREZ RUIZ
.
.
¿PREGUNTAS y RESPUESTAS?¿Dudas?
P&R
INTEGRACIÓN CONTINUA CON XAMARINJAVIER SUÁREZ RUIZ
.
.
GRACIAS a TODOSPor vuestro tiempo!
Javier SuárezMicrosoft MVP Windows Platform Development
• Blog: http://geeks.ms/blogs/jsuarez• Email: [email protected]• Twitter: @jsuarezruiz
INTEGRACIÓN CONTINUA CON XAMARINJAVIER SUÁREZ RUIZ
.
.
INTEGRACIÓN CONTINUA CON APPS XAMARINComo pasar Builds y test unitarios de Apps móviles multiplataforma Xamarin desde TeamCity.