SlideShare a Scribd company logo
Automated UI testing for iOs and Android mobile apps
Automated UI Testing
for iOS and Android
Mobile Apps
Massimo Bonanni
Microsoft Sr. Consultant - EMEA Modern App Domain
massimo.bonanni@microsoft.com
@massimobonanni
Perchè test!!!
Unit vs Coded UI Test
Xamarin Test Cloud
Xamarin.UITest, REPL, Test Recorder
Continuous Integration
Quanto mi costi......
Agenda
+ Individuazione dei bug o defect prima del rilascio
+ Incremento della qualità
+ Garanzia di non regressione a seguito di refactoring o nuove
funzionalità
+ Se unito alle build automatiche, utilissimo in cicli rapidi di sviluppo
- Più codice da scrivere
- Maggiori skill da parte del team
- Maggiori costi del prodotto
Nell’ambito mobile, cross-plattform, c’è un’altra cosa che ci
spinge ad adottare politiche di test.....
Perché test!!!!
Automated UI testing for iOs and Android mobile apps
Tutta una questione di numeri…
5
20
20
35
6
Versioni
Devices
Lingue
Localizzazioni
Formati
schermo
9
24K+
39
57
27
1,294
6
Versioni
Differenti Device
Lingue
Localizzazioni
Formati schermo
Produttori
Configurazioni
Schermo
Complessità delle app
Thousands of iOS and Android APIs
Public web APIs
Backend integrations
Third party libraries
Memory, CPU and network constraints
Disaccoppiare la UI dalla logica restrostante (es. MVVM) e testare i ViewModel con
degli Unit Test non basta a garantire che la User Experience sia delle migliori:
• I tempi di reazione dell’interfaccia variano in base
alla potenza del dispositivo
• La corretta visualizzazione dei controlli della UI
dipendono dalla dimensione e dal form factor dello
schermo
• I tempi di interazione con i sistemi esterni possono
creare problemi non previsti in sede di unit test
• ....
Unit Test.....non basta!!
Il modo migliore per validare il comportamento di una applicazione è utilizzarla.
Se l’applicazione ha il comportamento atteso senza errori o eccezioni, allora può essere
rilasciata.
Il processo di test del comportamento della UI prende il nome di UI Acceptance Test o
Coded UI Test (quando sono «codificati»).
E…..allora?
Questo processo ha i seguenti limiti:
• E’ costoso perché necessita dei dispositivi hardware;
• E’ costoso perché debbono essere impiegate persone per il test manuale;
• E’ dispendioso a livello di tempo perché il tester è un essere umano (processo
poco adatto a rilasci rapidi)
• E’ prono di errori perché l’uomo tende a distrarsi e sbagliare quando esegue
operazioni ripetitive e meccaniche
• E’ di difficile rendicontazione (il tester può semplicemente dire se il test è andato
bene o andato male ma senza l’utilizzo di tecnologie accessorie non è in grado
di ottenere altre informazioni come memoria o cpu occupata)
UI Acceptance Test
Il magic quadrant dei test
Long Cycles Rapid
Iterations
High Test Realism
Simplistic Tests
Beta Testing
Manual Testing
Automated UI Testing
Unit Testing
Soluzioni:
• Non si fa UI Test !!!  
• Si spera che tutto funzioni al meglio!!!   
• Si sfrutta il concetto di beta
• …
• Si utilizza una piattaforma di testing automatica,
scalabile e veloce: Xamarin Test Cloud
Cosa facciamo?
• Xamarin Test Cloud è un servizio basato su
cloud che fornisce una piattaforma di test
per la user interface automatizzata
• Fornisce centinaia di dispositivi diversi di
differenti brand e sistemi operativi
• Consente a chiunque di verificare che il
comportamento della UI sia conforme ai
requisiti attraverso una varietà di dispositivi
con il minimo sforzo.
• La manutenzione e l’approvvigionamento di
nuovi dispositivi viene semplificata di molto
dalla natura Cloud del sistema
Cosa è Xamarin Test Cloud?
Xamarin Test Cloud supporta i seguenti framework di test:
Xamarin.UITest: framework che permette di scrivere test in C#. Basato su Nunit.
Utilizzabile nelle applicazioni cross-plattform scritte con Xamarin (sia native che Forms)
Calabash: framework che permette di scrivere test in Ruby utilizzando Cucumber. Permette
di scrivere test utilizzando «la lingua del business» sfruttando le regole grammaticali di
Cucumber. Utile per le applicazioni native scritte senza l’uso di Xamarin
Cosa è Xamarin Test Cloud?
• Basato su Nunit
• Visual Studio e Xamarin Studio forniscono
template di progetto per UI Test
• Fornisce supporto alle gesture
• Struttura simile agli unit test
• Modalità per eseguire Xamarin.UITests:
o Eseguire l’upload dei test (e dell’app) su
Xamarin Test Cloud.
o Eseguire i test localmente utilizzando un
device, un emulatore (Android), o un simulatore
(iOS) e sfruttando il Test Runner in Xamarin
Studio (iOS o Android) o Visual Studio (Android).
Xamarin.UITest
• REPL (read-eval-print-loop) è uno dei più
importanti tools per la creazione di UI Test.
• Tool a riga di commando con cui gli
sviluppatori possono eseguire espressioni e
commandi.
• Permette di “esplorare” l’interfaccia utente
ed interagire in tempo reale con essa.
• I comandi utilizzati possono essere
esportati in Visual Studio (o Xamarin
Studio)
REPL
1. I test vengono creati localmente (in un
progetto Visual Studio di test)
2. L’applicazione sotto test e i relativi test
vengono inviati a Xamarin Test Cloud
3. Applicazione e test vengono installati ed
eseguiti sui device selezionati dall’utente
4. Al termine di tutti i test, Test Cloud
colleziona i risultati e li invia all’utente
Come funziona Xamarin Test Cloud
DEMO – My first UI.Test
• Consente di registrare coded UI test
utilizzando un device fisico (via USB) o
un emulatore;
• Solo con Visual Studio Enterprise;
• Al momento supporta solo Android (per
iOS Xamarin Test Recorder for Mac OSX)
• La registrazione necessita di Android 4.3
(API Level 23) o superiori ma il test
generato può essere eseguito anche su
versioni precedenti
Xamarin Test Recorder for Visual Studio
• Calabash e Xamarin.UITest da soli non sono in
grado di interagire con l’interfaccia
dell’applicazione (semplicemente perché non ne
fanno parte)
• Hanno la necessità di una «libreria di
automazione» che effettivamente si occupa di
eseguire il test sul device e si occupa
dell’interazione con la UI
• Xamarin Test Cloud Agent si occupa di «hostare»
i test e di eseguirli nel device
Anatomia di un test
• Xamarin Test Cloud Agent è installato da Test Cloud
assieme all’applicazione
• Implementa un’architettura client/server per far in
modo che la piattaforma Test Cloud possa
effettivamente comandare l’esecuzione dei test e il
recupero dei risultati
• La parte server è, di fatto un web server (molto
semplice), che viene installato sul device ed è in
ascolto per rispondere ai comandi (JSON over HTTP)
inviati dal client
• Il client si trova all’interno della piattaforma Test
Cloud
Xamarin Test Cloud Agent
A causa delle limitazioni imposte dalla
piattaforma Apple, il Test Cloud Agent
è compilato assieme all’applicazione.
Viene utilizzato un package NuGet per
referenziare l’agent nell’applicazione
Xamarin Test Cloud Agent su iOS
Test Cloud Agent è un’applicazione a
se stante che viene distribuita con i
permessi per instrumentare
l’applicazione che stiamo testando.
L’applicazione da testare e il Test
Agent sono firmati con la stessa
chiave in modo da poter tra loro
comunicare.
Xamarin Test Cloud Agent su Android
Il meccanismo di pubblicazione dell’app e dei test può avvenire anche in un contesto di
Continuous Integration (CI)
Xamarin Test Cloud Continuous Integration
Xamarin Test Cloud Continuous Integration
Ma quanto mi costi....
-25%
Ma quanto mi costi....
• L’utilizzo di Xamarin Test Cloud va valutato in base ai risultati
desiderati
• Xamarin Test Cloud va bene anche se non usate Xamarin (app native
iOS o Android)
• Migliaia di device a disposizione + report su utilizzo di risorse
Take Away
Xamarin Test Cloud Web Site
https://testcloud.xamarin.com
Documentazione ufficiale
https://developer.xamarin.com/guides/testcloud/
Test Recorder for Visual Studio
https://developer.xamarin.com/guides/testcloud/testrecorder/visual-studio/
Devices
https://testcloud.xamarin.com/devices
Demo
https://github.com/massimobonanni/DDN-XamarinTestCloudDemo
Reference
Q&A
Ad

