Il Testing è il processo utilizzato per identificare la correttezza, completezza e qualità di un software. Nel nostro caso, di un portale dedicato ad un gioco di ruolo online che è, a tutti gli effetti, una piattaforma software di gioco.
Di base si applica il concetto di Testing alla programmazione, ma non è errato considerare di effettuare sessioni di Test anche alle meccaniche di gioco intese come regole ed alla stessa Ambientazione, per individuare problemi, contraddizioni, sbilanciamenti o buchi logici.
Nessun collaudo, per quanto approfondito, potrà mai azzerare le probabilità di errore. Lo scopo del Testing è limitare al massimo gli errori ed evitare quelli che comprometterebbero pesantemente la struttura del portale, ma l'utilizzo nel tempo del "prodotto" è a sua volta una fase indiretta di testing continuato che potrebbe evidenziare nuovi "bachi".
Concetti di Gestione Testing
Molto liberamente ispirato da: http://www.ruleworks.co.uk/testguide
Alpha Testing
Citando Wikipedia: Appena un software è stato costruito, prima di rilasciarlo fuori dall'azienda, viene normalmente sottoposto a un collaudo interno all'azienda.
Applicare questo concetto ad un portale lo trasforma nel far testare il prodotto allo staff di creazione dello stesso, facendo interagire parti diverse dello staff con il lavoro altrui, indipendentemente dalle proprie competenze. Il grafico può ad esempio testare i comandi di chat per dare dei feedback al programatore, per fare un caso.
Anche lo stesso testing compiuto da un singolo operatore sul proprio lavoro fa parte di questa categoria di testing: modificare il css e aggiornare la pagina per vedere l'effetto delle modifiche è in fondo un alpha test.
Molto spesso nell'ambito delle community di gdr online si assiste al fenomeno improprio dell'Alpha Testing Aperto. Con questa "etichetta" viene inteso un Alpha Testing che però viene aperto ad utenza non addetta ai lavori. In realtà non è un vero e proprio "Alpha", in quanto l'apertura all'utenza esterna è parte integrante della definizione del "Beta" (vedi sotto). Solitamente ci si riferisce in questo caso ad un testing aperto all'utenza di un prodotto che può essere ancora pesantemente modificato, un ibrido tra un Alpha Testing (il prodotto è allo stato di Alpha) ed un Beta Testing (l'utenza è esterna).
Beta Testing
Quando il prodotto è giudicato pronto per essere "lanciato sul mercato", si passa alla fase di Beta Testing. Questa fase comporta la diffusione del portale tra utenza esterna selezionata, per far fare il testing a persone non addette ai lavori.
La versione è ancora in rodaggio: è completa ed usufruibile, ma può essere ancora soggetta a modifiche, apliamenti o errori da correggere.
In questa fase l'utenza ha però a disposizione tutti gli strumenti necessari ad utilizzare il sito e può quindi utilizzarli anche per inviare dei feedback allo staff in caso di problemi o anomalie: l'utenza è a questo punto al tempo stesso usufruitore di un prodotto e addetto ai lavori con il testing.
Anche il "giocare" in chat, per un play by chat, è una fase di Testing non solo delle funzioni della chat stessa, ma anche dell'Ambientazione. Mettere in gioco dei personaggi permette di provare la trama per evidenziare eventuali carenze o problemi logici legati all'ambientazione.
Quando le segnalazioni di problemi sono ridotte a zero, il portale è pronto per essere "rilasciato"
Rilascio
Il portale può definirsi "aperto" a tutti gli effetti alla fine della fase del Beta Test. In questa fase, il testing non è finito ma diventa una funzione di monitoraggio continuo delle funzioni del sito, visto che come da premessa, eliminare tutti i problemi con le fasi di Testing ufficiali è utopico.
Consigli di Gestione Testing
- Studiare il sistema in ogni intervento correttivo emerso in fase di Testing permette di individuare le correlazioni tra i problema riscontrato e tutto l'apparato. In questo modo un semplice bug di programmazione o "buco" di ambientazione non viene semplicemente colmato, ma viene integrato in tutto il sistema per essere sicuri che risolva il problema senza crearne altri.
- Documentare e tracciare: tenere sempre nota degli interventi correttivi effettuati o da effettuare permette a tutto lo staff di coordinare i lavori, ma anche di poter tenere chiara timeline delle modifiche effettuate sul portale in modo da poter tracciare le evoluzioni e rintracciare i cambiamenti in caso debbano essere successivamente rielaborati.
- Stilare Metriche: tenere sempre traccia dei dati misurabili del sito (connessi, numero di pagine, chat attive, thread aperti, browser usati, etc) è utile a capire i fattori che impattano sulle funzioni del portale e comprenderne i limiti.
- Elaborare Test ripetibili, attraverso l'utilizzo di strumenti creati appositamente. Può essere un esempio istituire una utenza dedicata al testing con cui ripetere più volte le procedure individuate come "buggate" durante la fase di analisi, per monitorare la completa risoluzione.
- Effettuate test massicci dopo ogni modifica, sia se nata dalla risoluzione di un problema che se nata per una implementazione: testare pesantemente il sistema dopo ogni introduzione/modifica permette di individuare tutti gli eventuali problemi legati alla stessa quando si è ancora nell'ottica della innovazione, dandoci la maggior confidenza possibile con l'argomento e quindi aiutandoci ad averlo "ben chiaro in testa" in caso vada gestita una risoluzione del problema. Inoltre rende facilmente identificabile il problema come legato alla modifica, mentre se individuato successivamente ci saranno molte più opzioni da dover percorrere per trovare la fonte del bug: facendo un esempio, se dopo aver introdotto una modifica di programmazione facciamo testing ed evidenziamo un problema, sarà chiaro che il problema sia legato alla modifica appena fatta; se facciamo cinque implementazioni e poi effettuiamo il test, in caso di problema dovremo andarne a ricercare la fonte in tutte e cinque le parti modificate.
- Prima di terminare il testing, ritestare al massimo il sistema, ricontrollando tutti i bug individuati ma aggiungendo controlli ridondanti e "stress test" serrati: uno Stress Test è un test caricando al massimo in sistema, anche oltre i regimi previsti, in modo da essere sicuri che il prodotto regga a picchi di carico di lavoro. Chiedere a tutta l'utenza di inviare stringe di testo a ripetizione in tutte le chat per 5 minuti prefissati, ad esempio, può essere uno stress test per il database.
Consigli di Gestione Testing in una Community
In caso di community già avviate o con più utenti presenti (alpha e beta tester inclusi) è bene seguire alcune regole che rendano più semplici ed efficaci i vari Testing:
- Avvisare dell'inizio di ogni specifico Test, dettagliando all'utenza cosa è oggetto di modifica e relativo testing
- Raccogliere in maniera organica (in un unico thread di un forum, inviando mail ad un unico destinatario, ad esempio) tutte le segnalazioni degli utenti
- Rendere pubbliche le segnalazioni degli utenti permette di evitare doppie segnalazioni: se l'utenza vede cosa è stato già segnalato, eviterà di segnalare nuovamente
- Avvisare delle eventuali operazioni di modifica per risolvere problemi segnalati in via preventiva se possono intaccare le funzionalità del portale/gioco
- Avvisare delle operazioni effettuate affinché gli utenti possano controllare l'effettiva risoluzione del problema o effettuare nuove segnalazioni
- Chiudere il testing specifico dopo la fase di ricontrollo collettivo
La fine dei ToDo con l'esaurimento della lista è un prerequisito prima del rilascio/apertura del portale.