Il partizionamento dell’equivalenza nei test del software è una tecnica di test black-box che aiuta a costruire casi di test efficienti senza compromettere la copertura dei test.
In questo articolo vedremo cos’è il partizionamento delle classi di equivalenza, perché è utile ed esploreremo alcuni dei processi e degli approcci che si possono utilizzare per sfruttare i vantaggi di questa tecnica.
Che cos’è la suddivisione in classi di equivalenza
nel testing del software?
Tutti i software hanno particolari condizioni di ingresso. Nel contesto del test del software, queste condizioni di input descrivono i valori o i dati che un tester deve utilizzare per verificare la qualità e la funzionalità del suo software. Questi input possono essere semplici come un clic del mouse, fino a testi e numeri.
Una partizione equivalente nel test del software esplora i diversi input richiesti per l’utilizzo del software e li raggruppa in classi di equivalenza, ossia insiemi di input che avranno un effetto equivalente sul comportamento del software.
Se si sa come si comporterà ogni gruppo di ingressi, non è necessario testare ogni rappresentante del gruppo. Per questo motivo, il partizionamento delle classi di equivalenza è un ottimo modo per aiutare i tester a ridurre la frequenza dei test ridondanti. In un mondo ipercompetitivo come quello dello sviluppo del software, con scadenze sempre più strette, risparmiare tempo e fatica nel ciclo di vita del test del software (STLC) è fondamentale.
Infine, vale la pena di notare che il test di equivalenza è una tecnica di test black-box. In breve, significa che i tester non devono conoscere il codice interno o il funzionamento del programma. I test si basano su ingressi, uscite e comportamenti esterni. Per questo motivo, questi test sono fortemente incentrati sul comportamento dell’utente durante l’utilizzo del programma.
1. La partizione di equivalenza del test del software in breve
Il partizionamento dell’equivalenza divide i dati di input del test del software in due campi: input validi e non validi. I valori all’interno di ciascuna partizione devono far sì che il software abbia lo stesso comportamento. Ad esempio:
- Se la condizione di un valore della partizione A è vera, anche gli altri valori della partizione A devono esserlo.
- Allo stesso modo, se le condizioni di un valore della partizione A sono false, anche gli altri valori della partizione A devono essere falsi.
In un contesto di test, ogni partizione deve essere coperta almeno una volta. Logicamente, ciò significa che se una voce della partizione A fallisce, anche tutti gli altri ingressi falliranno. Questo processo dovrebbe far risparmiare tempo, perché invece di testare ogni ingresso che si trova nella partizione A, i tester possono testarne solo uno ed estrapolare il risultato in base ai suoi punti in comune.
2. Perché è importante il test delle classi di equivalenza nel test del software
Prima di entrare nel merito dei vantaggi diretti dei test di classe di equivalenza nel testing del software, dobbiamo definire il motivo per cui questo approccio è importante.
Tutti i tester sanno che il test del software richiede compromessi. Il tempo e il budget sono limitati, il che significa che i tester devono sfruttare al meglio le loro risorse. La suddivisione delle equivalenze nei test del software aiuta i team a trovare un equilibrio tra efficienza e affidabilità nei loro test, riducendo il numero di input.
Vantaggi del partizionamento per equivalenza
nel test del software
Una partizione equivalente nel test del software è preferita dai team di test per una serie di motivi. Ecco alcuni dei più interessanti.
1. L’efficienza
Il grande vantaggio del test di partizione di equivalenza risiede nella sua efficienza. Quando i tester utilizzano il partizionamento per equivalenza, possono ridurre il numero di casi di test necessari senza compromettere la copertura dei test. Selezionando un caso di input da ogni classe di equivalenza, i tester possono essere sicuri di capire come funziona il loro software con una varietà di input.
2. Semplicità
Un altro grande vantaggio del partizionamento dell’equivalenza nel test del software è la semplicità. La suddivisione di una serie di input diversi in dati validi e non validi semplifica notevolmente la pianificazione dei test. Testare ogni singolo ingresso richiede molta documentazione e coordinamento. La riduzione a un solo esempio rappresentativo snellisce il processo di test.
Copertura avanzata
L’uso delle classi di equivalenza nei test consente anche di utilizzare il tempo a disposizione per i test in modo più efficiente. Ridurre gli input di test in classi significa poter testare in modo più approfondito ogni classe. Questo approccio completo sarebbe francamente impossibile se si testasse ogni singolo ingresso. Il partizionamento dell’equivalenza consente ai team di analizzare a fondo e testare dati validi e non validi, casi limite, valori limite e altro ancora.
3. Riutilizzabilità
Il tempo iniziale investito per stabilire ogni classe di equivalenza nel test del software si ripaga in futuro se si riutilizzano queste classi per i test di input futuri. Anche se non tutte le partizioni saranno rilevanti per i test futuri, quelle che lo sono vi faranno risparmiare molto tempo per i progetti futuri o anche per i test di regressione.
Svantaggi del partizionamento per equivalenza
nel test del software
Sebbene il partizionamento per equivalenza offra alcuni vantaggi importanti, non è la soluzione ideale per ogni scenario. Esploriamo alcuni dei suoi limiti.
1. Ordine di ingresso
In alcune situazioni, l’ordine degli input è una parte fondamentale del test della funzionalità di un’applicazione. Non è una cosa che si può ridurre utilizzando il partizionamento per equivalenza. I tester devono tenere conto di queste situazioni e utilizzare tecniche alternative per fornire una buona copertura.
2. Dipendenze complesse dagli ingressi
Il software complesso con dipendenze complesse dagli input è un’altra area in cui si evidenziano i limiti del partizionamento per equivalenza. Ad esempio, un software che produce calcoli in base a vari input. In questo scenario, i tester dovrebbero utilizzare una serie di tecniche per ridurre l’esplosione combinatoria e aumentare la probabilità di isolare i difetti.
Approcci alternativi per integrare il
limiti dei test di equivalenza
Mentre i test di partizione di equivalenza sono appropriati per molti scenari di test, un software molto complesso con dipendenze intricate tra i valori di input può richiedere approcci complementari.
Quando si tratta di scrivere casi di test per software complessi, l’utilizzo di una combinazione di questi approcci è un’idea solida.
1. Test a coppie
Il test a coppie è una tecnica di test del software che verifica tutte le possibili combinazioni di ogni coppia di parametri di ingresso. Questo approccio garantisce che ogni coppia di parametri venga testata insieme almeno una volta.
2. Test della tabella decisionale
Una tabella decisionale aiuta i tester a tracciare metodicamente le diverse combinazioni di input. È un buon modo per garantire una copertura sistematica quando esistono dipendenze complesse.
3. Test di transizione di stato
Questo tipo di test misura il modo in cui il software passa da uno stato all’altro in risposta a varie combinazioni di input.
4. Test basati su modelli
Questo approccio richiede la creazione di un modello basato sulla logica interna del software e l’utilizzo di uno strumento di automazione per creare casi di test basati su tale modello. Questa tecnica è in grado di gestire la complessità e di garantire una copertura adeguata.
Esempi di test di suddivisione in classi di equivalenza
Il modo migliore per comprendere il partizionamento delle equivalenze è osservare come e dove si può usare una classe di equivalenza nel test del software. Ecco alcuni esempi che aiutano a visualizzare meglio il concetto.
1. Esempio di test di partizione della classe di equivalenza #1
Un modulo d’ordine online è un buon esempio di classe di equivalenza nel test del software.
Supponiamo che stiate costruendo un’applicazione per un rivenditore online di attrezzature fisse. Esiste un modulo d’ordine tipico per i rotoli di carta A4. Ecco come si possono utilizzare le classi di equivalenza per verificare questa forma.
Classi di equivalenza:
Le quantità di carta A4 sono comprese in un intervallo specifico che va, ad esempio, da 1 a 100. Quindi, le tre classi sono:
- Da 1 a 100
- Numeri inferiori a 1
- Numeri superiori a 100.
Casi di test:
Devono essere eseguiti tre casi di test, con i seguenti risultati attesi
- Qualsiasi numero compreso tra 1 e 100 = Ordine elaborato
- Numeri inferiori a 1 = messaggio di errore
- Numeri superiori a 100 = messaggio di errore
2. Esempio di test di partizione dell’equivalenza n. 2
Una classe di equivalenza nel test del software può trattare molto di più dei semplici numeri. In questo esempio, vedremo come utilizzare lo stesso principio per verificare un portale di caricamento di file. Supponiamo di dover effettuare un test per un sito che richiede agli utenti di caricare documenti d’identità, ma che può accettare solo formati specifici.
Classi di equivalenza:
- I documenti supportati sono PDF e JPEG.
- I documenti non supportati sono tutti gli altri formati di documenti.
- Nessun documento
Casi di test:
- Test con il caricamento di PDF o JPEG = caricamento riuscito
- Prova a caricare un formato non supportato = messaggio di errore
- Test senza caricamento di file = messaggio di errore
Come implementare un partizionamento di equivalenza
approccio al test del software
Se si desidera utilizzare le classi di equivalenza nei test, è necessario adottare un approccio strategico. Ecco un’utile guida passo-passo all’implementazione del partizionamento di equivalenza nel testing del software.
Passo 1: identificare le variabili di input
Ogni software risponde a una serie di variabili di input. Nel caso di software complessi, queste variabili possono essere enormi. Quindi, esaminate i requisiti e le specifiche del software e individuate tutte le variabili che hanno un impatto sul comportamento del software.
Alcuni degli input più ovvi sono i moduli di input dell’utente. Tuttavia, è necessario considerare una gamma più ampia di input per la vostra lista. Si possono considerare anche le variabili ambientali, le chiamate API, i calcoli interni e così via.
È quindi necessario comprendere i diversi tipi di dati variabili. È possibile classificare queste variabili come interi, booleani, stringhe e così via, per definire le partizioni appropriate.
Infine, è necessario esplorare i vincoli di input. Si tratta di elementi quali i caratteri consentiti, i formati definiti e i valori minimi/massimi.
Passo n. 2. Determinare le partizioni valide e non valide
Esaminate ogni variabile di input e iniziate a suddividerla in base ai risultati validi e non validi. Queste saranno le classi di equivalenza nei test.
1. Partizioni valide
Le partizioni valide possono essere suddivise in due classi.
Classi di equivalenza positive:
Valori che il software dovrebbe gestire con successo. Ad esempio, per i software che registrano i voti in percentuale, qualsiasi valore compreso tra 0 e 100 è valido.
Classi di equivalenza negative:
Questa categoria è destinata ai valori che non rientrano nei limiti dell’input previsto, ma che il software dovrebbe gestire con un messaggio di errore. Ad esempio, l’input è 110 per un voto in percentuale, il che fa sì che il software restituisca un messaggio di errore che dice: “Tutti i valori devono essere compresi tra 0 e 100”.
2. Partizioni non valide
Queste classi di equivalenza comprenderanno input che scateneranno errori o comportamenti inattesi. Nel nostro esempio precedente, ciò potrebbe includere il tentativo di inserire A+ o B o altri dati simili nel voto percentuale. Anche se questi input potrebbero essere tecnicamente corretti, non rientrano nelle aspettative numeriche.
#3. Scrivere casi di test efficaci
Successivamente, è necessario progettare casi di test che coprano almeno una volta ogni partizione di equivalenza. Come accennato in precedenza nell’articolo, ciò garantisce un’adeguata copertura dei test.
Per prima cosa, è necessario selezionare valori rappresentativi all’interno di ogni partizione di equivalenza che possano coprire sia i dati validi che quelli non validi.
Suggerimenti per scrivere casi di test solidi
- Pensate ai valori limite: Verificate i confini delle vostre partizioni. Minimo, massimo, inclusivo, esclusivo e così via, poiché queste aree sono fortemente candidate alla presenza di bug. Ad esempio, se le aspettative di input sono comprese tra 0 e 100, verificare la presenza di valori negativi e di numeri come 101.
- Considerare scenari di test positivi e negativi per i casi di test validi e non validi.
- I test combinati sono una buona idea. Utilizzare alcuni approcci diversi, come illustrato nei nostri approcci alternativi, per integrare i limiti della sezione sui test di equivalenza.
- Documentare il motivo per cui i valori di input sono stati suddivisi in partizioni specifiche e delineare chiaramente il comportamento atteso di ciascun test.
- Se possibile, utilizzate strumenti visivi per dare un senso di chiarezza e obiettività ai vostri casi di test, utilizzando diagrammi o tabelle per tracciare le partizioni.
#4. Programmare ed eseguire i casi di test
Date priorità ai vostri compiti in base a fattori quali:
- Quali sono le aree che hanno maggiori probabilità di presentare difetti?
- Quali sono gli scenari che con maggiore probabilità possono provocare situazioni gravi, come crash o blocchi
Quindi, eseguite i test e registrate i risultati e gli eventuali errori che si verificano. Per i programmi complessi con molti input, è possibile utilizzare gli strumenti RPA per imitare le azioni dell’utente.
#5. Analizzare i risultati
Mettere in comune i dati di prova raccolti e analizzare i risultati. Alcuni metodi da utilizzare sono:
- Esaminate ogni caso di test e confrontate i risultati effettivi con quelli attesi.
- Individuare eventuali discrepanze e indagare e segnalare eventuali bug e difetti.
#6 Suggerimenti aggiuntivi
Anche se questi suggerimenti non si applicano a tutti gli scenari, si riveleranno utili per il test di software complessi.
- Le tabelle decisionali sono un modo eccellente per visualizzare le partizioni di equivalenza e le diverse combinazioni di input che si desidera utilizzare.
- È possibile unire le classi di equivalenza se presentano un comportamento quasi identico, ottimizzando ulteriormente il processo di test.
- Utilizzare i test sui valori limite per migliorare il rilevamento dei difetti
- Ove possibile, automatizzare i casi di test di partizione dell’equivalenza.
Partizione di equivalenza e analisi del valore limite
Il partizionamento per equivalenza si basa sul presupposto che ogni test all’interno di una partizione produca lo stesso risultato. Sebbene ciò sia vero in molte situazioni, non sempre funziona. Ad esempio, gli input aggiunti per errore a una partizione potrebbero non essere controllati, con conseguente riduzione della copertura e potenziale instabilità del software.
La soluzione a questo problema è il test del valore limite. Consente ai team di collaudo del software di concentrarsi sulle aree che hanno maggiori probabilità di contenere rischi e di testare il software su questa base. In breve, propone che i rischi si verifichino soprattutto ai bordi o ai confini delle partizioni di input. Pertanto, i tester possono scrivere casi di test sui limiti superiore e inferiore degli ingressi, oltre agli altri casi di test della classe di equivalenza.
Partizione delle equivalenze e automazione con ZAPTEST
Gli strumenti di automazione dei test software, come ZAPTEST, possono aiutare i team ad automatizzare il partizionamento delle equivalenze sia durante la creazione che l’esecuzione dei test.
Vediamo come ZAPTEST può aiutarvi a sbloccare i vantaggi di questo utile approccio di test black-box.
1. Selezione dello strumento
La scelta dello strumento giusto per il lavoro è importante. La maggior parte degli strumenti di automazione dei test è specializzata in test web, mobile o desktop. ZAPTEST è in grado di gestire test su diverse piattaforme e applicazioni, il che lo rende una scelta solida.
2. Scrivere ed eseguire i casi di test
ZAPTEST 1Script consente di analizzare l’interfaccia utente per costruire l’automazione dei test. Inoltre, è possibile scansionare i mock-up delle applicazioni se si è in una fase iniziale di sviluppo. Utilizzando la funzione Scan GUI, ZAPTEST scansiona tutti gli oggetti di test e li aggiunge all’elenco degli oggetti.
Da qui è possibile aggiungere oggetti al diagramma e costruire le fasi del test.
ZAPTEST consente di automatizzare la scrittura dei casi con una semplice interfaccia drag-and-drop. Non è necessario avere competenze di codifica per creare casi di test con ZAPTEST. Quindi, da qui, si può selezionare l’operazione pertinente da un metodo a discesa e costruire un caso di test basato sui valori di input necessari per l’interfaccia. Quindi, si possono costruire casi di test per ogni equivalenza ed eseguire i casi di test. È anche possibile riutilizzare i casi di test e modificarli nell’editor dei passi, risparmiando molto tempo.
3. Reporting e gestione dei casi di test
ZAPTEST consente di eseguire i casi di test in parallelo, con un notevole risparmio di tempo. Questo può aiutare a eseguire un gran numero di partizioni di equivalenza diverse in una sola volta o a eseguire gruppi particolari di test.
I risultati sono facili da raccogliere grazie a rapporti dettagliati su fallimenti/superamenti, schermate, registri di esecuzione e metriche delle prestazioni relative a ciascun caso di test.
4. Manutenzione dei casi di test
Inoltre, grazie alle funzionalità di controllo delle versioni di qualità, è possibile tenere traccia dei casi di test e mantenerli in modo semplice. Inoltre, gli utenti di ZAPTEST possono clonare e riutilizzare i test per raggiungere un nuovo livello di efficienza.
ZAPTEST offre molte altre funzionalità oltre all’automazione dei casi di test. Con una suite di strumenti RPA, ZAPTEST offre funzionalità 2 in 1, colmando il divario tra DevOps e BizOps in un futuro segnato dall’iperautomazione, dove tutto ciò che può essere automatizzato sarà automatizzato.
Riflessioni finali
Il partizionamento per equivalenza è una soluzione elegante per le situazioni in cui i tester devono trovare un equilibrio tra efficienza e accuratezza. Con alcuni software che consentono una gamma quasi infinita di input, il partizionamento delle classi di equivalenza aiuta i team a suddividere i dati di test in pezzi gestibili e di dimensioni ridotte che possono essere testati in modo approfondito.