More Related Content

What's hot (12)

Xamarin Forms: one technology to rule them all - Matteo Pagani - Codemotion R...
Xamarin Forms: one technology to rule them all - Matteo Pagani - Codemotion R...Xamarin Forms: one technology to rule them all - Matteo Pagani - Codemotion R...
Xamarin Forms: one technology to rule them all - Matteo Pagani - Codemotion R...
Codemotion
 
Corso WebApp iOS - Lezione 09: Testing iOS WebApp
Corso WebApp iOS - Lezione 09: Testing iOS WebAppCorso WebApp iOS - Lezione 09: Testing iOS WebApp
Corso WebApp iOS - Lezione 09: Testing iOS WebApp
Andrea Picchi
 
Realizzare applicazioni cross-platform con Xamarin e il pattern MVVM
Realizzare applicazioni cross-platform con Xamarin e il pattern MVVMRealizzare applicazioni cross-platform con Xamarin e il pattern MVVM
Realizzare applicazioni cross-platform con Xamarin e il pattern MVVM
Codemotion
 
Continuous integration per sviluppatori mobile
Continuous integration per sviluppatori mobileContinuous integration per sviluppatori mobile
Continuous integration per sviluppatori mobile
Antonio Liccardi
 
Xamarin.Forms Performance Tips & Tricks - Francesco Bonacci - Codemotion Rome...
Xamarin.Forms Performance Tips & Tricks - Francesco Bonacci - Codemotion Rome...Xamarin.Forms Performance Tips & Tricks - Francesco Bonacci - Codemotion Rome...
Xamarin.Forms Performance Tips & Tricks - Francesco Bonacci - Codemotion Rome...
Codemotion
 
