Testing Moderno su Mobile: Strumenti e strategie per evitare bug e rilasciare con fiducia- Napoli DevFest 2025

LudovicoBesana 0 views 43 slides Oct 12, 2025
Slide 1
Slide 1 of 74
Slide 1
1
Slide 2
2
Slide 3
3
Slide 4
4
Slide 5
5
Slide 6
6
Slide 7
7
Slide 8
8
Slide 9
9
Slide 10
10
Slide 11
11
Slide 12
12
Slide 13
13
Slide 14
14
Slide 15
15
Slide 16
16
Slide 17
17
Slide 18
18
Slide 19
19
Slide 20
20
Slide 21
21
Slide 22
22
Slide 23
23
Slide 24
24
Slide 25
25
Slide 26
26
Slide 27
27
Slide 28
28
Slide 29
29
Slide 30
30
Slide 31
31
Slide 32
32
Slide 33
33
Slide 34
34
Slide 35
35
Slide 36
36
Slide 37
37
Slide 38
38
Slide 39
39
Slide 40
40
Slide 41
41
Slide 42
42
Slide 43
43
Slide 44
44
Slide 45
45
Slide 46
46
Slide 47
47
Slide 48
48
Slide 49
49
Slide 50
50
Slide 51
51
Slide 52
52
Slide 53
53
Slide 54
54
Slide 55
55
Slide 56
56
Slide 57
57
Slide 58
58
Slide 59
59
Slide 60
60
Slide 61
61
Slide 62
62
Slide 63
63
Slide 64
64
Slide 65
65
Slide 66
66
Slide 67
67
Slide 68
68
Slide 69
69
Slide 70
70
Slide 71
71
Slide 72
72
Slide 73
73
Slide 74
74

About This Presentation

Bug critici, test instabili e rilasci rischiosi sono sfide quotidiane nello sviluppo mobile. Il testing efficace è la chiave per garantire applicazioni affidabili e performanti. In questo talk esploreremo strumenti e strategie avanzate per scrivere test solidi, ridurre il numero di falsi positivi e...


Slide Content

Testing Moderno su Mobile:
Strumenti e strategie per evitare bug
e rilasciare con fiducia
@ludovicobesana

SheTech Ambassador
Grafana & BrowserStack Champion
Startups Co-Founder
Open Source Contributor
Alcune passioni: , ,
Chi sono?

Event Organizer:
Coding Bunker
https://www.meetup.com/it-IT/coding-bunker/
Ministry of Testing Milan
https://www.meetup.com/it-it/mot-milan/
@ludovicobesana

Event Organizer:
Community Day
http://techcommunityday.it/
Zig Day
https://zig.day/europe/milano/
@ludovicobesana

Event Organizer:
Grafana & Friends Italy (Milano)
https://www.meetup.com/grafana-and-friends-milano/
@ludovicobesana

@ludovicobesana

“6,6 miliardi di utenti smartphone
nel mondo.”

Praticamente un telefono per ogni persona sul pianeta.
@ludovicobesana

“Gli americani controllano il
telefono 344 volte al giorno. Una
volta ogni quattro minuti.”

Dietro ogni tocco, c’è codice, test e rilasci. In un mercato che vale oltre
600 miliardi di dollari l’anno. La posta in gioco è altissima.
@ludovicobesana

Quindi… cosa 

può andare storto?
@ludovicobesana

Beh… quasi tutto.
@ludovicobesana

@ludovicobesana

@ludovicobesana

Tre per capire 

il testing mobile
@ludovicobesana

@ludovicobesana

@ludovicobesana

@ludovicobesana

Dispositivi: il caos

versione Android o iOS cambia il gioco.
Quello che funziona perfettamente su un iPhone 15 può
esplodere su un Galaxy del 2018.

1.
Native
2.
Hybrid
3.
Web
4.
PWA
@ludovicobesana
Le App: 4 modi di costruirle

La Rete: l’imprevedibile

passaggi 4G → 3G, modalità aereo.
Facebook Lite, per esempio, è progettata per funzionare anche
con 2G. Questo è vero design per il mondo reale.
@ludovicobesana

La nostra app è davvero pronta
per vivere in una tasca?
@ludovicobesana

Scopriamo il
Testing Moderno
@ludovicobesana

Dall’impossibile al realistico: 

la Regola dell’85%
@ludovicobesana

@ludovicobesana

Copertura Intelligente

Analizza i dati reali (Firebase, Analytics).
Focalizzati sui 3–4 modelli più usati e sulle feature core.
• Usa cloud farms (Firebase Test Lab, BrowserStack).
@ludovicobesana

Performance e sostenibilità

non prosciugare la batteria, non saturare la RAM, e non bloccare
il thread principale.
Essere ‘un buon cittadino’ nel device dell’utente.
@ludovicobesana

La mentalità del tester mobile

