Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
GAMEOPS05-BP01 Scegli lo stage, l'architettura e il framework di test di carico giusti per raggiungere i tuoi obiettivi
L'approccio al test di carico di un gioco può variare in modo significativo a seconda di molti fattori, tra cui la fase del processo di sviluppo in cui viene eseguito, l'architettura del sistema di generazione del carico stesso e la scelta del framework di test del carico. Il momento in cui verrà condotto, nelle fasi iniziali, durante gli sprint iterativi, prima dell'implementazione in produzione o dopo l'implementazione, determinerà gli obiettivi e il focus delle attività di test. I diversi modelli di infrastruttura di generazione del carico hanno i propri pro e contro e la scelta del framework di test del carico influenza notevolmente le funzionalità, la facilità d'uso e le integrazioni disponibili per il processo di test. Allineando attentamente questi elementi, i team di sviluppo possono adattare l'approccio ai test di carico alle caratteristiche uniche del gioco, estrarre le informazioni più preziose sulle prestazioni e fornire un'esperienza fluida ai propri giocatori.
Livello di rischio associato se questa best practice non fosse adottata: elevato
Guida all’implementazione
Test di carico in diverse fasi di sviluppo
L'esecuzione di test di carico esplorativi nelle prime fasi di sviluppo può convalidare l'architettura di sistema sottostante. Questo aiuta gli sviluppatori a prendere decisioni informate sull'infrastruttura del gioco, sulla progettazione del database e sulla topologia di rete prima che venga svolto un ampio lavoro di implementazione. I test di carico identificano i rischi e creano una base di riferimento per le prestazioni, riducendo potenzialmente al minimo la necessità di costose rilavorazioni e debiti tecnici più avanti nel ciclo di vita dello sviluppo. Possono anche favorire una comprensione condivisa dei requisiti prestazionali del gioco tra il team, portando a una migliore collaborazione e processo decisionale. In definitiva, i test di carico durante le fasi iniziali gettano una solida base per un gioco ad alte prestazioni, scalabile e resiliente, contribuendo a migliorare l'esperienza complessiva del giocatore.
Al termine di ogni sprint o iterazione, i test di carico possono valutare l'impatto sulle prestazioni delle nuove funzionalità, delle correzioni di bug e di altre modifiche introdotte nell'ultimo ciclo. Questo approccio mirato consente ai team di sviluppo di identificare rapidamente le regressioni o i peggioramenti delle prestazioni introdotti dagli ultimi aggiornamenti, consentendo loro di risolvere questi problemi prima che si propaghino ulteriormente nella pipeline e mantenendo un livello costante di qualità e prestazioni.
Prima di passare alla produzione, dei robusti test di carico aiutano i team a convalidare la capacità del sistema di gestire le condizioni di traffico e carico previste nel mondo reale. Possono individuare gli ostacoli alla scalabilità o i limiti di risorse all'interno dell'infrastruttura di produzione e offrire l'opportunità di ottimizzare le prestazioni del gioco, creando un'esperienza utente fluida e reattiva sin dal primo giorno. Le informazioni acquisite dai test di carico prima del lancio possono mitigare i rischi del giorno del lancio e contribuire alla pianificazione continua della capacità, che pone le basi per la sostenibilità e la scalabilità a lungo termine del gioco.
Il test di carico di un gioco già in produzione consente ai team di monitorare le prestazioni del gioco e identificare regressioni o peggioramenti delle prestazioni che possono verificarsi nel tempo. Ciò consente loro di risolvere i problemi in modo proattivo prima che influiscano sull'esperienza del giocatore e influiscano negativamente sulla fidelizzazione degli utenti. Inoltre, i test di carico in produzione convalidano l'efficacia degli sforzi di ottimizzazione delle prestazioni o della scalabilità dell'infrastruttura implementati. Questo processo offre ai giocatori un'esperienza di gioco di alta qualità, reattiva e scalabile anche quando il gioco si evolve e matura.
Architetture che generano carico
La progettazione dell'architettura di generazione del carico per i test di carico di gioco può assumere varie forme, ognuna con una serie di vantaggi e considerazioni.
Al livello più elementare, le EC2 istanze Amazon
Per un approccio più scalabile e orchestrato, puoi utilizzare i cluster Amazon EKS
In alternativa, la natura serverless di AWS Fargate
È inoltre possibile utilizzare AWS Lambda
Gli studi che desiderano utilizzare una soluzione preconfigurata possono utilizzare Distributed Load Testing su. AWS Questa soluzione utilizza Amazon ECS AWS Fargate per distribuire container in grado di eseguire simulazioni di decine di migliaia di utenti connessi. È possibile utilizzarlo per avviare rapidamente l'infrastruttura di test di carico in stile IAC utilizzando. AWS CloudFormation
Framework di test di carico
Non esistono due framework di test di carico creati allo stesso modo. Alcuni dispongono di interfacce grafiche intuitive per la creazione di test, mentre altri sono interamente basati sulla riga di comando. Uno strumento può essere flessibile e performante ma richiedere tempo e impegno per la configurazione e la gestione, mentre un altro potrebbe essere serverless ma limitato nei test che può creare ed eseguire. Alcuni godono di grandi community e di numerosi tutorial, pur non essendo collaudati sul campo, a differenza di altri che, pur essendo già ampiamente testati in fase di produzione, non dispongono del supporto o della documentazione della comunità. Scegli il framework che rappresenta il giusto equilibrio per te e il tuo team. Alcune delle opzioni più popolari sono:
-
Apache JMeter
: popolare framework di test di carico open source basato su Java grazie al suo robusto set di funzionalità e alla facilità d'uso. La sua capacità di simulare scenari utente complessi, l'ampia gamma di protocolli supportati, la reportistica completa e la comprovata esperienza lo rendono JMeter una scelta affidabile per i test di carico. -
Locust
: framework di test di carico moderno e distribuito basato su un'architettura basata sugli eventi, che lo rende performante ed efficiente sotto il profilo delle risorse. I test sono scritti in Python, il che consente scenari di test flessibili che sfruttano migliaia di potenti librerie di terze parti, pur rimanendo intuitivi e semplici da leggere. -
Grafana K6
: potente framework di test di carico che combina facilità d'uso con funzionalità avanzate. Il supporto per la generazione di carichi distribuiti, lo scripting flessibile e la perfetta integrazione con Grafana per la visualizzazione dei dati rendono Grafana K6 una scelta interessante. -
Gatling: framework
di load testing open source noto per le sue prestazioni e scalabilità. Il suo linguaggio DSL (Domain-Specific Language) basato su Scala consente agli sviluppatori di creare script di test di carico concisi e gestibili, e le sue solide funzionalità di reporting e analisi forniscono informazioni dettagliate sul sistema in esame.
Passaggi dell’implementazione
-
Fasi di test di carico: esegui test di carico in varie fasi di sviluppo (sviluppo iniziale, sprint, preproduzione e post-implementazione) per convalidare le prestazioni del sistema e identificare i problemi.
-
Architetture di generazione del carico: scegli le architetture di generazione del carico appropriate (EC2EKS, Fargate o Lambda) in base alle esigenze di scalabilità, alle preferenze di gestione e ai requisiti di test specifici.
-
Framework di test di carico: seleziona un framework di test di carico (come Locust JMeter, Grafana K6 o Gatling) che bilanci facilità d'uso, prestazioni, flessibilità e supporto della community per soddisfare le esigenze del tuo team.