Multi-Device Hybrid Apps con Visual Studio e Apache Cordova
Multi-Device Hybrid Apps con Visual Studio e Apache CordovaMulti-Device Hybrid Apps con Visual Studio e Apache Cordova
Multi-Device Hybrid Apps con Visual Studio e Apache Cordova
Andrea Dottor
 
DotNetCampus - Continuous Integration con Sql Server
DotNetCampus - Continuous Integration con Sql ServerDotNetCampus - Continuous Integration con Sql Server
DotNetCampus - Continuous Integration con Sql Server
Alessandro Alpi
 
Christmas greetings cards with blazor
Christmas greetings cards with blazorChristmas greetings cards with blazor
Christmas greetings cards with blazor
Nicolò Carandini
 
Dependency injection questa sconosciuta
Dependency injection questa sconosciutaDependency injection questa sconosciuta
Dependency injection questa sconosciuta
Andrea Dottor
 
70-485: ADVANCED OF DEVELOPING WINDOWS STORE APPS USING C#
70-485: ADVANCED OF DEVELOPING WINDOWS STORE APPS USING C#70-485: ADVANCED OF DEVELOPING WINDOWS STORE APPS USING C#
70-485: ADVANCED OF DEVELOPING WINDOWS STORE APPS USING C#
DotNetCampus
 
Model-View-ViewModel con Windows Store Apps
Model-View-ViewModel con Windows Store AppsModel-View-ViewModel con Windows Store Apps
Model-View-ViewModel con Windows Store Apps
codeblock
 
Xamarin Forms: one technology to rule them all - Matteo Pagani - Codemotion R...
Xamarin Forms: one technology to rule them all - Matteo Pagani - Codemotion R...Xamarin Forms: one technology to rule them all - Matteo Pagani - Codemotion R...
Xamarin Forms: one technology to rule them all - Matteo Pagani - Codemotion R...
Codemotion
 
Corso WebApp iOS - Lezione 09: Testing iOS WebApp
Corso WebApp iOS - Lezione 09: Testing iOS WebAppCorso WebApp iOS - Lezione 09: Testing iOS WebApp
Corso WebApp iOS - Lezione 09: Testing iOS WebApp
Andrea Picchi
 
Realizzare applicazioni cross-platform con Xamarin e il pattern MVVM
Realizzare applicazioni cross-platform con Xamarin e il pattern MVVMRealizzare applicazioni cross-platform con Xamarin e il pattern MVVM
Realizzare applicazioni cross-platform con Xamarin e il pattern MVVM
Codemotion
 
Continuous integration per sviluppatori mobile
Continuous integration per sviluppatori mobileContinuous integration per sviluppatori mobile
Continuous integration per sviluppatori mobile
Antonio Liccardi
 
Xamarin.Forms Performance Tips & Tricks - Francesco Bonacci - Codemotion Rome...
Xamarin.Forms Performance Tips & Tricks - Francesco Bonacci - Codemotion Rome...Xamarin.Forms Performance Tips & Tricks - Francesco Bonacci - Codemotion Rome...
Xamarin.Forms Performance Tips & Tricks - Francesco Bonacci - Codemotion Rome...
Codemotion
 
Multi-Device Hybrid Apps con Visual Studio e Apache Cordova
Multi-Device Hybrid Apps con Visual Studio e Apache CordovaMulti-Device Hybrid Apps con Visual Studio e Apache Cordova
Multi-Device Hybrid Apps con Visual Studio e Apache Cordova
Andrea Dottor
 
DotNetCampus - Continuous Integration con Sql Server
DotNetCampus - Continuous Integration con Sql ServerDotNetCampus - Continuous Integration con Sql Server
DotNetCampus - Continuous Integration con Sql Server
Alessandro Alpi
 
Christmas greetings cards with blazor
Christmas greetings cards with blazorChristmas greetings cards with blazor
Christmas greetings cards with blazor
Nicolò Carandini
 
Dependency injection questa sconosciuta
Dependency injection questa sconosciutaDependency injection questa sconosciuta
Dependency injection questa sconosciuta
Andrea Dottor
 
70-485: ADVANCED OF DEVELOPING WINDOWS STORE APPS USING C#
70-485: ADVANCED OF DEVELOPING WINDOWS STORE APPS USING C#70-485: ADVANCED OF DEVELOPING WINDOWS STORE APPS USING C#
70-485: ADVANCED OF DEVELOPING WINDOWS STORE APPS USING C#
DotNetCampus
 
Model-View-ViewModel con Windows Store Apps
Model-View-ViewModel con Windows Store AppsModel-View-ViewModel con Windows Store Apps
Model-View-ViewModel con Windows Store Apps
codeblock
 

Similar to Automated UI testing for iOs and Android mobile apps (20)

