5.5 La validazione¶
validazione delle funzionalità applicative
validazione dell’integrità e completezza dei dati (vedi capitolo 6)
validazione del mantenimento o miglioramento delle prestazioni
validazione della sicurezza
La validazione di tutti questi aspetti passa attraverso l’utilizzo di diverse tipologie di test che vedremo nel corso del capitolo e che variano a seconda dell’aspetto da testare.
5.5.1 Tipologie di testing¶
Il testing del software può essere eseguito in due modi:
manuale: eseguito da tester che validano manualmente i test case senza utilizzare alcuno strumento di automazione. Il testing manuale è soggetto al rischio dell’errore umano e richiede un maggiore investimento, sia in termini di tempo che di risorse. Tuttavia, questo tipo di testing permette l’osservazione umana, che può essere utile se l’obiettivo è la facilità d’uso o migliorare l’esperienza degli utenti
automatizzato: eseguito utilizzando strumenti di automazione per validare la suite di test case. Il testing automatizzato è più affidabile, in quanto viene eseguito da strumenti e/o script, ed è anche molto più veloce del testing manuale. Può richiedere un investimento per acquisire gli strumenti di testing necessario, ma il costo viene solitamente ammortizzato poiché i test vengono eseguiti più volte nel corso di un lungo periodo di tempo
In generale, ci sono diverse parti e caratteristiche degli applicativi che possono essere testate. Per questo motivo, esistono diverse tipologie di test:
unitari: solitamente testano unità logiche interne al software e create dagli sviluppatori stessi, quindi non visibili ad un utente finale, in maniera isolata da tutte le altre unità logiche che compongono il sistema.
di integrazione: testano l’integrazione del core applicativo con componenti esterne, come ad esempio i database.
di interfaccia: testano il funzionamento dell’applicativo attraverso la sua interfaccia di utilizzo che sia grafica (UI) o programmatica (API)
di sistema: testano il funzionamento end to end dell’applicativo nell’insieme dei suoi componenti
funzionali: testano che l’applicativo rispetti i requisiti funzionali dal punto di vista dell’utilizzatore.
5.5.2 Validazione delle funzionalità¶
Sostituire un applicativo con una versione SaaS o migrare lo stesso in Cloud sono procedure che potrebbero comportare la perdita o il malfunzionamento di alcune funzionalità precedentemente presenti nella versione on-premise, causando un disservizio più o meno critico ai suoi utilizzatori.
La validazione delle funzionalità punta, attraverso test funzionali, a identificare la presenza o meno di questa tipologia di errori così da poterli correggere.
La lista delle funzionalità desiderate è testata attraverso la verifica di input e di output corrispondenti, senza porre l’attenzione su come i dati vengano processati. I test simulano l’effettivo utilizzo del sistema dal punto di vista di un utilizzatore e possono essere effettuati sia manualmente, attraverso operatori che eseguono i cosiddetti test case, che automaticamente attraverso l’utilizzo di tool specifici che simulano l’operato di un essere umano.
Nel processo di validazione delle funzionalità vanno tipicamente considerati i seguenti passi:
identificazione della lista di funzionalità desiderate
creazione dei test case tramite la definizione di un input e del relativo output che ci si aspetta, per ogni funzionalità
esecuzione del test case
verifica di input e output
produzione di un report che evidenzi eventuali problematiche
Il risultato di questa validazione potrà così essere utilizzato nelle successive iterazioni, per risolvere eventuali problemi sorti nel corso della migrazione.
5.5.3 Validazione delle prestazioni¶
di carico: verificano le prestazioni dell’infrastruttura per un determinato carico di utilizzo ed in un determinato periodo di tempo. Ad esempio: verifica dei livelli di memoria raggiunti con un carico di 1000 utenti simultanei per 5 minuti
di stress: verificano qual è la capacità massima dell’infrastruttura aumentando progressivamente il carico di utilizzo su di essa fino al raggiungimento del limite massimo
di picco: verificano come reagisce l’infrastruttura a carichi molto variabili, abbassando o alzando di molto il carico in un determinato range di tempo
di connettività: verificano tramite test automatici e manuali la latenza dell’applicativo migrato rispetto a quello on-premise
Nel processo di validazione delle prestazioni vanno considerati i seguenti passi:
identificazione dei livelli di prestazioni desiderati per metriche come ad esempio:
tempi di risposta
throughput
livelli di utilizzo di risorse:
CPU
memoria
storage su disco
network
definizione dei tipi di test da attuare e dei dati da utilizzare (piano di test)
configurazione degli strumenti di monitoraggio dei livelli di prestazioni identificati
esecuzione dei test tramite strumenti appositi
analisi dei risultati e tuning delle risorse
5.5.4 Validazione della sicurezza¶
Le responsabilità per la sicurezza in cloud ricade fondamentalmente sotto due categorie: quella associata al cloud service provider che dovrà assicurarsi di rendere l’infrastruttura sicura e quella di chi fruisce dei servizi che dovrà assicurarsi che gli applicativi utilizzino tutte le misure necessarie garantire la sicurezza, argomento di cui parleremo in questo sottocapitolo.
Migrare in cloud gli applicativi, apre ad uno spettro di rischi che vanno considerati tramite l’applicazione di alcune pratiche:
- sicurezza pre-migrazione: prima di migrare risulta critico eseguire una review di tutti gli account e relativi permessi di accesso ai dati, così da evitare credenziali scadute che potrebbero compromettere la sicurezza una volta in cloud.È inoltre molto importante avere una procedura per lo smaltimento delle risorse on-premise, una volta che non saranno più necessarie, avendo cura di eliminare qualunque dato già migrato, se non più necessario
- identity management: tra i vari servizi delle più moderne piattaforme cloud, vi è la possibilità di controllare l’accesso ad ogni informazione e risorsa messa a disposizione dal provider. Una gestione così dettagliata permette di essere molto flessibili ma richiede molta attenzione nel tenere traccia di chi può accedere e fare cosa.È quindi buona norma consultare la documentazione dei provider cloud che dovrebbero fornire le buone pratiche relative agli strumenti di identity management messi a disposizione
test di penetrazione: questi test, effettuabili tramite strumenti appositi o da fornitori specifici, permettono di effettuare un check di tutte le vulnerabilità più comuni in cloud su più livelli:
applicativo: testando le interfacce grafiche (UI) e programmatiche (API)
dati: testando il loro accesso tramite applicativo o direttamente da database
rete: testando se e quanto la rete protegge l’accesso ai dati
normative: verificando quanto l’infrastruttura è conforme alle normative in vigore
crittografia del dato: è importante verificare di avere sempre attivato la crittografia dei dati, sia su database che su storage, così da evitare visibilità di questi ultimi in caso di violazione della sicurezza