Il test non funzionale si riferisce al test del software che viene eseguito per verificare gli aspetti non funzionali di un’applicazione software.
Esistono molti tipi diversi di test non funzionali e alcuni tipi di test del software possono essere considerati sia funzionali che non funzionali allo stesso tempo.
I test non funzionali sono necessari perché valutano criteri essenziali per l’utente, come le prestazioni e l’usabilità, e verificano se il software funziona come previsto al di fuori delle sue funzionalità di base.
In questo articolo esploriamo la definizione e le caratteristiche dei test non funzionali, i tipi di test non funzionali, gli approcci ai test non funzionali e gli strumenti di test che possono aiutare a ottimizzare e migliorare i processi di test non funzionali.
Che cos’è il test non funzionale?
Il test non funzionale è un tipo di test del software in cui vengono verificati gli aspetti non funzionali della creazione del software.
Esempi di test non funzionali sono i test progettati per valutare la capacità, le prestazioni, l’usabilità, il ripristino e la portabilità.
La verifica della qualità e dello stato di ciascuno di questi criteri non funzionali è importante quanto la verifica delle funzioni di un software, ma questi parametri non vengono testati nei test funzionali standard.
In sostanza, il test non funzionale significa verificare “come” funzionano le funzioni del software piuttosto che verificare “se” funzionano.
1. Quando sono necessari i test non funzionali?
I test non funzionali vengono eseguiti durante la fase di test del sistema del software, dopo che sono stati eseguiti i test di unità e di integrazione.
Durante il collaudo del sistema, i collaudatori eseguono test funzionali e non funzionali, iniziando da quelli funzionali.
Una volta stabilito che il software funziona come previsto, i tester eseguono test non funzionali per valutare se soddisfa anche i parametri non funzionali.
Di solito è necessario eseguire i test funzionali prima di quelli non funzionali, perché è impossibile verificare l’affidabilità o le prestazioni di funzioni che non funzionano affatto. Il test non funzionale è una delle ultime fasi del test del software prima del test di accettazione dell’utente e del rilascio finale del prodotto.
2. Quando non sono necessari i test non funzionali
È sempre importante testare gli aspetti non funzionali del software, a meno che non siano già stati testati e ritenuti adeguati.
Anche se avete già effettuato test non funzionali sul software, potrebbe essere necessario testare nuovamente i parametri non funzionali, ad esempio se sono state aggiunte nuove funzionalità al software o se sono state apportate modifiche al codice che potrebbero influire sulle prestazioni e sull’affidabilità.
Gli obiettivi dei test non funzionali
Gli obiettivi dei test non funzionali sono verificare che il prodotto soddisfi le aspettative degli utenti e ottimizzare il prodotto prima del rilascio.
Può anche aiutare gli sviluppatori e i tester a comprendere meglio il software e a utilizzare queste conoscenze per le ottimizzazioni future.
1. Controllo qualità
I test non funzionali mirano a verificare i fattori che influenzano l’usabilità, l’affidabilità, la manutenibilità, la portabilità e l’efficienza del prodotto.
Il test di questi elementi assicura che il prodotto rilasciato sul mercato sia di qualità adeguata e soddisfi le aspettative degli utenti in termini di prestazioni, tempi di caricamento e capacità dell’utente.
2. Gestione del rischio
I test non funzionali riducono anche il rischio e i costi associati al rilascio di un prodotto sul mercato, massimizzando le possibilità che il team rilasci un prodotto soddisfacente.
Controllando i parametri non funzionali della build del software, è possibile ridurre i costi di rilascio del prodotto perché si riduce la necessità di ulteriori sviluppi e modifiche del software in seguito.
3. Ottimizzazione
I test non funzionali aiutano i tester e gli sviluppatori a ottimizzare la creazione del software e le prestazioni durante l’installazione, la configurazione, l’esecuzione e l’utilizzo.
Potete anche utilizzare i test non funzionali per ottimizzare il modo in cui gestite e monitorate la creazione del software.
4. Raccolta dati
I test non funzionali consentono ai tester di raccogliere e produrre misure e metriche che possono essere utilizzate dai team di test per la ricerca e lo sviluppo interni.
Potete utilizzare i dati raccolti dai test non funzionali per capire come funziona il vostro prodotto e come ottimizzarlo in modo più efficace per gli utenti.
5. Miglioramento delle conoscenze
I test non funzionali migliorano e accrescono la conoscenza del team di test sul comportamento del prodotto e sulle tecnologie che utilizza.
Questo non solo aiuta i team di collaudo a comprendere meglio il software su cui stanno lavorando, ma può anche fornire conoscenze utili che aiutano i collaudatori a comprendere meglio le build future.
Chi è coinvolto nei test non funzionali?
I test non funzionali vengono solitamente eseguiti dai tester nell’ambiente QA, ma a volte gli sviluppatori possono eseguire test non funzionali durante lo sviluppo.
Il test del sistema è quasi sempre eseguito dai tester e questa è la fase del test in cui si svolge la maggior parte dei test non funzionali.
Se i test non funzionali falliscono, i tester rimandano il software agli sviluppatori per correggere gli errori di prestazione prima di eseguire nuovamente il test.
I vantaggi dei test non funzionali
L’esecuzione di test non funzionali presenta molti vantaggi e i test non funzionali sono una fase essenziale del test di sistema.
Senza i test non funzionali, i team di test non sarebbero in grado di verificare che il software soddisfi effettivamente i requisiti del cliente o che soddisfi i requisiti stabiliti nel piano di sviluppo del software.
1. Migliorare le prestazioni del software
I test non funzionali possono aiutare i tester e gli sviluppatori a migliorare le prestazioni complessive delle applicazioni software. I test non funzionali identificano le aree in cui le prestazioni del software sono carenti, ad esempio in termini di velocità di caricamento o di capacità di elaborazione, e spingono i team di software ad apportare modifiche per correggere questi difetti.
Questo assicura che i team di software rilascino il software al pubblico solo quando è pronto e quando le sue prestazioni sono sufficientemente buone.
2. Mantenere il software sicuro
I test non funzionali comprendono i test di sicurezza, che sono fondamentali per garantire che un software sia sicuro e protetto da minacce e attacchi esterni.
I test di sicurezza consentono ai tester e agli sviluppatori di verificare che il software protegga adeguatamente i dati riservati e abbia una sicurezza sufficiente per difendersi dagli attacchi informatici contemporanei.
3. Aumentare la facilità d’uso del software
I test non funzionali sono il modo migliore per rendere il vostro software più facile da usare, in particolare eseguendo test di usabilità che valutano quanto sia facile per gli utenti imparare a usare e far funzionare il vostro software.
La facilità d’uso è molto importante perché determina il grado di soddisfazione degli utenti del vostro software e garantisce che gli utenti siano in grado di sfruttare appieno tutto ciò che il vostro software offre.
4. Assicurarsi che il software soddisfi le esigenze degli utenti
Garantire che il software soddisfi le esigenze degli utenti dovrebbe essere una delle principali priorità di tutti i team di sviluppo e collaudo del software. Oltre ad aspettarsi che il software sia funzionale, gli utenti si aspettano che il software funzioni bene, funzioni senza intoppi e protegga i dati riservati.
Il test non funzionale è uno degli unici modi per garantire che il software soddisfi questi requisiti.
Le sfide del test non funzionale
L’esecuzione di test non funzionali presenta alcuni svantaggi. Sebbene il test non funzionale sia essenziale durante la fase di test del sistema, il processo di test non funzionale può rappresentare una sfida per i team di software che non dispongono di risorse e strumenti adeguati.
1. La ripetizione
I test non funzionali nel collaudo del software devono essere eseguiti ogni volta che il software viene aggiornato dagli sviluppatori o ogni volta che il codice viene modificato. Ciò significa che i test non funzionali possono essere molto ripetitivi, il che non solo richiede tempo ma stanca anche i tester.
I tester stanchi che svolgono compiti molto ripetitivi hanno anche maggiori probabilità di distrarsi e di commettere errori.
2. Costo
Poiché i test non funzionali sono così ripetitivi, possono anche essere piuttosto costosi, soprattutto per i team di test che si affidano a test non funzionali manuali.
I team di software devono allocare tempo e budget per frequenti test non funzionali e gli sviluppatori di software dovranno pagare un extra per questi test aggiuntivi.
Cosa testiamo nei test non funzionali?
I test non funzionali possono essere utilizzati per verificare molti parametri non funzionali diversi, ognuno dei quali influisce sulla qualità e sull’usabilità del sistema. Ciascuno di questi parametri viene testato durante il collaudo del sistema in base ai criteri stabiliti nel piano di collaudo.
1. La sicurezza
Il test di sicurezza è un tipo di test non funzionale che misura il livello di protezione di un sistema contro le minacce e gli attacchi esterni. Queste includono violazioni deliberate della sicurezza, nonché fughe di dati e altre violazioni comuni.
I test di sicurezza sono una fase importante dei test non funzionali, perché forniscono agli utenti finali e ai clienti la certezza che i loro dati sono al sicuro.
2. Affidabilità
I tester utilizzano i test non funzionali per valutare l’affidabilità del software e per garantire che il software sia in grado di eseguire continuamente e senza errori le funzioni specificate.
Mentre il test funzionale assicura che il software svolga le sue funzioni chiave, solo il test non funzionale verifica effettivamente l’affidabilità e la ripetibilità di questi risultati.
3. Sopravvivenza
La sopravvivenza descrive il modo in cui un sistema software risponde in caso di mancato funzionamento e i test di sopravvivenza assicurano che, in caso di errori e guasti, il sistema sia in grado di riprendersi.
I test di sopravvivenza possono verificare se il software è in grado di salvare i dati per ridurne al minimo la perdita, ad esempio in caso di guasto improvviso.
4. Disponibilità
La disponibilità del software si riferisce al grado di dipendenza dell’utente dal sistema durante il suo funzionamento. Questo aspetto è chiamato anche stabilità e viene verificato con i test di stabilità.
Il test di stabilità ha una certa somiglianza con il test di affidabilità, in quanto verifica se il sistema è in grado di funzionare in modo costante secondo gli standard previsti.
5. Usabilità
Il test di usabilità è un altro importante tipo di test non funzionale nel test del software. Questo tipo di test valuta la capacità dell’utente di apprendere, operare e utilizzare il sistema software seguendo le istruzioni fornite sullo schermo e altre guide di base.
I test di usabilità sono importanti perché se il software non è altamente usabile, la maggior parte degli utenti lo abbandonerà o sceglierà di usare qualcos’altro.
6. Scalabilità
I test di scalabilità verificano fino a che punto un’applicazione software può espandere la propria capacità di elaborazione per soddisfare una domanda crescente.
Ad esempio, se il software è stato progettato per essere utilizzato da più utenti contemporaneamente su una singola rete, come funziona quando dieci utenti si collegano contemporaneamente? Un numero maggiore di utenti influisce in modo significativo sulle prestazioni o sui tempi di caricamento?
7. Interoperabilità
Il test di interoperabilità è un tipo di test non funzionale che verifica la capacità di un sistema software di interfacciarsi con altri sistemi software.
Ciò è particolarmente importante quando il software è progettato come parte di una suite di prodotti che si integrano tra loro.
8. Efficienza
L’efficienza nel test del software si riferisce alla misura in cui un sistema software è in grado di gestire capacità, quantità e tempi di risposta.
Ad esempio, i tester possono valutare il numero di utenti che possono accedere al sistema contemporaneamente, il tempo necessario per recuperare i dati dal database o la velocità con cui il software è in grado di eseguire le operazioni di base.
9. Flessibilità
La flessibilità misura il grado di funzionamento di un sistema software con diversi tipi di hardware e periferiche.
Ad esempio, la quantità di RAM richiesta dal software o la necessità di una particolare quantità di CPU. Quanto più bassi sono i requisiti dell’applicazione software, tanto più flessibile è il software.
10. Portabilità
I test di portabilità servono a verificare la flessibilità e la facilità con cui il software può essere trasferito dall’attuale ambiente hardware o software.
La portabilità è importante perché influisce sulla facilità con cui gli utenti finali possono gestire il software e spostarlo tra diversi sistemi.
11. Riutilizzabilità
Il test di riusabilità è un tipo di test non funzionale che verifica se parti del sistema software possono essere convertite per essere riutilizzate in un’altra applicazione.
Sebbene i test di riusabilità non riguardino solitamente i clienti e gli utenti finali, sono un buon riflesso dell’efficacia con cui gli sviluppatori creano componenti che possono essere riutilizzati in futuro.
Le caratteristiche dei test non funzionali
Per capire cosa sono i test non funzionali è necessario comprendere le caratteristiche dei test non funzionali. Queste caratteristiche definiscono il test non funzionale nel test del software.
1. Misurabile
I test non funzionali sono sempre quantitativi e misurabili, il che significa che i tester non usano frasi soggettive come “bello” o “buono”, bensì numeri e fatti per descrivere i risultati dei test non funzionali.
Ad esempio, piuttosto che descrivere i tempi di caricamento come “veloci” o “lenti”, i test non funzionali dovrebbero produrre cifre specifiche che mostrino il numero di volte.
2. Specifico
Quando si eseguono test non funzionali, lo scopo dei test deve essere specifico per le specifiche di progettazione del software.
Ad esempio, se il piano del progetto software fa riferimento al numero di utenti che devono essere in grado di accedere contemporaneamente, questo dovrebbe essere prioritario durante il test non funzionale.
3. Sconosciuto
Sebbene i test non funzionali possano essere progettati specificamente per misurare gli attributi definiti nei piani di progetto, in molti casi questi attributi non saranno specificati in anticipo.
In questo caso, i tester dovrebbero limitarsi a eseguire test non funzionali per valutare il software in base a ciascun parametro e successivamente confrontarlo con le aspettative.
Il ciclo di vita dei test non funzionali
Poiché il test non funzionale non si riferisce a una fase specifica del ciclo di vita del test del software, ma semplicemente a un tipo di test che di solito si svolge durante la fase di test del sistema, il ciclo di vita del test non funzionale può variare molto da un progetto all’altro.
In generale, segue un ciclo di vita simile a quello di altri tipi di test del software, che inizia con l’analisi dei requisiti del progetto e termina con l’esecuzione dei test e il completamento del ciclo.
1. Analisi dei requisiti del software
La prima fase del ciclo di vita del test non funzionale è l’analisi dei requisiti del software. I team di software lavorano su criteri specifici quando costruiscono e testano le applicazioni, e questi criteri dovrebbero dettare il tipo di test da eseguire.
2. Pianificazione del test
La fase successiva del ciclo di vita è la pianificazione dei test. Durante la fase di pianificazione dei test, il responsabile dell’AQ metterà a punto un piano di test dettagliato che descriva cosa verrà testato, chi eseguirà i test e quali approcci, metodi e strumenti di test verranno utilizzati.
Il piano di test deve includere tutti i dettagli necessari ai tester per creare ed eseguire i casi di test.
3. Creazione di casi di test
La creazione dei casi di test è la fase successiva del test non funzionale. Questa fase prevede lo sviluppo di casi di test non funzionali che i tester eseguiranno in una fase successiva per verificare i requisiti non funzionali del sistema.
I casi di test descrivono cosa verrà testato, come verrà testato e qual è il risultato atteso del test.
4. Impostazione dell’ambiente di prova
La fase successiva del ciclo di vita del test non funzionale consiste nell’allestimento dell’ambiente di prova prima dell’inizio del test.
L’ambiente di test è il luogo in cui si svolgono tutti i test ed è la sede delle risorse e degli strumenti che utilizzerete per eseguire i test non funzionali.
Il team di collaudo prepara l’ambiente di prova prima dell’esecuzione del test.
5. Esecuzione del test
L’esecuzione del test è la fase successiva del ciclo di vita del test non funzionale. Si tratta di eseguire i casi di test creati in precedenza per verificare diversi aspetti delle applicazioni software, tra cui sicurezza, tempi di caricamento, capacità e portabilità.
Il team di test esegue ogni caso individualmente e verifica il risultato di ogni test rispetto al risultato atteso.
6. Ripetizione del ciclo
La fase finale del ciclo di vita del test non funzionale è il completamento e la ripetizione del ciclo. Dopo aver eseguito tutti i casi di test, i tester verificano quali test sono stati superati e quali no.
I test che falliscono di solito indicano che c’è un difetto che deve essere risolto dagli sviluppatori. Una volta che gli sviluppatori hanno corretto o modificato il codice, il ciclo di test del software si ripete nuovamente fino a quando non vengono riscontrati difetti.
Per chiarire un po’ di confusione:
Test non funzionali e test funzionali
I test funzionali e i test non funzionali sono due tipi di test del software diversi ma ugualmente importanti che, insieme, servono a valutare se un’applicazione software soddisfa i requisiti degli utenti, come indicato nel brief del progetto.
Sebbene siano entrambi tipi di test necessari per consentire ai team di software di identificare i difetti all’interno delle build del software, i test funzionali e non funzionali sono completamente distinti l’uno dall’altro.
1. Qual è la differenza tra test funzionali e non funzionali?
La differenza tra test funzionali e non funzionali sta nel tipo di test. Il test funzionale verifica le funzioni dell’applicazione e controlla che funzionino come previsto. I test non funzionali verificano altri aspetti dell’applicazione che influiscono sulla soddisfazione dell’utente e sulla qualità dell’applicazione.
I test funzionali e non funzionali si svolgono in fasi diverse del test del software, ma entrambi i tipi di test vengono solitamente eseguiti durante la fase di test del sistema.
Sia i test funzionali che quelli non funzionali possono aiutarci a capire come funziona un’applicazione e se svolge adeguatamente il suo lavoro.
Ad esempio, se state testando un’applicazione mobile che consente agli utenti di salvare elenchi di cose da fare e liste della spesa, il test funzionale può verificare funzioni come la creazione di un nuovo elenco, il salvataggio di un elenco e la modifica di elenchi esistenti.
I test non funzionali possono valutare il funzionamento dell’applicazione su diversi dispositivi mobili, la velocità di caricamento degli elenchi e l’impatto delle prestazioni dell’applicazione quando altre applicazioni sono in esecuzione in background.
2. Conclusione: test non funzionali e test funzionali
Sia i test funzionali che quelli non funzionali sono tipi importanti di test del software che possono aiutare i tester e i team QA a valutare se un’applicazione soddisfa i requisiti attuali.
Mentre i test funzionali verificano le funzioni del software, i test non funzionali verificano altri aspetti che possono influire sulle prestazioni, sull’efficienza e sulla sicurezza.
I test unitari, i test di integrazione e i test API sono tutte forme di test funzionali. In ognuna di queste fasi del test del software, i tester valutano il funzionamento delle funzioni e delle caratteristiche, sia singolarmente che insieme, e identificano i bug e i difetti che impediscono alle funzioni di funzionare come previsto.
I test di sicurezza, i test di usabilità, i test di portabilità e i test di carico sono tutte forme di test non funzionali che consentono ai tester di valutare in che misura un’applicazione svolge le sue funzioni e supporta le esigenze degli utenti.
Tipi di test non funzionali
Esistono diversi tipi di test non funzionali, ognuno dei quali verifica un diverso aspetto non funzionale delle prestazioni o dell’efficienza di un’applicazione software.
Ognuno di questi tipi di test verifica parametri diversi e alcuni test possono verificare gli stessi parametri in modi diversi.
1. Test di prestazione
I test sulle prestazioni sono un tipo di test non funzionale che verifica il funzionamento dei diversi componenti del software. Piuttosto che testare la loro funzionalità, che è ciò che fa il test funzionale, i test delle prestazioni possono verificare i tempi di risposta, i colli di bottiglia e i punti di guasto. I test sulle prestazioni aiutano i tester a garantire che il software sia di alta qualità e che sia veloce, stabile e affidabile.
2. Test di stress
Lo stress test è un tipo di test non funzionale che verifica le prestazioni del software quando viene sottoposto a sollecitazioni anomale. Ciò potrebbe significare testare le prestazioni del software quando si cerca di utilizzare molte funzioni diverse contemporaneamente, o quando si eseguono molte altre applicazioni allo stesso tempo.
Lo stress test cerca di identificare il limite in cui il software smette di funzionare correttamente e cosa succede quando il sistema è sotto stress. Permette ai tester di capire se il sistema è in grado di ripristinarsi da solo e se avvisa gli utenti con un’adeguata messaggistica di errore.
3. Prove di carico
Il test di carico è un tipo di test che valuta il comportamento del software sia in condizioni normali che in presenza di carichi più elevati. Viene utilizzato per determinare la quantità di dati che il software può gestire contemporaneamente senza che le prestazioni ne risentano negativamente.
I test di carico possono essere utilizzati per verificare il funzionamento delle applicazioni quando molti utenti le utilizzano contemporaneamente o quando gli utenti cercano di scaricare molti dati nello stesso momento.
I test di carico sono importanti se si vuole verificare se il software è scalabile.
4. Test di sicurezza
I test di sicurezza valutano le applicazioni software e cercano le vulnerabilità nella sicurezza del software. Tra questi, i potenziali rischi per la sicurezza che potrebbero comportare la perdita di dati o violazioni che espongono dati riservati.
I test di sicurezza sono importanti perché garantiscono che il prodotto sia adeguatamente protetto da hacking, violazioni dei dati e altre minacce esterne alla sicurezza.
Alcuni esempi di test di sicurezza che i tester possono eseguire includono audit di sicurezza, hacking etico, test di penetrazione, scansioni di sicurezza e valutazioni della postura.
5. Test di aggiornamento e installazione
Il test di aggiornamento e installazione è un tipo di test non funzionale del software che verifica il funzionamento del software su macchine diverse.
Lo scopo di questo tipo di test è quello di assicurarsi che i nuovi utenti possano installare facilmente il software sulle loro macchine e che gli utenti esistenti possano aggiornarlo quando vengono rilasciati nuovi aggiornamenti.
I test di aggiornamento e di installazione sono importanti perché gli utenti finali devono essere in grado di installare facilmente il vostro prodotto, a patto che lavorino con una macchina compatibile con esso.
6. Test di volume
Il test dei volumi è un tipo di test che esiste per verificare cosa succede quando grandi volumi di dati vengono aggiunti al database in una sola volta. Questo identifica se l’applicazione è in grado di gestire grandi volumi di dati e cosa succede al sistema in caso contrario.
Il test dei volumi è noto anche come flood test e può essere utilizzato per valutare la perdita di dati e i messaggi di errore che si verificano quando si aggiungono quantità significative di dati al sistema.
I test sui volumi sono l’unico modo per garantire che il software sia in grado di gestire i volumi di dati che gli utenti si aspettano.
7. Test di recupero
I test di recupero consistono nel forzare il sistema software a fallire per verificare la capacità del sistema di riprendersi dopo un arresto anomalo.
I test di recupero possono aiutare i tester a capire come il software recupera i dati e previene le perdite se l’hardware viene scollegato durante l’uso, se il software viene disconnesso dalla rete durante un trasferimento di dati o se il sistema viene riavviato inaspettatamente.
Questo tipo di test è importante perché i sistemi privi di protocolli di ripristino adeguati potrebbero subire gravi perdite di dati in caso di incidenti come questo.
Cosa vi serve per iniziare i test non funzionali
Prima di iniziare i test non funzionali, dovrete assicurarvi di aver preparato l’ambiente di test e di aver raccolto gli strumenti e i dati necessari.
1. Piano di prova
Prima di iniziare i test non funzionali, assicuratevi di avere un piano di test finito e firmato dalle persone competenti.
Il piano di test deve includere tutti i dettagli relativi a ciò che si intende testare e come. Dovrebbe spiegare quando si ricorre ai test manuali e quando si ricorre ai test automatici, oltre a delineare i ruoli e le responsabilità di tutti coloro che partecipano al processo di test.
2. Casi di test
Prima di poter eseguire i test non funzionali, è necessario creare i casi di test. Ogni caso di test delinea un elemento specifico che si intende testare, spiega come lo si verifica e descrive il risultato atteso del test.
Ad esempio, se si sta eseguendo un test di carico, un caso di test può essere quello di verificare il comportamento del software quando dieci utenti utilizzano lo stesso modulo nello stesso momento.
3. Verifica funzionale
Non è possibile eseguire test non funzionali sui componenti del software se questi non sono funzionali.
Ad esempio, se si vuole testare il numero di utenti che il software è in grado di gestire contemporaneamente, è importante innanzitutto verificare che i singoli utenti possano effettivamente accedere al software.
Prima di iniziare i test non funzionali, assicuratevi che tutti i test funzionali siano stati superati e che il software funzioni come previsto.
Di solito ciò significa che sono già stati eseguiti gli smoke test, i sanity test, gli unit test, l’integrazione e i test funzionali del sistema.
4. Strumenti di test
Prima di iniziare i test non funzionali, riunite tutti gli strumenti di test che volete utilizzare per condurre i vostri test.
Sia che si utilizzino strumenti di automazione per automatizzare alcuni test o strumenti di documentazione che aiutino a gestire e archiviare i rapporti di prova per un uso successivo, assicuratevi che gli strumenti che volete usare siano disponibili e pronti all’uso e che tutti i membri del team di collaudo sappiano come usare correttamente ogni strumento.
5. Ambiente di prova
Configurare l’ambiente di test prima di iniziare i test non funzionali. Potreste già disporre di un ambiente di test adeguato, soprattutto se potete utilizzare lo stesso ambiente per i test non funzionali e funzionali del sistema.
L’ambiente di test ideale consente di verificare ogni elemento necessario sui dispositivi corretti.
Ad esempio, se si sta testando la gestione del volume sui dispositivi smartphone, è meglio farlo su un dispositivo smartphone vero e proprio piuttosto che cercare di emulare un ambiente mobile su un computer desktop.
Il processo di test non funzionale
Il test degli aspetti non funzionali di un software è un processo in più fasi che prevede la preparazione dell’ambiente di test, la creazione di casi di test, la raccolta di dati di test e l’esecuzione di test non funzionali.
È possibile suddividere il processo di test in piccole parti per renderlo più facile da seguire per i principianti del test non funzionale.
1. Controlli di preparazione al test non funzionale
Prima di iniziare i test non funzionali, è importante verificare che siate pronti per questa fase di test.
Ciò può significare valutare i criteri di uscita per l’ultima fase di test per assicurarsi che il software l’abbia superata e assicurarsi che il software abbia superato tutti i test funzionali richiesti prima di effettuare i test non funzionali.
Alcuni team possono creare criteri di ingresso per i test non funzionali, che comprendono tutte le condizioni che devono essere soddisfatte prima dell’inizio dei test non funzionali.
2. Creare un piano di test
È possibile che abbiate già eseguito questo passaggio se state eseguendo i test non funzionali come parte del test del sistema e se state seguendo il vostro piano di test del sistema. Un piano di test delinea tutti i test da eseguire e le modalità con cui si intende eseguirli.
Senza un piano di test chiaro, è facile perdere di vista l’ambito e gli obiettivi dei test che si stanno eseguendo.
3. Creare casi di test
La fase successiva del test non funzionale consiste nella creazione di casi di test progettati per verificare ogni parametro non funzionale del software.
Ogni caso di test deve avere un ID del caso di test, un nome del caso di test, una descrizione e dettagli sull’esito atteso del test, oltre a qualsiasi criterio di superamento o fallimento determinato in anticipo. Questo aiuta i tester a capire come eseguire ogni test e quali risultati cercare.
4. Raccolta dei dati di prova
Prima di eseguire ogni caso di test, è necessario raccogliere i dati di test che verranno utilizzati per ogni caso di test.
Ciò significa solitamente raccogliere codice e dati da diversi moduli e componenti che compongono le funzioni e le aree che si intende testare. Se si vuole massimizzare la copertura dei test, si devono avere molti dati di test su cui lavorare.
5. Preparare l’ambiente di prova
La fase successiva del test non funzionale è la preparazione dell’ambiente di test. L’ambiente di test è un server di test che verrà utilizzato per condurre test software di diversi tipi.
Permette di creare condizioni identiche in cui testare il software e di impostare il software con diverse configurazioni per i test di configurazione, i test di sicurezza e altri tipi di test non funzionali.
6. Esecuzione di test non funzionali
Una volta che l’ambiente di test è pronto, è il momento di eseguire i test non funzionali. Si può decidere di eseguire i test in ordine di tipologia, ad esempio iniziando con i test delle prestazioni prima di passare ai test di sicurezza e ad altri tipi di test non funzionali.
Durante l’esecuzione di ciascun test, annotate i risultati nel vostro rapporto di prova. Se state automatizzando i test, il vostro strumento di automazione avrà anche un modo standardizzato per riportare i risultati in modo chiaro e inequivocabile.
7. Riportare i risultati dei test
Dopo aver eseguito ogni caso di test, compilate i risultati dei test non funzionali in un unico rapporto.
Il rapporto deve essere chiaro sui risultati di ogni test e non ambiguo sul superamento o meno di ogni test.
Seguite una struttura standardizzata per il vostro rapporto di prova per assicurarvi di includere tutte le informazioni che dovrete trasmettere.
8. Correggere i difetti
Una volta ottenuti i risultati dei test, riconsegnate il software agli sviluppatori se i test non sono andati a buon fine o se avete identificato bug non funzionali da correggere.
Ad esempio, se il software non è in grado di gestire un numero adeguato di utenti contemporaneamente o se le prestazioni rallentano troppo quando vengono eseguiti più programmi contemporaneamente, è probabile che questi problemi debbano essere risolti all’interno del codice per garantire che gli utenti siano soddisfatti del prodotto.
9. Ripetere il ciclo di test
Una volta che gli sviluppatori hanno riparato i difetti riscontrati nella fase iniziale di test non funzionale, il ciclo di test può ricominciare.
Gli sviluppatori testano le modifiche apportate e passano la nuova build ai tester QA, che eseguono l’intera suite di test, a partire da smoke test, unit test, integration test e infine system test.
Il ciclo di test viene ripetuto fino a quando non si verificano bug o difetti in nessun punto, dopodiché la build può entrare nella fase finale del test: il test di accettazione dell’utente.
Casi di prova per il test non funzionale
I casi di test sono un aspetto importante di tutti i test del software e, quando si eseguono test funzionali e non funzionali, si utilizzano i casi di test per definire ciò che si intende testare e come si intende farlo.
Ogni caso di test può essere visto come un mini-test e ogni caso di test avrà i propri output e risultati definiti.
1. Cosa sono i casi di test per i test non funzionali?
Un caso di test è un insieme di azioni eseguite su una build di software per verificare se soddisfa le condizioni definite nel piano del software. Ogni caso di test indica effettivamente ai tester cosa testare e come, ed è progettato per testare una funzione specifica o una caratteristica non funzionale dell’applicazione software.
I casi di test non funzionali possono includere la verifica di ciò che accade quando qualcuno cerca di accedere a dati protetti all’interno del sistema o la verifica della velocità di caricamento del software all’avvio.
2. Come si progettano i casi di test non funzionali?
Quando si progettano i casi di test per i test non funzionali, è importante seguire le pratiche standard per i casi di test, tenendo a mente gli obiettivi dei test non funzionali.
Seguite i passi seguenti per scrivere i casi di test per i test non funzionali che delineano chiaramente ciò che i vostri tester devono fare per eseguire ciascun test.
1. Definire l’area che si desidera coprire
Per ogni caso di test, considerate quale area del vostro software sarà oggetto del caso di test.
Ad esempio, se state scrivendo i casi di test per l’installazione e l’aggiornamento, potreste includere casi di test che valutano la facilità di installazione dell’applicazione su diversi dispositivi e il tempo necessario per aggiornare il software utilizzando una nuova patch.
2. Creare un ID univoco per il caso di test
Ogni caso di test deve avere un ID univoco. In questo modo è facile trovare la descrizione del caso di test e i risultati in un secondo momento e si elimina ogni confusione su quale sia il caso di test a cui ci si riferisce se due casi di test hanno nomi o descrizioni simili.
3. Nome e descrizione di ogni test
Mentre l’ID del caso di test identifica il test, è necessario fornire anche un nome e una descrizione per ogni caso di test scritto.
Dovrebbe essere un nome semplice che riassume ciò che si sta testando, mentre la descrizione è una singola frase che elabora questo aspetto in modo leggermente più dettagliato.
La descrizione deve essere sufficientemente chiara da permettere ai tester di sapere cosa testare e come farlo, oltre a tutte le condizioni particolari che devono essere soddisfatte nel test.
4. Specificare il risultato atteso
Per ogni caso di test, delineare il risultato che dovrebbe verificarsi se il software funziona come previsto.
Nei test non funzionali, come i test di prestazione e i test di carico, questo può significare in molti casi che il software continua a funzionare normalmente senza rallentamenti, rallentamenti o crash.
In altri casi, può significare che vengono visualizzati particolari messaggi di errore per notificare all’utente il problema e raccomandare una soluzione.
5. Raccomandare le tecniche di test
Per ogni caso di test, consigliate il tipo di tecniche di test e gli strumenti di test non funzionali che pensate il tester debba utilizzare durante il test.
Nei test non funzionali, i tester possono utilizzare approcci molto diversi per i vari tipi di test.
Ad esempio, i test di carico e gli stress test possono richiedere l’automazione perché non è pratico simulare manualmente un traffico estremamente intenso, mentre altri tipi di test possono essere più facili da eseguire senza strumenti o tecnologie specifiche.
6. Revisione tra pari di ogni caso di test
Prima di firmare ogni caso di test, fate in modo che ogni caso sia sottoposto a una revisione paritaria da parte di qualcuno con cui lavorate. Può trattarsi di un altro tester o di un responsabile QA.
La revisione tra pari dei casi di test assicura che siano abbastanza chiari da poter essere seguiti da un tester di terze parti e che non includano ambiguità o errori che potrebbero portare a test impropri.
3. Esempi di casi di test non funzionali
Se state scrivendo i casi di test per i test non funzionali, potrebbero assomigliare agli esempi di test non funzionali riportati di seguito.
Esempio di test di scalabilità
ID caso di test: 6671
Nome del caso di test: Test di accesso per più utenti
Descrizione: Emulazione di oltre 20 utenti che accedono al software contemporaneamente utilizzando strumenti di automazione.
Risultati attesi: Il software dovrebbe funzionare normalmente per ogni utente, consentendogli di accedere con successo in meno di 5 secondi.
Esempio di test di compatibilità
ID caso di test: 5214
Nome del caso di test: caricamento dell’applicazione nel browser Opera
Descrizione: Carica l’applicazione nel browser web Opera.
Risultati attesi: L’applicazione si carica normalmente nel browser web Opera con risoluzione e layout di visualizzazione standard.
Test non funzionali manuali o automatizzati?
Al momento di scegliere tra le diverse tecniche di test non funzionali, dovrete decidere se eseguire test non funzionali manuali o automatizzati.
I test manuali sono eseguiti da tester umani, il che significa che di solito richiedono più tempo per essere eseguiti, ma offrono anche opportunità di test esplorativi.
I test non funzionali automatizzati sono più rapidi e, per certi versi, più affidabili, ma richiedono anche più risorse o strumenti. L’automazione e l’iperautomazione stanno diventando sempre più popolari nei test, soprattutto quando si tratta di test non funzionali.
Test non funzionali manuali: Vantaggi, sfide e processi
I test manuali non funzionali vengono eseguiti esclusivamente dai tester, che verificano ogni singolo elemento non funzionale in modo indipendente.
Quando si eseguono test non funzionali manuali, i tester devono raccogliere informazioni sul software, creare singoli casi di test che corrispondono al piano di test ed eseguirli manualmente.
Questo richiede molto tempo, ma significa anche che i tester QA hanno la libertà di determinare cosa viene testato e come.
1. Alcuni dei vantaggi del test manuale sono:
I test manuali possono essere più economici di quelli automatizzati perché non richiedono tecnologie o conoscenze tecniche specifiche.
Il test manuale consente ai tester di offrire una visione umana e soggettiva del funzionamento del software e di verificare se funziona in modo soddisfacente.
Il test manuale può essere utilizzato per eseguire test di sistema in scenari in cui è impossibile automatizzare.
I test manuali consentono ai tester di valutare gli aspetti visivi del sistema, come l’interfaccia grafica e altri fattori che possono influire sull’usabilità.
Il test manuale offre ai tester una prospettiva più ampia del sistema nel suo complesso e del funzionamento dei diversi moduli e componenti.
Tuttavia, i test manuali presentano anche degli svantaggi.
2. Alcune delle sfide del test manuale includono:
Alcuni tipi di test non funzionali, tra cui il test di carico e il test delle prestazioni, sono poco pratici da eseguire manualmente.
I test manuali richiedono molto più tempo dei test non funzionali automatizzati.
I tester manuali possono distrarsi, perdere la concentrazione e commettere errori, soprattutto quando svolgono attività di test molto ripetitive.
Test non funzionali automatizzati: Vantaggi, sfide e processi
I test non funzionali automatizzati vengono eseguiti mediante script e strumenti di test automatizzati. Quando si utilizzano metodi di test automatizzati, i tester possono condurre i test in background mentre si occupano di altre attività, una volta che i test automatizzati sono stati avviati.
1. Alcuni dei vantaggi dell’automazione dei test non funzionali sono:
1. Risparmiare tempo e risorse riducendo il tempo dedicato a compiti lunghi e dispendiosi.
2. L’automazione consente di aumentare la copertura dei test coprendo una gamma più ampia di componenti e funzionalità.
3. È più fattibile condurre test automatizzati frequentemente perché richiedono meno tempo per essere eseguiti.
4. I test automatizzati sono ideali per le attività di test che richiedono molto tempo, come i test di carico, i test di volume e i test di stress, che sono molto difficili da condurre manualmente.
5. La possibilità di errori nell’esecuzione di test automatici è minore.
Tuttavia, i test automatizzati presentano anche alcuni svantaggi, il che significa che non sono sempre l’approccio giusto per tutti i tipi di test non funzionali.
2. Alcune delle sfide del test non funzionale automatizzato includono:
1. I test automatizzati sono più costosi da impostare rispetto ai test manuali.
2. L’impostazione dell’automazione dei test può richiedere tempo e risorse tecniche.
3. L’automazione dei test non lascia spazio ai test esplorativi
4. L’automazione dei test richiede ancora tempo per la creazione dei casi di test.
Conclusione: Manuale o automatizzato
test non funzionali?
Nella maggior parte dei tipi di test del software, la combinazione di test manuali e automatizzati offre di solito i risultati migliori. Ciò consente ai team di collaudo di beneficiare dell’efficienza, dell’affidabilità e dell’accuratezza dei test automatizzati, effettuando al contempo test esplorativi che consentono ai collaudatori di valutare il software da una prospettiva più soggettiva.
Nei test non funzionali, sia i test manuali che quelli automatizzati sono praticamente necessari per la maggior parte dei team di test.
I test manuali sono utilizzati al meglio per svolgere attività di test non funzionali come i test di usabilità, mentre i test automatizzati sono più spesso utilizzati per eseguire test che richiederebbero troppo tempo e sarebbero difficili da condurre manualmente, come gli stress test o i test di volume.
Il test non funzionale è una delle aree più ovvie in cui utilizzare le tecniche di automazione dei test, perché si tratta di un tipo di test quantitativo e misurabile che non richiede risultati soggettivi.
Come per altri tipi di test, i test non funzionali vengono solitamente eseguiti utilizzando un mix di test manuali e test automatizzati.
Tuttavia, i test automatizzati sono praticamente necessari per molti tipi di test non funzionali e i parametri e le metriche dei test non funzionali fanno sì che l’automazione sia più adatta a questo tipo di test rispetto ai test funzionali.
Le migliori pratiche per i test non funzionali
Quando si intraprende il testing non funzionale per la prima volta, seguire le best practice di testing può aiutare a standardizzare il processo di testing e a ottimizzare l’efficacia dei test.
Le best practice servono come linee guida per i team di test del software che vogliono migliorare i processi di test e allinearsi agli standard del settore.
1. Utilizzare gli strumenti di automazione
Nei test non funzionali, più che in altri tipi di test, è importante utilizzare strumenti di automazione per automatizzare alcuni tipi di test, in particolare i test di volume, gli stress test e i test di carico.
Questi tipi di test di solito verificano il funzionamento del software sotto la forte pressione di utenti, dati e traffico, condizioni che possono essere molto difficili da emulare manualmente.
L’automazione di questi tipi di test non funzionali non solo sarà più efficiente, ma anche più accurata e consentirà ai tester di replicare facilmente carichi e sollecitazioni più elevati.
2. Revisione tra pari di tutta la documentazione
Oltre a chiedere ai colleghi di rivedere i casi di test creati, chiedete ai colleghi del vostro team di test di rivedere i rapporti di bug, i rapporti di test, i piani di test e altre forme di documentazione formale create durante il processo di test.
In questo modo si riduce il rischio di piccoli errori che potrebbero causare gravi ritardi nel processo di test e sviluppo.
3. Definire i requisiti misurabili
Quando si definiscono i requisiti del software prima dell’inizio dei test non funzionali, assicurarsi che ogni requisito sia oggettivo e misurabile.
In questo modo è più facile per i tester accertare se il software soddisfa questi requisiti durante il test e non lascia spazio a interpretazioni.
Cosa si intende per “veloce” o “efficiente”? Utilizzate numeri e valori quantitativi per definire ciò che state cercando.
4. Considerare attentamente le metriche di test
Prima di decidere quali metriche utilizzare per misurare le prestazioni del vostro software, considerate cosa vorranno gli utenti del software e quali metriche sono effettivamente in linea con il piano e i requisiti del software.
La maggior parte dei software dovrebbe essere veloce e affidabile, ma quali sono gli altri parametri che i vostri utenti cercano? Esistono metriche specifiche per il software da considerare durante il processo di test?
Tipi di risultati di un test non funzionale
Quando si eseguono test non funzionali, si ottengono diversi tipi di risultati dai test eseguiti.
Questi sono di solito molto diversi dai risultati dei test funzionali, che sono spesso più chiari perché i test funzionali si limitano a verificare se una funzione funziona come dovrebbe o meno.
Come per i test funzionali, i tester devono stabilire aspettative chiare per ogni caso di test, in modo che sia facile determinare se ogni test viene superato o meno.
1. Numeri assoluti
Quando si eseguono test delle prestazioni, stress test e altri tipi di test non funzionali, i risultati che si osservano più spesso sono velocità e altri numeri assoluti.
Il test delle prestazioni verifica la velocità con cui il sistema è in grado di svolgere determinate attività, misurata in secondi o millisecondi.
Se si esegue un test di carico, si può valutare la quantità di dati che il software è in grado di gestire contemporaneamente senza bloccarsi o rallentare.
2. Messaggi di errore
I test non funzionali verificano anche il funzionamento del sistema in caso di errori, come errori di sicurezza, errori di convalida ed errori di configurazione.
È importante che i sistemi visualizzino messaggi di errore accurati e chiari quando si verificano, in modo che gli utenti possano prendere provvedimenti per correggere il problema e continuare a utilizzare il software.
I messaggi di errore dovrebbero essere presenti anche durante i test di sicurezza, quando il sistema impedisce agli utenti di violare le funzioni di sicurezza integrate nel software.
3. Scontri
L’arresto anomalo è un segno di fallimento del sistema e di solito indica che il sistema non è in grado di funzionare al livello che si sta testando e può significare che il test è stato superato.
In alcuni casi, il sistema potrebbe bloccarsi e tuttavia superare il caso di test su cui si sta lavorando, ad esempio se il sistema resiste alla quantità di stress o di traffico richiesta prima di bloccarsi.
Quando si eseguono test non funzionali, i tester devono aspettarsi che il sistema si blocchi regolarmente, soprattutto quando lo spingono al limite per lo stress test e altri test sulle prestazioni.
Esempi di test non funzionali
Gli esempi di test non funzionali sono simili agli esempi precedenti per i casi di test non funzionali.
È possibile esaminare esempi di test non funzionali per capire meglio cosa sia il test non funzionale e cosa verifichi all’interno di un’applicazione software.
1. Esempio di test delle prestazioni
Se state lavorando a un’applicazione mobile che collega gli utenti a un database online, è importante che un gran numero di utenti possa accedere e scaricare i dati da questo database contemporaneamente.
Questa è anche una parte fondamentale dei test di scalabilità, soprattutto se si vuole aumentare il numero di utenti dell’app in futuro.
Verrà quindi testato come il sistema reagisce quando, ad esempio, 1000 utenti cercano di accedere allo stesso database nello stesso momento e si stabiliranno i requisiti per la velocità di caricamento dell’applicazione in questa condizione.
2. Test di compatibilità
Se state testando una nuova applicazione di gestione dei documenti, dovrete verificare che funzioni su tutti i dispositivi a cui è destinata.
Ciò significa verificare che sia possibile installare e caricare l’applicazione su tutte le versioni più recenti di Windows, Mac e qualsiasi altro sistema operativo (come Linux) con cui si desidera che il software sia compatibile.
3. Test di sicurezza
Quando si eseguono i test di sicurezza, si verificano alcuni dei modi in cui le persone possono tentare di accedere ai dati riservati o di violare le protezioni di sicurezza del software, per verificare che il sistema si comporti come ci si aspetta in queste situazioni.
Ad esempio, potreste accedere come utente e tentare di accedere a file per i quali non avete l’autorizzazione di sicurezza, per assicurarvi che il sistema non vi permetta di accedere a tali file.
Tipi di errori e bug rilevati
attraverso test non funzionali
I test non funzionali possono rivelare molti bug e difetti che non sono facili da trovare come quelli identificati nei test funzionali. Questo perché i test non funzionali spesso richiedono che i tester verifichino diverse configurazioni, impostazioni e combinazioni di condizioni per valutare il funzionamento del sistema in una miriade di contesti diversi.
1. Difetti di prestazione
I difetti di prestazione si verificano quando il sistema funziona, ma non in modo rapido o efficiente come ci si aspetta.
Ad esempio, potreste notare che il sistema non si carica abbastanza velocemente in determinate condizioni o addirittura si blocca se troppi utenti si collegano contemporaneamente.
I difetti di prestazione non impediscono completamente l’utilizzo del software, ma possono renderlo meno utilizzabile e meno adatto a soddisfare i requisiti degli utenti.
2. Difetti di sicurezza
I difetti di sicurezza sono quelli che hanno un impatto sulla sicurezza del sistema software e dei dati in esso memorizzati.
I difetti di sicurezza possono verificarsi se, ad esempio, gli utenti possono accedere a dati riservati a cui non dovrebbero avere accesso o se alcune parti dell’applicazione non sono protette correttamente da password, o se la crittografia non funziona.
Questi potrebbero causare violazioni della sicurezza, che possono avere un grave impatto sulla reputazione di un editore di software.
3. Difetti funzionali
Anche se i test non funzionali non sono progettati per verificare le funzioni di un’applicazione software, in alcuni casi i test non funzionali possono identificare i difetti funzionali del software.
Ad esempio, lo scopo del test di affidabilità non è quello di verificare se l’applicazione funziona, ma di verificare se l’applicazione funziona in modo affidabile su tentativi ripetuti.
Questo può rivelare che alcune funzioni non funzionano in modo affidabile quando un’azione viene ripetuta, e queste possono essere classificate come errori funzionali.
Metriche comuni di test non funzionali
Le metriche di test non funzionali descrivono le metriche con cui vengono misurate le prestazioni e l’efficienza del sistema.
I diversi tipi di test non funzionali si basano su metriche diverse e si può scegliere di utilizzare una varietà di metriche a seconda degli obiettivi finali del progetto.
1. Il tempo
Le metriche del tempo misurano il tempo necessario per eseguire determinate operazioni o il tempo che gli utenti devono attendere per caricare le funzioni.
Alcuni esempi di metriche temporali sono il numero di transazioni o download che un’applicazione può effettuare in un determinato lasso di tempo, i tempi di risposta delle diverse funzioni e il tempo necessario all’applicazione per completare una particolare operazione.
Diversi tipi di test misurano i risultati in secondi o come presentazione del numero di operazioni al secondo.
2. Spazio
Lo spazio è un’altra metrica importante nei test non funzionali. Le metriche dello spazio possono verificare quanto spazio richiede la CPU o quanto spazio occupa il software sul disco rigido una volta installato.
Alcuni esempi di metriche di spazio includono la memoria cache, la memoria principale e la memoria ausiliaria.
Un software che richiede una grande quantità di spazio per funzionare correttamente può essere adatto a un numero ridotto di clienti.
3. Usabilità
Alcune metriche dei test non funzionali prendono in considerazione l’usabilità del sistema, ad esempio il tempo necessario per addestrare gli utenti a utilizzare correttamente il sistema, il numero di scelte che gli utenti devono effettuare per eseguire le funzioni chiave o il numero di clic del mouse necessari per svolgere determinate attività.
I test non funzionali possono misurare ciascuna di queste metriche in modo quantitativo, con numeri più bassi che generalmente implicano livelli più elevati di usabilità.
4. Affidabilità
Un’altra metrica importante nei test non funzionali è l’affidabilità. L’affidabilità riflette la probabilità che il sistema si comporti sempre allo stesso modo o che funzioni come dovrebbe per un lungo periodo di tempo.
Alcuni esempi di metriche utilizzate per misurare l’affidabilità sono il tempo medio di guasto, il tasso di guasto, la disponibilità e la probabilità di fermo macchina.
Ognuna di queste metriche aiuta i tester a verificare che il sistema possa funzionare a lungo senza subire guasti o crash.
5. Robustezza
La robustezza è la misura della capacità del sistema di gestire i guasti e di riprendersi in caso di guasto.
Alcuni esempi di metriche che misurano la robustezza includono il tempo necessario al sistema per ripristinarsi dopo un guasto, la percentuale di incidenti che portano a un guasto catastrofico e la probabilità che i file di dati siano danneggiati dopo il guasto del sistema.
Si tratta di metriche importanti perché gli utenti si aspettano che a volte i sistemi si guastino senza perdere tutti i dati o corrompere i file.
6. Portabilità
Le metriche di portabilità misurano la facilità con cui il software può essere trasferito su sistemi diversi o spostato in una nuova posizione all’interno di una rete.
Alcuni esempi di metriche che misurano la portabilità sono la percentuale di codice non portabile e il numero di sistemi su cui il software può essere eseguito.
Idealmente, un software che può essere eseguito su molti sistemi diversi è più portatile e quindi più comodo da usare in ambienti che potrebbero richiedere frequenti trasferimenti o spostamenti.
Strategie per la conduzione di test non funzionali
Quando si iniziano i test non funzionali, è importante affrontare questa fase di test con una strategia in mente. I responsabili QA e i responsabili del testing del software devono considerare i rischi del testing, le risorse a loro disposizione e lo scopo del testing prima di iniziare il testing non funzionale.
Lo sviluppo di una strategia può aiutarvi a ottimizzare i test non funzionali fin dall’inizio.
1. Assegnare ruoli e responsabilità
Prima di iniziare i test non funzionali, assegnate ruoli e responsabilità ai membri chiave del team di test. In questo modo è più facile gestire il carico di lavoro dei test non funzionali e garantire che i tester esperti siano responsabili del mantenimento della qualità e dell’efficacia dei test condotti.
Assicuratevi che le persone scelte per ricoprire questi ruoli abbiano le conoscenze e l’esperienza necessarie per svolgere i compiti che vi aspettate, in particolare se questi compiti richiedono competenze tecniche.
2. Raccogliere gli strumenti di test pertinenti
Riunite tutte le tecnologie e gli strumenti che volete utilizzare per eseguire i test non funzionali. Assicuratevi che tutto il vostro team sappia come usarli in modo efficace e, se necessario, organizzate corsi di formazione per colmare le lacune.
Assicurarsi che tutti sappiano quali strumenti di test usare e come usarli prima dell’inizio dei test non funzionali riduce il rischio di dover sospendere i test o rifarli a causa di conoscenze insufficienti.
3. Privilegiare i test
Prima di iniziare i test non funzionali, fate un elenco di tutti gli aspetti del sistema che dovete testare e classificateli in base all’urgenza e all’importanza.
È possibile dare priorità ai test non funzionali in base al livello di rischio connesso a ciascun aspetto del sistema che si sta testando.
Ad esempio, potrebbero essere eseguiti test di sicurezza di base, perché un’adeguata sicurezza è considerata estremamente importante nel software moderno. Quanto prima si identificano i difetti ad alto rischio, tanto minore sarà l’impatto potenziale di tali difetti su altri aspetti del sistema.
7 migliori strumenti di test non funzionali
Gli strumenti di test non funzionali possono snellire il processo di test, rendere più facile ed economica l’automazione dei test e aiutare i responsabili della QA a gestire il processo di test e documentazione.
Ci sono molti strumenti di test non funzionali gratuiti disponibili online, così come alcuni strumenti per i quali è possibile pagare un canone mensile per l’aggiornamento.
1. ZAPTEST edizione gratuita
ZAPTEST è un popolare strumento di test del software che consente agli utenti di eseguire test funzionali e non funzionali del software in modo rapido e semplice. È possibile utilizzare ZAPTEST per automatizzare i test del software e utilizzare la tecnologia RPA per emulare varie funzioni e condizioni nei test non funzionali.
L’edizione ZAPTEST FREE è solo una versione ridotta dell’edizione enterprise, che offre molte delle stesse funzionalità su scala ridotta. È possibile richiedere assistenza sul forum ZAPTEST ed eseguire test di prestazioni con un numero illimitato di utenti virtuali.
2. Appium
Appium è uno strumento gratuito per il test del software, particolarmente adatto per testare le applicazioni mobili su una serie di piattaforme diverse, compresi i dispositivi iOS e Android. Appium offre agli utenti una grande flessibilità, che consente loro di elaborare i propri framework e le proprie strategie di test, beneficiando al contempo delle capacità di automazione offerte da Appium.
3. Loadium
Loadium è uno strumento di test non funzionale che viene utilizzato al meglio per eseguire test di prestazioni e test di carico, due tipi di test non funzionali che sono molto più facili da eseguire utilizzando strumenti di automazione.
Loadium consente agli utenti di eseguire test di carico su larga scala e offre soluzioni personalizzate per adattare i test agli obiettivi del software.
È possibile provare Loadium gratuitamente o pagare per scaricare la versione completa dell’applicazione.
4. Obkio
Obkio è uno strumento di test del software che aiuta i responsabili della QA e i test manager a definire le priorità e a classificare i problemi in base alla loro gravità. Obkio è in grado di rilevare i problemi prima che lo facciano gli utenti, offre loro notifiche intelligenti e può aiutare a individuare il punto in cui si trova il problema.
Obkio non è solo per i test non funzionali, ma è uno strumento di test gratuito molto utile che può essere utilizzato in tutte le fasi del ciclo di vita del test.
5. SonarQube
SonarQube è uno strumento di test di sicurezza open-source in grado di analizzare automaticamente il codice per individuare bug e vulnerabilità. Scritto in Java, SonarQube può essere utilizzato per analizzare il codice in oltre venti diversi linguaggi di programmazione e l’interfaccia pulita del sistema consente di individuare facilmente i problemi che potrebbero causare vulnerabilità di sicurezza in futuro.
6. Tsung
Tsung è un altro strumento per i test non funzionali, ideale se volete automatizzare i test di carico e di stress ma non vi trovate bene con la versione gratuita di Loadium.
Tsung è uno strumento open-source che consente agli utenti di eseguire test di carico ad alto volume su più protocolli e server, tra cui HTTP e SOAP.
Tsung è completamente gratuito e può aiutare i tester a garantire che il software su cui stanno lavorando offra livelli di prestazioni elevati in una varietà di condizioni difficili.
7. Sikuli
Sikuli è un’altra applicazione che utilizza l’automazione robotica dei processi per automatizzare il processo di test. L’applicazione può automatizzare tutto ciò che è visibile sullo schermo. È possibile utilizzare Sikuli per testare applicazioni non basate sul web e per riprodurre rapidamente i bug.
Lista di controllo, suggerimenti e trucchi per i test non funzionali
Prima di iniziare i test non funzionali, verificate di avere tutto il necessario per eseguire test non funzionali approfonditi in un ambiente preparato.
Seguite la lista di controllo qui sotto per i suggerimenti e i trucchi prima di iniziare i test non funzionali.
1. Lavorare secondo un programma
Sia che lo includiate nel piano di test o che creiate un documento separato, strutturate i test del software in base a un programma di test.
Se si trovano più bug e difetti di quanto ci si aspetta, a volte ci si può allontanare dal programma, ma avere un programma di partenza può aiutare a guidare i tester e a motivarli a lavorare in modo efficiente, soprattutto quando si eseguono test manuali che richiedono molto tempo.
2. Identificare il team di test
Delegare le responsabilità e assegnare ai membri del team di test ruoli e titoli ufficiali può contribuire a garantire che il processo di test si svolga senza intoppi.
Comunicate chiaramente i ruoli e le responsabilità all’interno del team prima dell’inizio dei test e assegnate a diversi tester la responsabilità di diversi aspetti dei test non funzionali, in modo che ognuno sia tenuto a rispondere dei propri compiti.
3. Selezionare gli strumenti e le tecnologie prima del test
Se decidete di lavorare con particolari strumenti e tecnologie solo dopo aver iniziato i test non funzionali, questo può bloccare il processo di test e causare confusione tra i tester.
Invece, fate le vostre ricerche in anticipo e decidete se ci sono strumenti che volete utilizzare prima dell’inizio dei test. In questo modo è facile incorporare questi strumenti nel piano di test e addestrare i tester a utilizzarli prima dell’inizio dei test.
4. Ottenere sempre una firma formale sui test e sulla documentazione
I test sono un processo di garanzia della qualità e il modo migliore per massimizzare il valore dei test eseguiti è quello di eseguire una QA di base anche sui test pianificati ed eseguiti.
Introdurre semplici protocolli che richiedano ai tester di chiedere ai responsabili QA e ai manager di rivedere e firmare i piani e i rapporti di test prima di passare alla fase successiva.
Questo aumenta enormemente la possibilità di individuare e correggere tempestivamente gli errori di test.
7 errori e trappole da evitare nell’implementazione di test non funzionali
Se siete alle prime armi con i test non funzionali, può essere facile commettere alcuni errori comuni in cui spesso cadono i tester e i professionisti della QA.
Il test non funzionale è un lavoro complesso che implica la considerazione di un software da tutte le angolazioni e prospettive.
Di seguito sono elencate alcune delle insidie più comuni che i tester commettono quando eseguono test non funzionali.
1. Non pianificare
Se siete alle prime armi con i test non funzionali, potreste pensare di potervi tuffare direttamente nella fase di test senza creare in anticipo un piano di test approfondito.
Alcuni team di collaudo possono redigere documenti di collaudo incompleti o riassunti superficiali del piano di collaudo che non delineano adeguatamente le azioni che i collaudatori devono intraprendere durante il collaudo non funzionale.
2. Cattiva gestione dei test
I problemi possono sorgere se i test sono gestiti male in qualsiasi fase del processo di verifica. Una gestione inadeguata può significare che i tester non hanno le risorse adeguate per eseguire i test in modo approfondito o che non hanno il tempo sufficiente per testare ogni aspetto della build.
I test manager devono essere in grado di imparare dagli errori commessi e di sviluppare piani di test più efficaci per il futuro.
3. Scarsa comunicazione
La scarsa comunicazione può causare molti problemi durante il processo di test, in particolare nell’ambito dei test non funzionali.
Ciò potrebbe significare una scarsa comunicazione all’interno del team di testing o una scarsa comunicazione tra tester, sviluppatori e stakeholder.
Ciò accade spesso quando i tester non conservano adeguatamente i documenti di test o non comunicano regolarmente con gli altri reparti durante il processo di test.
4. Ignorare gli sviluppatori
I tester e gli sviluppatori di solito lavorano separatamente, ma i team di collaudo che lavorano a stretto contatto con gli sviluppatori possono beneficiare di una conoscenza aggiuntiva del funzionamento del software e dell’interazione tra i diversi moduli.
Coinvolgere gli sviluppatori nel processo di test, o chiedere loro un feedback nei momenti chiave, può aiutare i team di test a mettere a punto piani di test più efficienti e completi.
5. Scopo del test
Molti tester credono ancora che lo scopo del testing sia quello di verificare che il software funzioni o di dimostrare agli stakeholder e agli investitori che il software funziona.
Al contrario, i tester dovrebbero approcciarsi al testing con l’atteggiamento che lo scopo del testing è quello di cercare i difetti.
I tester che non trovano difetti possono essere soddisfatti che il software che stanno testando sia privo di bug solo se sono convinti di aver cercato ovunque si possano trovare difetti.
6. Errori manuali e errori di automazione
È importante dedicare un po’ di tempo a valutare se sia meglio il test manuale o quello automatizzato per ogni tipo di test che si esegue.
I metodi di test automatizzati sono estremamente adatti a quasi tutte le forme di test non funzionali e i team di test abituati a eseguire test funzionali possono commettere l’errore di ritenere di poter testare manualmente le caratteristiche non funzionali con la stessa facilità.
7. Utilizzo di strumenti di test sbagliati
È facile scegliere gli strumenti e le tecnologie di test sbagliati prima di iniziare i test non funzionali, soprattutto se i team di test sono abituati a eseguire test manuali e non sono abituati a usare gli strumenti di test.
Ricercate in anticipo i metodi di test non funzionali che volete utilizzare e scegliete strumenti software e di automazione che soddisfino i requisiti specifici del vostro progetto.
Conclusione
Il test non funzionale è una fase essenziale del processo di test che consente ai tester di verificare le prestazioni di un sistema e la misura in cui soddisfa i requisiti non funzionali, come i tempi di caricamento, la capacità e la salvaguardia della sicurezza.
Esistono molti modi diversi per eseguire i test non funzionali, ma i moderni strumenti di automazione consentono di massimizzare la copertura e l’accuratezza dei test senza compromettere la qualità dei risultati.
FAQ e risorse
Se volete saperne di più sui test non funzionali, ci sono molte FAQ e risorse disponibili online.
Sfogliate le nostre risorse online preferite per i test non funzionali o leggete le risposte ad alcune delle domande più frequenti sui test non funzionali.
1. I migliori corsi sui test non funzionali
Ci sono molti corsi disponibili online che possono aiutarvi ad ampliare la vostra conoscenza dei metodi e degli approcci di test non funzionali.
Alcuni di questi corsi sono disponibili gratuitamente, mentre altri possono offrire un certificato o una qualifica a pagamento. Se volete intraprendere un corso accreditato, potete chiedere al vostro datore di lavoro se vi sponsorizza e copre il costo delle lezioni.
Alcuni dei migliori corsi sui test non funzionali includono:
- TSG: Corso di formazione non funzionale di 2 giorni
- Udemy: Il Bootcamp completo per il testing del software 2023
- Edx: Certificato professionale di test del software
- Educativo: Automazione dei test sulle prestazioni 101
2. Quali sono le 5 principali domande di intervista sui test non funzionali?
Se vi state preparando a un colloquio di lavoro per lavorare nel campo del testing del software, il vostro intervistatore potrebbe farvi delle domande sul testing non funzionale per assicurarsi che abbiate compreso come funziona questa fase essenziale del testing del software. Preparatevi al colloquio preparando in anticipo le risposte efficaci alle domande più comuni.
In che modo gli approcci e i metodi utilizzati nei test non funzionali possono differire da quelli utilizzati nei test funzionali?
In cosa differiscono i test non funzionali da quelli funzionali?
Quali sono i diversi tipi di test non funzionali?
Come si dà priorità ai test funzionali e ai casi di test?
In quale fase del test del software viene solitamente eseguito il test funzionale?
3. I migliori tutorial di YouTube sui test non funzionali
Se preferite imparare guardando i video, potreste trovare i tutorial di YouTube sui test non funzionali un modo utile per saperne di più su questo tipo di test del software.
Di seguito sono riportati alcuni dei migliori tutorial di YouTube sul testing del software disponibili oggi.
Che cos’è il test del software non funzionale? Tutorial sul test del software
Aiuto per il test del software: Test non funzionali
Test non funzionali nel test del software
Visita W3Schools
Test funzionali e non funzionali
4. Come mantenere i test non funzionali
Una corretta manutenzione dei test assicura che i test del software possano essere ripetuti senza compromettere la qualità dei risultati.
Mantenendo i test non funzionali, si può garantire che i test in ogni fase del processo di sviluppo siano adeguati e che i test siano sempre aggiornati in linea con il codice in costante evoluzione.
È possibile mantenere i test non funzionali seguendo i nostri suggerimenti qui di seguito.
Comunicare chiaramente con il team di test durante la creazione di casi di test e la stesura della documentazione.
Seguire sempre le migliori pratiche di progettazione dei test
Rivalutare i protocolli di verifica nelle varie fasi del processo di verifica.
Aggiornare le modifiche apportate al test man mano che si procede.
Considerare i progetti futuri quando si apportano modifiche ai test attuali
5. I test non funzionali sono black box o white box?
Il test non funzionale è un tipo di test black box, il che significa che i tester non si occupano del funzionamento interno del sistema, ma solo dei suoi risultati esterni.
Ciò si contrappone al white box testing, che verifica il funzionamento interno del sistema. Esempi di test white box sono i test unitari e i test di integrazione.
I test dei requisiti funzionali e non funzionali sono esempi di black box testing. Ciò significa che i tester non necessitano di competenze tecniche avanzate o di conoscenze di programmazione informatica per eseguire i test black box, né devono imparare a implementare i sistemi che stanno testando.