what is scalability testing
Introduzione al test di scalabilità:
Il test di scalabilità è una metodologia di test non funzionale in cui le prestazioni di un'applicazione vengono misurate in termini di capacità di aumentare o diminuire il numero di richieste degli utenti o altri attributi di misurazione delle prestazioni.
Il test di scalabilità può essere eseguito a livello di hardware, software o database.
I parametri utilizzati per questo test differiscono da un'applicazione all'altra, per una pagina web potrebbe essere il numero di utenti, l'utilizzo della CPU, l'utilizzo della rete, mentre per un web server sarebbe il numero di richieste elaborate.
migliore rimozione di malware per Windows 7
Questo tutorial ti darà una panoramica completa di Test di scalabilità insieme ai suoi attributi e ai vari passaggi coinvolti nell'esecuzione del test con esempi pratici per consentire di comprendere il concetto in un modo migliore.
Cosa imparerai:
- Test di scalabilità vs test di carico
- Attributi del test di scalabilità
- Passaggi per testare la scalabilità di un'applicazione
- Conclusione
- Lettura consigliata
Test di scalabilità vs test di carico
Il test di carico misura l'applicazione sotto test sotto il carico massimo al quale il sistema andrebbe in crash. Lo scopo principale del test di carico è identificare il punto di picco dopo il quale gli utenti non sarebbero in grado di utilizzare il sistema.
Sia il carico che la scalabilità rientrano nella metodologia di test delle prestazioni.
La scalabilità differisce dal test di carico in quanto il test di scalabilità misura il sistema ai carichi minimi e massimi a tutti i livelli, inclusi i livelli di software, hardware e database. Una volta individuato il carico massimo, gli sviluppatori devono rispondere in modo appropriato per garantire che il sistema sia scalabile dopo un carico particolare.
Esempio: Se il test di scalabilità determina che il carico massimo è di 10.000 utenti, affinché il sistema sia scalabile, gli sviluppatori devono adottare misure su fattori come la riduzione del tempo di risposta dopo il raggiungimento del limite di 10.000 utenti o l'aumento della dimensione della RAM per accogliere i dati utente in crescita.
Il test di carico implica il posizionamento di un carico massimo sulle applicazioni sviluppate in una volta sola, mentre il test di scalabilità comporta l'aumento graduale del carico per un periodo di tempo progressivo.
c ++ numero casuale compreso tra 1 e 3
Il test di carico determina il punto in cui l'applicazione si arresta in modo anomalo, mentre la scalabilità cerca di identificare il motivo dell'arresto anomalo dell'applicazione e di adottare misure per risolvere il problema.
In breve, il test di carico aiuta a identificare i problemi di prestazioni mentre il test di scalabilità aiuta a identificare se il sistema può scalare fino al numero crescente di utenti.
Attributi del test di scalabilità
Gli attributi del test di scalabilità definiscono le misure delle prestazioni in base alle quali verrà eseguito questo test.
Di seguito sono riportati alcuni degli attributi comuni:
1) Tempo di risposta:
- Il tempo di risposta è il tempo che intercorre tra la richiesta dell'utente e la risposta dell'applicazione. Questo test viene eseguito per identificare il tempo di risposta del server con carico minimo, carico di soglia e carico massimo per identificare il punto in cui l'applicazione si interromperà.
- Il tempo di risposta può aumentare o diminuire in base al variare del carico dell'utente sull'applicazione. Idealmente, il tempo di risposta di un'applicazione diminuirebbe man mano che il carico dell'utente continua ad aumentare.
- Un'applicazione può essere considerata scalabile se può fornire lo stesso tempo di risposta per diversi livelli di carico utente.
- Nel caso di ambienti in cluster in cui il carico dell'applicazione è distribuito tra più componenti server, il test di scalabilità deve misurare la misura in cui il bilanciamento del carico distribuisce il carico tra più server. Ciò garantirà che un server non sia sovraccarico di richieste mentre l'altro server è inattivo in attesa dell'arrivo di una richiesta.
- Il tempo di risposta di ogni componente del server deve essere misurato attentamente se l'applicazione è ospitata in un ambiente cluster e il test di scalabilità deve assicurarsi che il tempo di risposta di ogni componente del server deve essere lo stesso indipendentemente dalla quantità di carico posto su ogni server.
- Esempio: Il tempo di risposta può essere misurato come il tempo in cui l'utente inserisce l'URL su un browser web e il tempo fino al quale la pagina web impiega per caricare il contenuto. Minore è il tempo di risposta, maggiori saranno le prestazioni di un'applicazione.
2) Velocità effettiva:
- La velocità effettiva è la misura di un numero di richieste elaborate in un'unità di tempo dall'applicazione.
- Il risultato della velocità effettiva può variare da un'applicazione all'altra. Se si tratta di un'applicazione web, il throughput viene misurato in termini di numero di richieste utente elaborate per unità di tempo e se si tratta di un database. il throughput viene misurato in termini di un numero di query elaborate nell'unità di tempo.
- Un'applicazione è considerata scalabile se può fornire lo stesso throughput per diversi livelli di carico sulle applicazioni interne, sull'hardware e sul database.
3) Utilizzo della CPU:
- L'utilizzo della CPU è una misura dell'utilizzo della CPU per l'esecuzione di un'attività da parte di un'applicazione. L'utilizzo della CPU viene solitamente misurato in termini di unità MegaHertz.
- Idealmente, più è ottimizzato il codice dell'applicazione, minore sarà l'utilizzo della CPU osservato.
- Per ottenere ciò, molte organizzazioni utilizzano pratiche di programmazione standard per ridurre al minimo l'utilizzo della CPU.
- Esempio: Rimozione del codice inattivo nell'applicazione e riduzione al minimo dell'utilizzo di Thread. I metodi di sospensione sono una delle migliori pratiche di programmazione per ridurre al minimo l'utilizzo della CPU.
4) Utilizzo della memoria:
- L'utilizzo della memoria è una misura della memoria consumata per eseguire un'attività da un'applicazione.
- Idealmente, la memoria viene misurata in termini di byte (MegaByte, GigaByte o Tera Bytes) che l'applicazione sviluppata utilizza per accedere alla RAM (Random Access Memory).
- L'utilizzo della memoria di un'applicazione può essere ridotto al minimo seguendo le migliori pratiche di programmazione.
- Esempi di buone pratiche di programmazione sarebbero non utilizzare loop ridondanti, ridurre gli accessi al database, utilizzare la cache, ottimizzare l'uso delle query SQL, ecc. Un'applicazione è considerata scalabile se riduce al minimo l'utilizzo della memoria per nella misura massima possibile.
- Esempio: Se lo spazio di archiviazione disponibile per un numero specificato di utenti esaurisce la memoria, lo sviluppatore sarà costretto ad aggiungere ulteriore spazio di archiviazione del database per compensare la perdita di dati.
5) Utilizzo della rete:
- L'utilizzo della rete è la quantità di larghezza di banda consumata da un'applicazione sotto test.
- L'obiettivo dell'utilizzo della rete è ridurre la congestione della rete. L'utilizzo della rete viene misurato in termini di byte ricevuti al secondo, frame ricevuti al secondo, segmenti ricevuti e inviati al secondo, ecc.
- Le tecniche di programmazione come l'uso di tecniche di compressione possono aiutare a ridurre la congestione e minimizzare l'utilizzo della rete. Un'applicazione è considerata scalabile se può funzionare con una congestione di rete minima e fornire elevate prestazioni dell'applicazione.
- Esempio: Invece di seguire un meccanismo di coda per elaborare le richieste dell'utente, uno sviluppatore può scrivere il codice per elaborare le richieste dell'utente come e quando la richiesta arriva a un database.
Oltre a questi parametri, ci sono pochi altri parametri meno utilizzati come il tempo di risposta della richiesta del server, il tempo di esecuzione dell'attività, il tempo di transazione, il tempo di caricamento della pagina Web, il tempo per recuperare la risposta dal database, il tempo di riavvio, il tempo di stampa, il tempo di sessione, la transizione dello schermo , transazioni al secondo, hit al secondo, richieste al secondo ecc.
Gli attributi per il test della scalabilità possono differire da un'applicazione all'altra poiché la misura delle prestazioni per le applicazioni Web potrebbe non essere la stessa di un'applicazione desktop o client-server.
il modo migliore per convertire youtube in mp4
Passaggi per testare la scalabilità di un'applicazione
Il vantaggio principale di eseguire questo test su un'applicazione è comprendere il comportamento dell'utente quando viene raggiunto il carico massimo e le modalità per risolverlo.
Inoltre, questo test consente ai tester di identificare il degrado lato server e il tempo di risposta rispetto al carico dell'utente dell'applicazione. Di conseguenza, questo test è preferito da diverse organizzazioni in tutto il mondo.
Di seguito è riportato l'elenco dei passaggi per testare la scalabilità di un'applicazione:
- Crea scenari di test ripetibili per ciascuno degli attributi di test della scalabilità.
- Testare l'applicazione per diversi livelli di carico come carichi bassi, medi e alti e verificare il comportamento di un'applicazione.
- Creare un ambiente di test sufficientemente stabile da resistere all'intero ciclo di test della scalabilità.
- Configurare l'hardware necessario per eseguire questo test.
- Definire una serie di utenti virtuali per verificare il comportamento di un'applicazione sotto carico utente variabile.
- Ripetere gli scenari di test per più utenti in condizioni variabili di applicazioni interne, hardware e modifiche al database.
- In caso di un ambiente cluster, verificare se il sistema di bilanciamento del carico sta indirizzando le richieste dell'utente a più server per garantire che nessun server sia sovraccaricato da una serie di richieste.
- Eseguire gli scenari di test nell'ambiente di test.
- Analizza i report generati e verifica le aree di miglioramento, se presenti.
Conclusione
In poche parole,
=> Il test di scalabilità è una metodologia di test non funzionale per verificare se un'applicazione può aumentare o diminuire in base agli attributi variabili. Gli attributi utilizzati per questo test variano da un'applicazione all'altra.
=> L'obiettivo principale di questo test è determinare quando un'applicazione inizia a degradarsi al massimo carico e adottare le misure appropriate per garantire che l'applicazione sviluppata sia sufficientemente scalabile da accogliere le modifiche nelle applicazioni interne, nel software, nell'hardware e anche nel database cambiamenti in futuro.
=> Se questo test viene eseguito correttamente, nelle applicazioni sviluppate possono essere scoperti errori maggiori rispetto alle prestazioni del software, dell'hardware e del database.
=> Uno dei principali svantaggi di questo test sarebbe la limitazione della memorizzazione dei dati, con limiti sulla dimensione del database e sullo spazio del buffer. Inoltre, i limiti della larghezza di banda della rete possono essere un ostacolo ai test di scalabilità.
=> Il processo di test della scalabilità differisce da un'organizzazione all'altra poiché gli attributi del test di scalabilità di un'applicazione saranno diversi dalle altre applicazioni.
Lettura consigliata
- Test di carico con HP LoadRunner Tutorial
- Test delle prestazioni vs test di carico vs stress test (differenza)
- Differenza tra desktop, test server client e test Web
- Carico di applicazioni Web, stress e test delle prestazioni utilizzando WAPT
- Migliori strumenti di test del software 2021 (Strumenti di automazione del test QA)
- Guida al test di sicurezza delle applicazioni Web
- Test delle applicazioni: le basi del test del software!
- Installazione dell'applicazione sul dispositivo e avvio del test da Eclipse