Che cos'è il test non funzionale?
- 7 minuti
In Eseguire test funzionali in Azure Pipelines sono stati aggiunti test dell'interfaccia utente Selenium alla pipeline. I test dell'interfaccia utente sono una forma di test funzionale. In questa parte si esplorano i tipi di test non funzionali che è possibile eseguire in una pipeline.
Il team definisce prima i test non funzionali. Parlano di alcuni tipi di questi test. Quindi decidono su un test nonfunzionale da aggiungere alla pipeline.
In che modo i test non funzionali vengono confrontati con i test funzionali?
In Eseguire test funzionali in Azure Pipelines sono stati definiti test funzionali e test non funzionali.
In breve, i test funzionali verificano che ogni funzione del software faccia ciò che dovrebbe. In altre parole, i test funzionali verificano le funzionalità di un'applicazione.
I test non funzionali controllano gli aspetti non funzionali di un'applicazione, ad esempio prestazioni e affidabilità. È anche possibile eseguire test non funzionali nei sistemi che non sono app, ad esempio i componenti dell'infrastruttura. Un esempio di test non funzionale consiste nel determinare il numero di persone che possono accedere simultaneamente a un'applicazione senza causare un problema, ad esempio tempi di risposta più lenti.
Nel sito Web di Space Game , ad esempio, un test funzionale potrebbe verificare che il tabellone punteggi sia visualizzato correttamente e che mostri i record corretti quando l'utente seleziona un filtro. Un test non funzionale potrebbe verificare che il filtro del tabellone punteggi venga completato in meno di un secondo, anche quando molti utenti si connettono al sito Web contemporaneamente.
I test non funzionali testano sempre un elemento misurabile. L'obiettivo è migliorare il prodotto. È possibile farlo, ad esempio, migliorando in modo efficiente l'uso delle risorse da parte dell'applicazione o migliorando i tempi di risposta quando molti clienti lo usano contemporaneamente. Ecco alcune delle domande che i test non funzionali possono rispondere:
- In che modo l'applicazione viene eseguita in circostanze normali?
- Come viene eseguita l'applicazione quando molti utenti accedono simultaneamente?
- Quanto è sicura l'applicazione?
Quali tipi di test non funzionali è possibile eseguire?
Esistono molti tipi di test non funzionali. Molti di essi rientrano nelle ampie categorie di test delle prestazioni e test di sicurezza.
Test delle prestazioni
L'obiettivo dei test delle prestazioni è migliorare la velocità, la scalabilità e la stabilità di un'applicazione. Il test della velocità determina la velocità di risposta di un'applicazione. I test per la scalabilità determinano il carico massimo dell'utente che un'applicazione può gestire. I test per la stabilità determinano se l'applicazione rimane stabile in carichi diversi. Due tipi comuni di test delle prestazioni sono test di carico e test di stress.
Test di carico
I test di carico determinano le prestazioni di un'applicazione in carichi realistici. Ad esempio, i test di carico possono determinare il livello di prestazioni di un'applicazione al limite massimo del contratto di servizio.For example, load tests can determine how well an application performs at the upper limit of its service-level agreement (SLA). Fondamentalmente, i test di carico determinano i comportamenti dell'applicazione quando più utenti lo necessitano contemporaneamente.
Gli utenti non sono necessariamente persone. Ad esempio, un test di carico per il software della stampante potrebbe inviare grandi quantità di dati all'applicazione. Un test di carico per un server di posta potrebbe simulare migliaia di utenti simultanei.
Il test di carico è anche un buon modo per individuare i problemi esistenti solo quando l'applicazione opera ai limiti. Questo è quando possono verificarsi problemi come l'overflow del buffer e le perdite di memoria.
In questo modulo si userà Apache JMeter per eseguire test di carico. Si userà un set di utenti simulati che accedono contemporaneamente al sito Web.
Test da sforzo
I test di stress determinano la stabilità e la robustezza di un'applicazione sotto carichi pesanti. I carichi vanno oltre gli elementi specificati per l'applicazione. I test di stress determinano se l’applicazione si arresterà in modo anomalo con questi carichi. Se l’applicazione ha esito negativo, il test di stress verifica che ciò avvenga in modo normale. L’esito negativo normale potrebbe, ad esempio, emettere un messaggio di errore informativo appropriato.
Gli scenari in cui le applicazioni devono funzionare con carichi anomali sono comuni. Ad esempio, nel caso in cui il video diventi virale, è necessario sapere in che modo i server possono gestire il carico aggiuntivo. Un altro scenario tipico è un traffico elevato sui siti Web di shopping durante le stagioni festivi.
Test di sicurezza
I test di sicurezza assicurano che le applicazioni siano libere da vulnerabilità, minacce e rischi. Un test di sicurezza approfondito trova tutte le possibili lacune e punti deboli del sistema che potrebbero causare una violazione delle informazioni o una perdita di ricavi.
Esistono molti tipi di test di sicurezza. Due di essi sono test di penetrazione e test di conformità.
Test di penetrazione
Test di penetrazione, o pen test, è un tipo di test di sicurezza che verifica le aree non sicure dell'applicazione. In particolare, verifica le vulnerabilità che un utente malintenzionato potrebbe sfruttare. Un attacco informatico simulato autorizzato è in genere una parte dei test di penetrazione.
Test di conformità
I test di conformità determinano se un'applicazione è conforme ad alcuni set di requisiti, all'interno o all'esterno dell'azienda. Ad esempio, le organizzazioni sanitarie devono in genere conformarsi all'HIPAA (Health Insurance Portability and Accountability Act del 1996), che fornisce la privacy dei dati e le disposizioni di sicurezza per proteggere le informazioni mediche.
Un'organizzazione potrebbe anche avere requisiti di sicurezza specifici. Il software deve essere testato per assicurarsi che segua questi requisiti. Ad esempio, nei sistemi Linux, la maschera utente predefinita deve essere 027 o più restrittiva. Un test di sicurezza deve dimostrare che questo requisito è soddisfatto.
Il piano
Nel resto di questo modulo si configurerà l'ambiente Azure DevOps, si apprenderà come pianificare i test di carico usando Apache JMeter ed eseguire test di carico in Azure Pipelines.