ovunque.
Testare mobile significa entrare nel mondo dell’utente, con tutte
le sue interruzioni.
@ludovicobesana

Testing per il mondo reale

cade, app che passa in background.
L’obiettivo è la resilienza. Non solo funzionalità.
@ludovicobesana

Esperienze
dal mondo reale
@ludovicobesana

@ludovicobesana

“La qualità non si aggiunge alla
fine. Si costruisce nel flusso. E si
automatizza nel punto giusto.”
@ludovicobesana

Scelta dei tool
@ludovicobesana

@ludovicobesana

@ludovicobesana

Perché Storybook? I

veloci
Stati e varianti riproducibili con controlli e mock dei dati
Documentazione viva dei componenti con esempi interattivi
Visual test e snapshot per prevenire regressioni UI
@ludovicobesana

Perché Storybook? II

Facile toggle app ↔ Storybook via env var in Expo
Perfetto per Shift-Left: gira su simulatore e in CI
@ludovicobesana

@ludovicobesana

@ludovicobesana

Perché Bruno?

tuo filesystem
Git-native → Le collection sono file .bru, versionabili e leggibili in
diff
Script & Test integrati → Assertions in JavaScript per validare
response e performance
Compatibile con OpenAPI & Postman → Import/export senza
lock-in
@ludovicobesana

@ludovicobesana

Piccolo consiglio:
meno tool,
meglio tool.
@ludovicobesana

Ambienti di test realistici

Dispositivi reali: necessari per gesture, performance e sensori
Imposta locale, lingua, rete lenta, dark mode, font grandi
Snapshot/reset per ambienti deterministici
@ludovicobesana

Dati di test e reset

Reset app/state tra casi (wipe + reinstall, sandbox account)
Mock API per percorsi rari; no mock per critical flows
Generatore utenti/sessioni in utils/
@ludovicobesana

Scrivere test solidi

Usa Accessibility IDs invece di XPath.
Evita : preferisci .
Mantieni i test indipendenti e idempotenti.
utils/ pages/
sleep() waitForElementVisible()
@ludovicobesana

Flaky test ≠ flaky process

Quarantena automatica dei test instabili
Issue auto-create → fix entro 72 h
Monitoring flakiness rate > 2 % → blocco merge
Notturni dedicati alla flakiness + stress integration
@ludovicobesana

CI/CD Quality Gates

Parallelizza i test per device/version
Genera HTML/XML reports + screenshot
Imposta un Quality Gate nel CI:
Blocca merge se test falliscono
Copertura < 80% → alert
@ludovicobesana

@ludovicobesana

Stress & Chaos Testing
Per scoprire crash e comportamenti imprevisti utilizzo:
Android: Monkey genera eventi casuali (tap, swipe, rotazioni) →
stress test realistici

iOS:
SwiftMonkey (Zalando)
xcmonkey (open source)
adb shell monkey -p your.package.name -v 500
@ludovicobesana

Oltre il funzionale

stable.
Accessibilità: test con axe-core, Accessibility Scanner,
TalkBack, VoiceOver.
• Security: MobSF, OWASP Mobile Top 10.
@ludovicobesana

Cosa succede se la
mia App non è accessibile?
@ludovicobesana

@ludovicobesana

Dal , il European Accessibility Act
diventa obbligatorio per tutti i nuovi prodotti e
servizi digitali nell’UE.


Le aziende già operative dovranno adeguarsi entro il 28 giugno 2030.
28 giugno 2025
@ludovicobesana

E se le performance 

non dovessero essere ottimali?
@ludovicobesana

@ludovicobesana

Come inizio
da zero?
@ludovicobesana

@ludovicobesana

@ludovicobesana

Perché Maestro?

Tolleranza nativa a flakiness e delay
Test interpretati = feedback istantaneo
Cross-platform: Android, iOS, RN, Flutter, WebView
@ludovicobesana

@ludovicobesana

Risorse
@ludovicobesana

@ludovicobesana

https://developer.android.com/training/testing/fundamentals?hl=it
@ludovicobesana

https://developer.apple.com/documentation/xcode/testing
@ludovicobesana

https://firebase.google.com/docs/test-lab
@ludovicobesana

https://reactnative.dev/docs/testing-overview
@ludovicobesana

Testa prima,
testa in piccolo.
Disegna test stabili, 

non solo test che passano.
Automatizza con
consapevolezza.
3 Take Aways
@ludovicobesana

Ogni bug che scopriamo è un
segnale.
@ludovicobesana

Ogni test che scriviamo è una
promessa.
@ludovicobesana

E ogni rilascio che facciamo con
fiducia… è un passo verso la
brillantezza del nostro lavoro.
@ludovicobesana

@ludovicobesana

Thank you
@ludovicobesana

Q&A
@ludovicobesana

Novità
Da oggi puoi seguirmi anche su YouTube!

Meet Ludovico
@ludovicobesana