Test combinatorio
Febbraio 24, 2020
Introduzione:
Al giorno d’oggi, i sistemi software sono diversi e complessi e hanno molte configurazioni possibili. Queste qualità e caratteristiche nei sistemi software ha inaugurato una domanda di software e applicazioni che sono progettati in modo univoco e hanno caratteristiche innovative e creative. Oltre a questi, i clienti e gli utenti richiedono anche prestazioni esponenziali, funzionalità, qualità, scalabilità, efficacia e altro ancora. Per raggiungere questi obiettivi e soddisfare le richieste dei clienti e dei consumatori, gli ingegneri del software utilizzano varie tecniche e metodologie innovative per sviluppare un prodotto, nonché eseguire test rigorosi, poiché i prodotti rilasciati con test inadeguati possono causare danni e perdite irreparabili al cliente e all’utente che sta installando l’applicazione o utilizzando il software. Inoltre, può anche causare danni fisici, che possono causare grandi perdite economiche o violazioni della sicurezza, nonché influire sulla qualità della vita quotidiana. Tuttavia, i tester software hanno spesso tempo e budget limitati, il che rende spesso impossibile testare il software in modo esaustivo. Inoltre, i tester spesso testano intuitivamente i difetti che anticipano, mentre i difetti meno previsti vengono trascurati e non testati. Il modo migliore per superare tale situazione è implementare test combinatori in software e applicazioni. Il test combinatorio è un approccio che può esaminare sistematicamente l’impostazione del sistema in un numero gestibile di test e coprendo sistematicamente le interazioni t-way. Pertanto, ecco una discussione esposta sul test combinatorio, per definirne il significato, i metodi e le altre principali qualità.
Descrizione del test combinatorio:
Il test combinatorio è ora un approccio pratico che produce test di alta qualità a un costo inferiore. Decompone la forza bruta in passaggi per attaccare il problema in modo incrementale separando le attività di analisi e sintesi che possono essere quantificate e monitorate e parzialmente supportate da strumenti. Inoltre, il test combinatorio è estremamente semplice da applicare. Come tecnica basata sulle specifiche, non richiede alcuna conoscenza dell’implementazione in fase di test. Il test combinatorio si basa sulla premessa che molti errori nel software possono derivare solo dall’interazione di due o più parametri. Pertanto, il test combinatorio è una tecnica efficace per testare il software con più parametri di configurazione. Viene utilizzato principalmente per rilevare errori di interazione causati dalla combinazione di parametri. Il tipo di prova generato dalla prova combinatoria mira a generare una copertura che copre tutte le combinazioni di parametri t-way, dove ” t ” è una data forza di copertura. Il test combinatorio di base può essere utilizzato in due modi, che possono essere utilizzati separatamente o allo stesso tempo. Questi modi sono:
- Combinazioni di valori o parametri di configurazione, in cui gli array di copertura vengono utilizzati per selezionare i valori dei parametri configurabili, eventualmente con l’assistenza degli stessi test che vengono eseguiti su tutte le combinazioni di configurazione.
- Gli array di copertura vengono utilizzati per selezionare i valori dei dati di input, che diventano quindi parte di casi di test completi, creando una tuta di test per l’applicazione. Applicare questa forma di test combinatorio al software del mondo reale è impegnativo in quanto presenta un più alto grado di interazioni, per le quali possono essere richiesti test molto grandi.
Metodi utilizzati per la generazione di tute di prova combinatoria:
La popolarità test combinatorio è aumentato eminentemente negli ultimi anni. A causa dei suoi numerosi vantaggi è utilizzato da tester software a vari livelli di test. Dai test di modello, unità, integrazione, sistema e accettazione ai test in bianco, nero, basati su modelli e altro ancora, i tester stanno implementando test combinatori per ottenere risultati efficaci a un prezzo conveniente. Inoltre, per generare tute di prova per il test combinatorio, gli ingegneri del software utilizzano una vasta gamma di strumenti, che semplifica ulteriormente il processo di test del software. Queste tute di test combinatorie forniscono una copertura t-way più elevata, anche se la generazione di array di copertura t-way più elevata può consumare risorse computazionali significative e produrre grandi risultati. Inoltre, la maggior parte degli algoritmi per il test combinatorio si concentra sul caso speciale del test a 2 vie. Inoltre, per costruire manualmente la tuta di prova per il test combinatorio, vengono utilizzati tre metodi. Questi metodi forniscono i vari vantaggi al tester ed assicura che l’uscita sia accurata come possibile. Questi metodi / algoritmi sono:
- Metodo algebrico: questo offre costruzioni efficienti in termini di tempo, tuttavia è difficile produrre risultati accurati su un’ampia e generale varietà di input.
- Algoritmo avido: Questi sono il tipo ben studiato di algoritmo per la costruzione di array di copertura, in quanto sono stati trovati relativamente efficienti per quanto riguarda il tempo e la precisione.
- Ricerca euristica: ricerca euristica in particolare se l’applicazione della ricottura stimolata (SA) ha fornito i risultati più accurati in diversi casi. Questo metodo di ricerca locale ha fornito molte delle suite di test più piccole per diverse configurazioni di sistema; tuttavia, a un costo di tempo di esecuzione per generare suite di test.
Test a coppie:
Comunemente noto come all-pair testing, pairwise testing è un metodo combinatorio di test del software che per ogni coppia di parametri di input per un sistema, verifica tutte le possibili combinazioni discrete di tali parametri. È una tecnica di progettazione di test che offre una copertura di test al cento per cento. I bug più comuni in un programma sono di solito trovati e attivati da un parametro di input o da un’interazione tra coppia di parametri. I bug che coinvolgono interazioni tra tre o più parametri sono sia progressivamente meno comuni che progressivamente più costosi da trovare, tale test ha come limite il test di tutti gli input possibili. In questo caso una tecnica combinatoria per il prelievo di casi di test come tutte le coppie è un compromesso costi-benefici molto utile che consente una significativa riduzione del numero di casi di test senza compromettere drasticamente la copertura funzionale. Quindi, la tecnica di test a coppie è immensamente utile nella progettazione di test per applicazioni che coinvolgono più parametri. La sua tuta di prova copre tutte le combinazioni e quindi, non è esaustivo ma molto efficace nella ricerca di bug. Sebbene il test a coppie possa ridurre drasticamente le combinazioni, rimane ancora molto efficace in termini di rilevamento dei guasti ed è davvero una tecnica di progettazione di test intelligente che promette i migliori sforzi di test e un’efficacia eccezionale.
Vantaggi del test combinatorio:
La discussione di cui sopra sul test combinatorio riflette il suo significato e l’utilità. È una delle tecniche di test del software più efficaci in quanto prova un software con più parametri configurabili. Inoltre, con l’assistenza di test combinatori si possono facilmente rilevare errori di interazione causati dalla combinazione di parametri. Un altro vantaggio di questo tipo di test è che produce test di alta qualità ad un tasso molto conveniente, che non solo aiuta gli sviluppatori di software e tester, ma avvantaggia anche l’organizzazione per la quale il prodotto è in fase di sviluppo. Pertanto, altri vantaggi di questo approccio sono:
- Gestisce i problemi di copertura durante la definizione del piano di test.
- Consente la pianificazione sistematica del test.
- Può essere applicato virtualmente a qualsiasi software e a diversi livelli di astrazioni.
- Maggiore copertura di prova con una migliore garanzia di qualità.
- Non richiede l’accesso al codice sorgente interno SUT.
- Massimizza il valore di ogni scenario testato.
- Riduzione significativa del numero di test.
- Può controllare i rischi ed è facile da rivedere.
Conclusione:
I sistemi software sono complessi e possono incorrere in numeri esponenziali di possibili test. Qualsiasi prodotto che viene rilasciato senza test adeguati può essere un pericolo significativo per l’organizzazione e l’utente. Pertanto, per garantire che tali situazioni o problemi non si verifichino dopo il rilascio del software, i tester del software eseguono test rigorosi. Inoltre, usano spesso test combinatori in vari livelli di test, in quanto può facilmente testare il software con più parametri configurabili. In breve, il test combinatorio viene utilizzato per rilevare i difetti di interazione causati dalla combinazione di parametri. L’intuizione chiave alla base dell’efficacia dei test combinatoriali è il risultato di una serie di studi e ricerche condotte dal NIST dal 1999 al 2004. È un approccio immensamente utile che può esaminare sistematicamente l’impostazione del sistema in un numero gestibile di test. È un approccio che produce ed esegue test di alta qualità ad un tasso molto conveniente. Inoltre, è un’efficace tecnica di pianificazione dei test, in grado di gestire i problemi di copertura il prima possibile. Quindi, se un ingegnere del software vuole ottenere i migliori risultati dei test, dovrebbe sicuramente eseguire test combinatori in una fase iniziale del ciclo di vita dello sviluppo del software (SDLC).