L'App store per applicazioni Enterprise: La mobilità porta a porta
L'App store per applicazioni Enterprise: La mobilità porta a portaL'App store per applicazioni Enterprise: La mobilità porta a porta
L'App store per applicazioni Enterprise: La mobilità porta a porta
Microfocusitalia
 
Progetto e implementazione di una pipeline di sviluppo software con tecnologi...
Progetto e implementazione di una pipeline di sviluppo software con tecnologi...Progetto e implementazione di una pipeline di sviluppo software con tecnologi...
Progetto e implementazione di una pipeline di sviluppo software con tecnologi...
Mattia Milleri
 
Qualità del Software
Qualità del SoftwareQualità del Software
Qualità del Software
Yeser Rema
 
Software Testing e TDD
Software Testing e TDDSoftware Testing e TDD
Software Testing e TDD
Domenico Briganti
 
Introduzione ai Coded UI Tests
Introduzione ai Coded UI TestsIntroduzione ai Coded UI Tests
Introduzione ai Coded UI Tests
Pietro Libro
 
Total Testing in DevOps
Total Testing in DevOpsTotal Testing in DevOps
Total Testing in DevOps
Gianni Bombelli
 
Universal Store Apps - Mobile day by DotNetCampania
Universal Store Apps - Mobile day by DotNetCampaniaUniversal Store Apps - Mobile day by DotNetCampania
Universal Store Apps - Mobile day by DotNetCampania
Emanuele Garofalo
 
Selenium e testing web - di Alessio Benedetti
Selenium e testing web - di Alessio BenedettiSelenium e testing web - di Alessio Benedetti
Selenium e testing web - di Alessio Benedetti
Giuneco S.r.l
 
MuleSoft_Meetup__Official__8_.pdf
MuleSoft_Meetup__Official__8_.pdfMuleSoft_Meetup__Official__8_.pdf
MuleSoft_Meetup__Official__8_.pdf
Florence Consulting
 
Unit Tests VS End To End Tests
Unit Tests VS End To End TestsUnit Tests VS End To End Tests
Unit Tests VS End To End Tests
mimmozzo_
 
Come rilasciare App di Qualità
Come rilasciare App di QualitàCome rilasciare App di Qualità
Come rilasciare App di Qualità
Luca Manara
 
Slide Mulesoft Meetup Milano #10.pdf
Slide Mulesoft Meetup Milano #10.pdfSlide Mulesoft Meetup Milano #10.pdf
Slide Mulesoft Meetup Milano #10.pdf
Florence Consulting
 
Unit testing in Visual Studio 2013
Unit testing in Visual Studio 2013Unit testing in Visual Studio 2013
Unit testing in Visual Studio 2013
DomusDotNet
 
Introduction to Xamarin
Introduction to XamarinIntroduction to Xamarin
Introduction to Xamarin
Guido Magrin
 
Designing with microservices - Daniele Mondello
Designing with microservices - Daniele MondelloDesigning with microservices - Daniele Mondello
Designing with microservices - Daniele Mondello
Daniele Mondello
 
Test e scrum un caso reale v3.2
Test e scrum   un caso reale v3.2Test e scrum   un caso reale v3.2
Test e scrum un caso reale v3.2
Ivan Fioravanti
 
Agileday2013 pratiche agili applicate all'infrastruttura
Agileday2013 pratiche agili applicate all'infrastrutturaAgileday2013 pratiche agili applicate all'infrastruttura
Agileday2013 pratiche agili applicate all'infrastruttura
XPeppers
 
v2 Presentazione Lelli
v2 Presentazione Lelliv2 Presentazione Lelli
v2 Presentazione Lelli
Matteo Lelli
 
Webinar: Il “real device testing” di Perfecto Mobile per una strategia mobile...
Webinar: Il “real device testing” di Perfecto Mobile per una strategia mobile...Webinar: Il “real device testing” di Perfecto Mobile per una strategia mobile...
Webinar: Il “real device testing” di Perfecto Mobile per una strategia mobile...
Emerasoft, solutions to collaborate
 
Progetto e implementazione di una pipeline di sviluppo software con tecnologi...
Progetto e implementazione di una pipeline di sviluppo software con tecnologi...Progetto e implementazione di una pipeline di sviluppo software con tecnologi...
Progetto e implementazione di una pipeline di sviluppo software con tecnologi...
Mattia Milleri
 
L'App store per applicazioni Enterprise: La mobilità porta a porta
L'App store per applicazioni Enterprise: La mobilità porta a portaL'App store per applicazioni Enterprise: La mobilità porta a porta
L'App store per applicazioni Enterprise: La mobilità porta a porta
Microfocusitalia
 
Progetto e implementazione di una pipeline di sviluppo software con tecnologi...
Progetto e implementazione di una pipeline di sviluppo software con tecnologi...Progetto e implementazione di una pipeline di sviluppo software con tecnologi...
Progetto e implementazione di una pipeline di sviluppo software con tecnologi...
Mattia Milleri
 
Qualità del Software
Qualità del SoftwareQualità del Software
Qualità del Software
Yeser Rema
 
Introduzione ai Coded UI Tests
Introduzione ai Coded UI TestsIntroduzione ai Coded UI Tests
Introduzione ai Coded UI Tests
Pietro Libro
 
