3. XAMARIN DEVELOPER
Trabajando con .NET y varias de sus tecnologías desde el día en que
nació (literalmente). Desde hace 2 años, miembro del equipo de
desarrollo Xamarin de Plain Concepts.
Sergio Escalada
@plainconcepts 3
@sescaladab
5. Proceso tipo con Xamarin
@plainconcepts 5
HERRAMIENTAS QUE PODEMOS UTILIZAR
Distribute
& MonitorBuild Test
6. • Distintas versiones de sistema operativo (Android)
El reto de la FRAGMENTACIÓN
@plainconcepts 6
7. • Distintas versiones de sistema operativo (iOS)
El reto de la FRAGMENTACIÓN
@plainconcepts 7
8. • Gran cantidad de dispositivos:
– 24.000+ dispositivos
– +1300 fabricantes
• Distintas especificaciones de los terminales
– Memoria
– Procesador (Número de cores, x86/x64/ARM)
– Tamaños de pantalla (Retina)
• Phones & Tablets
• Sensores
• Idioma
• ¿Cómo saber si nuestra app funciona bien dentro de esta variedad?
El reto de la FRAGMENTACIÓN
@plainconcepts 8
10. • Momento de incorporarlos a nuestro proyecto:
– Funcionalidad implementada en las plataformas (UI estable).
– Reporte de algún bug: podemos hacer un test para que cubra el caso en el futuro.
– Mucho menos útiles de forma retroactiva.
• Recomendaciones:
– Hacer test simples, respecto a casos de uso.
– Construirlos paso a paso.
• Útiles para asegurar el arranque, la apariencia y el comportamiento de nuestra app.
Tests de UI
@plainconcepts 10
11. NUnit 2.6.x como Framework de Testing.
Arrange-Act-Assert pattern.
Requiere que recompilemos los proyectos de plataforma
para funcionar.
Uso de queries sobre las vistas para acceder a los elementos.
Sólo soporta Android/iOS.
Xamarin.UITest
@plainconcepts 11
PROYECTOS DE TEST CROSS-PLATFORM
12. Uso de atributos propios de NUNit como:
• TestFixture
• SetUp
• Test
DEFINICIÓN de
tests
12
DEFINICIÓN DE TESTS
[TestFixture]
public class Tests
{
private IApp _app;
private Platform _platform;
[SetUp]
public void BeforeEachTest()
{
_app =
AppInitializer.StartApp(_platform);
}
[Test]
public void AppLaunches()
{
_app.Screenshot("First screen.");
}
}
@plainconcepts
13. Automation con
Xamarin Forms
13
DEFINICIÓN DE QUERIES
// XAML
<Button Text=“Submit"
AutomationId=“SubmitButton“ />
// TESTS
_app.Tap(c.Marked(“SubmitButton"));
@plainconcepts
14. Configuración
por plataforma
14
DEFINICIÓN DE QUERIES
// iOS
// AppDelegate.FinishedLaunching
#if ENABLE_TEST_CLOUD
Xamarin.Calabash.Start();
#endif
@plainconcepts
Android: APK en Release
iOS: generar el IPA, inicializar el agente
16. REPL como
ayuda
16
DEFINICIÓN DE QUERIES
[Test]
public void Repl()
{
_app.Repl();
}
[Test]
public void TapTest()
{
_app.Tap(c => c.Class(“EditText"));
}
@plainconcepts
17. Herramienta que podemos usar desde OSX/Windows para hacer
la grabación de tests.
Plugin para VS (Enterprise).
Nos permite exportar los tests a C#.
Xamarin Test
Recorder
@plainconcepts 17
TESTS PASO A PASO
19. Soporta Xamarin UI.Test.
Proporciona acceso a +2000 dispositivos.
Nos va a permitir probar nuestra app en distintas versiones de
S.O.
Xamarin Test
Cloud
@plainconcepts 19
EJECUTAR NUESTROS TESTS
20. Algunas opciones desde command line
20
> test-cloud.exe submit <PATH-TO-APK> <TEAM API KEY> --devices=<DEVICES> --
assembly-dir=<PATH-TO-TEST-ASSEMBLY-DIR> --user=<EMAIL>
> test-cloud.exe submit <PATH-TO-IPA> <TEAM API KEY> --devices=<DEVICES> --assembly-
dir=<PATH-TO-TEST-ASSEMBLY-DIR> --user=<EMAIL>
> test-cloud.exe <APK or IPA> <TEAM_API_KEY> --user <EMAIL> --category flerp
@plainconcepts
Test Cloud desde command-lineSUBIDA Y EJECUCIÓN DE LOS TESTS
25. www.plainconcepts.com
MADRID
Paseo de la Castellana 163, 10º
28046 Madrid. España
T. (+34) 91 5346 836
BILBAO
Nervión 3 , 6º
48001 Bilbao. España
T. (+34) 94 6008 168
BARCELONA
Av. Josep Tarradellas 10, 6º 1ª
08029 Barcelona. España
T. (+34) 93 3607 114
SEVILLA
Avenida de la innovación s/n
Edificio Renta Sevilla, 3º A
41020 Sevilla. España
DUBAI
Dubai Internet City. Building 1
73030 Dubai. EAU
T. (+971) 4 551 6653
LONDON
Impact Hub Kings Cross
24B York Way, N1 9AB
London. UK
SEATTLE
1511, Third Ave
Seattle WA 98101. USA
T. (+1) 206 708 1285