Come testare le prestazioni di un'app Android e migliorarle
Ciao!
Ci sono 3 fattori principali che influenzano le prestazioni delle app:
- il backend
- la rete
- il client (l'app stessa)
Vuoi assicurarti di testare le prestazioni del lato backend e del lato client non appena puoi dopo lo sviluppo, al fine di iniziare a capire come si comporta la tua app e per cogliere gli errori in anticipo.
Il Backend
Quando si parla di backend, le cose relative alle prestazioni che sono importanti da sapere quando un'app è sotto carico sono i tempi di risposta del server, i tempi delle query al database e l'utilizzo delle risorse del server.
Questo è il momento in cui si simula il carico sul backend in diversi modi, sia attraverso stress test, peak test, endurance test, load test, ecc.
In generale, l'obiettivo di questi test è quello di capire come i sistemi di backend di un'app si comportano e gestiscono un certo volume di utenti concorrenti.
Ci sono diversi strumenti che permettono di testare il carico della vostra app mobile. I più comunemente usati sono:
Apache JMeter - lo strumento open source numero uno per i test di carico
Gatling - uno strumento di test di carico open source, facile da usare per gli sviluppatori, con script scritti in Scala
BlazeMeter - una piattaforma cloud di test delle prestazioni che scala i test di JMeter o Gatling per una maggiore quantità di utenti concorrenti
Questi strumenti ti aiutano a trovare e risolvere problemi come:
- Alti tempi di risposta del server
- Bottleneck o punti di rottura nelle risorse del database e dell'application server
- Povera implementazione delle politiche di escalation
La rete
Per quanto riguarda la rete a cui il dispositivo è collegato, ci sono due cose chiave da misurare: latenza e larghezza di banda.
- La latenza è il tempo che trascorre quando le informazioni vengono inviate sulla rete (misurato in millisecondi).
- La larghezza di banda è la capacità massima (la quantità di dati) che può essere trasmessa attraverso la rete (misurata in bit al secondo).
È possibile simulare la rete nei vostri test di carico.
Il lato client
Per un'app mobile, il client è il software che gira sul dispositivo, l'app stessa.
Testare le prestazioni lato client permette di capire come l'app si comporta su un dispositivo e come utilizza le risorse che condivide con altre app.
There are several areas with different metrics you can gather to understand client side mobile app performance:
Device resource usage:
- % CPU
- Memory (Mb)
- Data sent and received by the application (Kb)
- % Battery usage
Rendering:
- Render time (ms)
- Frames per second (fps)
- Render lag (janks)
Errors:
- Exceptions
- ANR (Application Not Responding) in Android
Transaction response time, which can also be measured from the user perspective but involves:
- Server response times
- Database response time
- Network latency
- Screen drawing time
Once you’ve got all of this information, you can uncover critical problems such as:
- Memory leaks: quando un'app non libera bene la memoria, aumenta fino ad esaurire la memoria disponibile e poi si blocca
- Congelamenti dello schermo: dovuti a tempi di rendering molto alti
- Crash: eccezioni che saltano nell'app e la fanno chiudere improvvisamente... bummer!
Per le app native, ci sono strumenti di profilazione come Android Studio e Instruments (rispettivamente per Android e iOS).
Questi strumenti sono di grande aiuto per il debug di un'app e per trovare la radice di certi tipi di problemi di prestazioni.
In aggiunta ad Android Studio e Instruments Apptim è il miglior strumento gratuito per il test delle prestazioni delle app Android lato client.
Consente a interi team di sviluppo di accedere alle informazioni sulle prestazioni delle app mobili e ai KPI, dove chiunque può eseguire rapidamente e facilmente i test e anche confrontare le prestazioni nel tempo.
Spero che questo aiuti!