Universal Store Apps - Mobile day by DotNetCampania
Universal Store Apps - Mobile day by DotNetCampaniaUniversal Store Apps - Mobile day by DotNetCampania
Universal Store Apps - Mobile day by DotNetCampania
Emanuele Garofalo
 
Selenium e testing web - di Alessio Benedetti
Selenium e testing web - di Alessio BenedettiSelenium e testing web - di Alessio Benedetti
Selenium e testing web - di Alessio Benedetti
Giuneco S.r.l
 
MuleSoft_Meetup__Official__8_.pdf
MuleSoft_Meetup__Official__8_.pdfMuleSoft_Meetup__Official__8_.pdf
MuleSoft_Meetup__Official__8_.pdf
Florence Consulting
 
Unit Tests VS End To End Tests
Unit Tests VS End To End TestsUnit Tests VS End To End Tests
Unit Tests VS End To End Tests
mimmozzo_
 
Come rilasciare App di Qualità
Come rilasciare App di QualitàCome rilasciare App di Qualità
Come rilasciare App di Qualità
Luca Manara
 
Slide Mulesoft Meetup Milano #10.pdf
Slide Mulesoft Meetup Milano #10.pdfSlide Mulesoft Meetup Milano #10.pdf
Slide Mulesoft Meetup Milano #10.pdf
Florence Consulting
 
Unit testing in Visual Studio 2013
Unit testing in Visual Studio 2013Unit testing in Visual Studio 2013
Unit testing in Visual Studio 2013
DomusDotNet
 
Introduction to Xamarin
Introduction to XamarinIntroduction to Xamarin
Introduction to Xamarin
Guido Magrin
 
Designing with microservices - Daniele Mondello
Designing with microservices - Daniele MondelloDesigning with microservices - Daniele Mondello
Designing with microservices - Daniele Mondello
Daniele Mondello
 
Test e scrum un caso reale v3.2
Test e scrum   un caso reale v3.2Test e scrum   un caso reale v3.2
Test e scrum un caso reale v3.2
Ivan Fioravanti
 
Agileday2013 pratiche agili applicate all'infrastruttura
Agileday2013 pratiche agili applicate all'infrastrutturaAgileday2013 pratiche agili applicate all'infrastruttura
Agileday2013 pratiche agili applicate all'infrastruttura
XPeppers
 
v2 Presentazione Lelli
v2 Presentazione Lelliv2 Presentazione Lelli
v2 Presentazione Lelli
Matteo Lelli
 
Webinar: Il “real device testing” di Perfecto Mobile per una strategia mobile...
Webinar: Il “real device testing” di Perfecto Mobile per una strategia mobile...Webinar: Il “real device testing” di Perfecto Mobile per una strategia mobile...
Webinar: Il “real device testing” di Perfecto Mobile per una strategia mobile...
Emerasoft, solutions to collaborate
 
Progetto e implementazione di una pipeline di sviluppo software con tecnologi...
Progetto e implementazione di una pipeline di sviluppo software con tecnologi...Progetto e implementazione di una pipeline di sviluppo software con tecnologi...
Progetto e implementazione di una pipeline di sviluppo software con tecnologi...
Mattia Milleri
 
Ad

More from Massimo Bonanni (20)

Empower every Azure Function to achieve more!!
Empower every Azure Function to achieve more!!Empower every Azure Function to achieve more!!
Empower every Azure Function to achieve more!!
Massimo Bonanni
 
Durable Functions vs Logic App : la guerra dei workflow!!
Durable Functions vs Logic App : la guerra dei workflow!!Durable Functions vs Logic App : la guerra dei workflow!!
Durable Functions vs Logic App : la guerra dei workflow!!
Massimo Bonanni
 
Stateful pattern con Azure Functions
Stateful pattern con Azure FunctionsStateful pattern con Azure Functions
Stateful pattern con Azure Functions
Massimo Bonanni
 
Architetture Serverless con SQL Server e Azure Functions
Architetture Serverless con SQL Server e Azure FunctionsArchitetture Serverless con SQL Server e Azure Functions
Architetture Serverless con SQL Server e Azure Functions
Massimo Bonanni
 
IoT in salsa serverless
IoT in salsa serverlessIoT in salsa serverless
IoT in salsa serverless
Massimo Bonanni
 
Tutto quello che avreste voluto sapere sull'API Management (e non avete mai o...
Tutto quello che avreste voluto sapere sull'API Management (e non avete mai o...Tutto quello che avreste voluto sapere sull'API Management (e non avete mai o...
Tutto quello che avreste voluto sapere sull'API Management (e non avete mai o...
Massimo Bonanni
 
Stateful patterns in Azure Functions
Stateful patterns in Azure FunctionsStateful patterns in Azure Functions
Stateful patterns in Azure Functions
Massimo Bonanni
 
IoT in salsa Serverless
IoT in salsa ServerlessIoT in salsa Serverless
IoT in salsa Serverless
Massimo Bonanni
 
The art of Azure Functions (unit) testing and monitoring
The art of Azure Functions (unit) testing and monitoringThe art of Azure Functions (unit) testing and monitoring
The art of Azure Functions (unit) testing and monitoring
Massimo Bonanni
 
Empower every Azure Function to achieve more!!
Empower every Azure Function to achieve more!!Empower every Azure Function to achieve more!!
Empower every Azure Function to achieve more!!
Massimo Bonanni
 
The art of Azure Functions (unit) testing and monitoring
The art of Azure Functions (unit) testing and monitoringThe art of Azure Functions (unit) testing and monitoring
The art of Azure Functions (unit) testing and monitoring
Massimo Bonanni
 
Everything you always wanted to know about API Management (but were afraid to...
Everything you always wanted to know about API Management (but were afraid to...Everything you always wanted to know about API Management (but were afraid to...
Everything you always wanted to know about API Management (but were afraid to...
Massimo Bonanni
 
Workflow as code with Azure Durable Functions
Workflow as code with Azure Durable FunctionsWorkflow as code with Azure Durable Functions
Workflow as code with Azure Durable Functions
Massimo Bonanni
 
Xmas Serverless Transformation: when the elf doesn’t scale!
Xmas Serverless Transformation: when the elf doesn’t scale!Xmas Serverless Transformation: when the elf doesn’t scale!
Xmas Serverless Transformation: when the elf doesn’t scale!
Massimo Bonanni
 
Welcome Azure Functions 2. 0
Welcome Azure Functions 2. 0Welcome Azure Functions 2. 0
Welcome Azure Functions 2. 0
Massimo Bonanni
 
Discovering the Service Fabric's actor model
Discovering the Service Fabric's actor modelDiscovering the Service Fabric's actor model
Discovering the Service Fabric's actor model
Massimo Bonanni
 
Testing a Service Fabric solution and live happy!!
Testing a Service Fabric solution and live happy!!Testing a Service Fabric solution and live happy!!
Testing a Service Fabric solution and live happy!!
Massimo Bonanni
 
Discovering the Service Fabric's actor model
Discovering the Service Fabric's actor modelDiscovering the Service Fabric's actor model
Discovering the Service Fabric's actor model
Massimo Bonanni
 
Soluzioni IoT con le tecnologie Microsoft
Soluzioni IoT con le tecnologie MicrosoftSoluzioni IoT con le tecnologie Microsoft
Soluzioni IoT con le tecnologie Microsoft
Massimo Bonanni
 
Project Gesture & Real Sense: il potere nelle mani!!
Project Gesture & Real Sense: il potere nelle mani!!Project Gesture & Real Sense: il potere nelle mani!!
Project Gesture & Real Sense: il potere nelle mani!!
Massimo Bonanni
 
Empower every Azure Function to achieve more!!
Empower every Azure Function to achieve more!!Empower every Azure Function to achieve more!!
Empower every Azure Function to achieve more!!
Massimo Bonanni
 
Durable Functions vs Logic App : la guerra dei workflow!!
Durable Functions vs Logic App : la guerra dei workflow!!Durable Functions vs Logic App : la guerra dei workflow!!
Durable Functions vs Logic App : la guerra dei workflow!!
Massimo Bonanni
 
Stateful pattern con Azure Functions
Stateful pattern con Azure FunctionsStateful pattern con Azure Functions
Stateful pattern con Azure Functions
Massimo Bonanni
 
Architetture Serverless con SQL Server e Azure Functions
Architetture Serverless con SQL Server e Azure FunctionsArchitetture Serverless con SQL Server e Azure Functions
Architetture Serverless con SQL Server e Azure Functions
Massimo Bonanni
 
Tutto quello che avreste voluto sapere sull'API Management (e non avete mai o...
Tutto quello che avreste voluto sapere sull'API Management (e non avete mai o...Tutto quello che avreste voluto sapere sull'API Management (e non avete mai o...
Tutto quello che avreste voluto sapere sull'API Management (e non avete mai o...
Massimo Bonanni
 
Stateful patterns in Azure Functions
Stateful patterns in Azure FunctionsStateful patterns in Azure Functions
Stateful patterns in Azure Functions
Massimo Bonanni
 
The art of Azure Functions (unit) testing and monitoring
The art of Azure Functions (unit) testing and monitoringThe art of Azure Functions (unit) testing and monitoring
The art of Azure Functions (unit) testing and monitoring
Massimo Bonanni
 
Empower every Azure Function to achieve more!!
Empower every Azure Function to achieve more!!Empower every Azure Function to achieve more!!
Empower every Azure Function to achieve more!!
Massimo Bonanni
 
The art of Azure Functions (unit) testing and monitoring
The art of Azure Functions (unit) testing and monitoringThe art of Azure Functions (unit) testing and monitoring
The art of Azure Functions (unit) testing and monitoring
Massimo Bonanni
 
Everything you always wanted to know about API Management (but were afraid to...
Everything you always wanted to know about API Management (but were afraid to...Everything you always wanted to know about API Management (but were afraid to...
Everything you always wanted to know about API Management (but were afraid to...
Massimo Bonanni
 
Workflow as code with Azure Durable Functions
Workflow as code with Azure Durable FunctionsWorkflow as code with Azure Durable Functions
Workflow as code with Azure Durable Functions
Massimo Bonanni
 
Xmas Serverless Transformation: when the elf doesn’t scale!
Xmas Serverless Transformation: when the elf doesn’t scale!Xmas Serverless Transformation: when the elf doesn’t scale!
Xmas Serverless Transformation: when the elf doesn’t scale!
Massimo Bonanni
 
Welcome Azure Functions 2. 0
Welcome Azure Functions 2. 0Welcome Azure Functions 2. 0
Welcome Azure Functions 2. 0
Massimo Bonanni
 
Discovering the Service Fabric's actor model
Discovering the Service Fabric's actor modelDiscovering the Service Fabric's actor model
Discovering the Service Fabric's actor model
Massimo Bonanni
 
Testing a Service Fabric solution and live happy!!
Testing a Service Fabric solution and live happy!!Testing a Service Fabric solution and live happy!!
Testing a Service Fabric solution and live happy!!
Massimo Bonanni
 
Discovering the Service Fabric's actor model
Discovering the Service Fabric's actor modelDiscovering the Service Fabric's actor model
Discovering the Service Fabric's actor model
Massimo Bonanni
 
Soluzioni IoT con le tecnologie Microsoft
Soluzioni IoT con le tecnologie MicrosoftSoluzioni IoT con le tecnologie Microsoft
Soluzioni IoT con le tecnologie Microsoft
Massimo Bonanni
 
Project Gesture & Real Sense: il potere nelle mani!!
Project Gesture & Real Sense: il potere nelle mani!!Project Gesture & Real Sense: il potere nelle mani!!
Project Gesture & Real Sense: il potere nelle mani!!
Massimo Bonanni
 
Ad

Automated UI testing for iOs and Android mobile apps

  • 2. Automated UI Testing for iOS and Android Mobile Apps Massimo Bonanni Microsoft Sr. Consultant - EMEA Modern App Domain [email protected] @massimobonanni
  • 3. Perchè test!!! Unit vs Coded UI Test Xamarin Test Cloud Xamarin.UITest, REPL, Test Recorder Continuous Integration Quanto mi costi...... Agenda
  • 4. + Individuazione dei bug o defect prima del rilascio + Incremento della qualità + Garanzia di non regressione a seguito di refactoring o nuove funzionalità + Se unito alle build automatiche, utilissimo in cicli rapidi di sviluppo - Più codice da scrivere - Maggiori skill da parte del team - Maggiori costi del prodotto Nell’ambito mobile, cross-plattform, c’è un’altra cosa che ci spinge ad adottare politiche di test..... Perché test!!!!
  • 6. Tutta una questione di numeri… 5 20 20 35 6 Versioni Devices Lingue Localizzazioni Formati schermo 9 24K+ 39 57 27 1,294 6 Versioni Differenti Device Lingue Localizzazioni Formati schermo Produttori Configurazioni Schermo
  • 7. Complessità delle app Thousands of iOS and Android APIs Public web APIs Backend integrations Third party libraries Memory, CPU and network constraints
  • 8. Disaccoppiare la UI dalla logica restrostante (es. MVVM) e testare i ViewModel con degli Unit Test non basta a garantire che la User Experience sia delle migliori: • I tempi di reazione dell’interfaccia variano in base alla potenza del dispositivo • La corretta visualizzazione dei controlli della UI dipendono dalla dimensione e dal form factor dello schermo • I tempi di interazione con i sistemi esterni possono creare problemi non previsti in sede di unit test • .... Unit Test.....non basta!!
  • 9. Il modo migliore per validare il comportamento di una applicazione è utilizzarla. Se l’applicazione ha il comportamento atteso senza errori o eccezioni, allora può essere rilasciata. Il processo di test del comportamento della UI prende il nome di UI Acceptance Test o Coded UI Test (quando sono «codificati»). E…..allora?
  • 10. Questo processo ha i seguenti limiti: • E’ costoso perché necessita dei dispositivi hardware; • E’ costoso perché debbono essere impiegate persone per il test manuale; • E’ dispendioso a livello di tempo perché il tester è un essere umano (processo poco adatto a rilasci rapidi) • E’ prono di errori perché l’uomo tende a distrarsi e sbagliare quando esegue operazioni ripetitive e meccaniche • E’ di difficile rendicontazione (il tester può semplicemente dire se il test è andato bene o andato male ma senza l’utilizzo di tecnologie accessorie non è in grado di ottenere altre informazioni come memoria o cpu occupata) UI Acceptance Test
  • 11. Il magic quadrant dei test Long Cycles Rapid Iterations High Test Realism Simplistic Tests Beta Testing Manual Testing Automated UI Testing Unit Testing
  • 12. Soluzioni: • Non si fa UI Test !!!   • Si spera che tutto funzioni al meglio!!!    • Si sfrutta il concetto di beta • … • Si utilizza una piattaforma di testing automatica, scalabile e veloce: Xamarin Test Cloud Cosa facciamo?
  • 13. • Xamarin Test Cloud è un servizio basato su cloud che fornisce una piattaforma di test per la user interface automatizzata • Fornisce centinaia di dispositivi diversi di differenti brand e sistemi operativi • Consente a chiunque di verificare che il comportamento della UI sia conforme ai requisiti attraverso una varietà di dispositivi con il minimo sforzo. • La manutenzione e l’approvvigionamento di nuovi dispositivi viene semplificata di molto dalla natura Cloud del sistema Cosa è Xamarin Test Cloud?
  • 14. Xamarin Test Cloud supporta i seguenti framework di test: Xamarin.UITest: framework che permette di scrivere test in C#. Basato su Nunit. Utilizzabile nelle applicazioni cross-plattform scritte con Xamarin (sia native che Forms) Calabash: framework che permette di scrivere test in Ruby utilizzando Cucumber. Permette di scrivere test utilizzando «la lingua del business» sfruttando le regole grammaticali di Cucumber. Utile per le applicazioni native scritte senza l’uso di Xamarin Cosa è Xamarin Test Cloud?
  • 15. • Basato su Nunit • Visual Studio e Xamarin Studio forniscono template di progetto per UI Test • Fornisce supporto alle gesture • Struttura simile agli unit test • Modalità per eseguire Xamarin.UITests: o Eseguire l’upload dei test (e dell’app) su Xamarin Test Cloud. o Eseguire i test localmente utilizzando un device, un emulatore (Android), o un simulatore (iOS) e sfruttando il Test Runner in Xamarin Studio (iOS o Android) o Visual Studio (Android). Xamarin.UITest
  • 16. • REPL (read-eval-print-loop) è uno dei più importanti tools per la creazione di UI Test. • Tool a riga di commando con cui gli sviluppatori possono eseguire espressioni e commandi. • Permette di “esplorare” l’interfaccia utente ed interagire in tempo reale con essa. • I comandi utilizzati possono essere esportati in Visual Studio (o Xamarin Studio) REPL
  • 17. 1. I test vengono creati localmente (in un progetto Visual Studio di test) 2. L’applicazione sotto test e i relativi test vengono inviati a Xamarin Test Cloud 3. Applicazione e test vengono installati ed eseguiti sui device selezionati dall’utente 4. Al termine di tutti i test, Test Cloud colleziona i risultati e li invia all’utente Come funziona Xamarin Test Cloud
  • 18. DEMO – My first UI.Test
  • 19. • Consente di registrare coded UI test utilizzando un device fisico (via USB) o un emulatore; • Solo con Visual Studio Enterprise; • Al momento supporta solo Android (per iOS Xamarin Test Recorder for Mac OSX) • La registrazione necessita di Android 4.3 (API Level 23) o superiori ma il test generato può essere eseguito anche su versioni precedenti Xamarin Test Recorder for Visual Studio
  • 20. • Calabash e Xamarin.UITest da soli non sono in grado di interagire con l’interfaccia dell’applicazione (semplicemente perché non ne fanno parte) • Hanno la necessità di una «libreria di automazione» che effettivamente si occupa di eseguire il test sul device e si occupa dell’interazione con la UI • Xamarin Test Cloud Agent si occupa di «hostare» i test e di eseguirli nel device Anatomia di un test
  • 21. • Xamarin Test Cloud Agent è installato da Test Cloud assieme all’applicazione • Implementa un’architettura client/server per far in modo che la piattaforma Test Cloud possa effettivamente comandare l’esecuzione dei test e il recupero dei risultati • La parte server è, di fatto un web server (molto semplice), che viene installato sul device ed è in ascolto per rispondere ai comandi (JSON over HTTP) inviati dal client • Il client si trova all’interno della piattaforma Test Cloud Xamarin Test Cloud Agent
  • 22. A causa delle limitazioni imposte dalla piattaforma Apple, il Test Cloud Agent è compilato assieme all’applicazione. Viene utilizzato un package NuGet per referenziare l’agent nell’applicazione Xamarin Test Cloud Agent su iOS
  • 23. Test Cloud Agent è un’applicazione a se stante che viene distribuita con i permessi per instrumentare l’applicazione che stiamo testando. L’applicazione da testare e il Test Agent sono firmati con la stessa chiave in modo da poter tra loro comunicare. Xamarin Test Cloud Agent su Android
  • 24. Il meccanismo di pubblicazione dell’app e dei test può avvenire anche in un contesto di Continuous Integration (CI) Xamarin Test Cloud Continuous Integration
  • 25. Xamarin Test Cloud Continuous Integration
  • 26. Ma quanto mi costi.... -25%
  • 27. Ma quanto mi costi....
  • 28. • L’utilizzo di Xamarin Test Cloud va valutato in base ai risultati desiderati • Xamarin Test Cloud va bene anche se non usate Xamarin (app native iOS o Android) • Migliaia di device a disposizione + report su utilizzo di risorse Take Away
  • 29. Xamarin Test Cloud Web Site https://testcloud.xamarin.com Documentazione ufficiale https://developer.xamarin.com/guides/testcloud/ Test Recorder for Visual Studio https://developer.xamarin.com/guides/testcloud/testrecorder/visual-studio/ Devices https://testcloud.xamarin.com/devices Demo https://github.com/massimobonanni/DDN-XamarinTestCloudDemo Reference
  • 30. Q&A