Test di mutazione
Il test di mutazione è un tipo di test del software in cui alcune dichiarazioni del codice sorgente vengono modificate / mutate per verificare se i casi di test sono in grado di trovare errori nel codice sorgente. L'obiettivo del test di mutazione è garantire la qualità dei casi di test in termini di robustezza che dovrebbe fallire il codice sorgente mutato.
Le modifiche apportate al programma mutante dovrebbero essere mantenute estremamente piccole in modo da non influire sull'obiettivo generale del programma. Il test di mutazione è anche chiamato strategia di test basata su errori in quanto implica la creazione di un errore nel programma ed è un tipo di test white box che viene utilizzato principalmente per i test unitari.
La mutazione fu originariamente proposta nel 1971 ma perse fervore a causa degli alti costi coinvolti. Ora, ancora una volta, ha scelto il vapore ed è ampiamente utilizzato per linguaggi come Java e XML.
In questo tutorial imparerai-
- Che cos'è il test di mutazione?
- Come eseguire il test di mutazione?
- Come creare programmi mutanti?
- Cosa cambiare in un programma mutante?
- Tipi di test di mutazione
- Punteggio di mutazione:
- Vantaggi del test di mutazione:
- Svantaggi del test di mutazione:
Come eseguire il test di mutazione?
Di seguito sono riportati i passaggi per eseguire il test di mutazione (analisi di mutazione):
Passaggio 1 : i difetti vengono introdotti nel codice sorgente del programma creando molte versioni chiamate mutanti. Ogni mutante dovrebbe contenere un singolo difetto e l'obiettivo è far fallire la versione mutante, il che dimostra l'efficacia dei casi di test.
Passaggio 2 : i casi di test vengono applicati al programma originale e anche al programma mutante. Un test case dovrebbe essere adeguato ed è ottimizzato per rilevare errori in un programma.
Passaggio 3 : confronta i risultati di un programma originale e mutante.
Passaggio 4 : se il programma originale e i programmi mutanti generano un output diverso, il mutante viene ucciso dal caso di test. Quindi il test case è abbastanza buono per rilevare il cambiamento tra il programma originale e quello mutante.
Passaggio 5 : se il programma originale e il programma mutante generano lo stesso output, Mutant viene mantenuto in vita. In questi casi, è necessario creare casi di test più efficaci che uccidano tutti i mutanti.
Come creare programmi mutanti?
Una mutazione non è altro che una singola modifica sintattica apportata all'istruzione del programma. Ogni programma mutante dovrebbe differire dal programma originale per una mutazione.
Programma originale | Programma mutante |
---|---|
If (x> y) Print "Hello" Else Print "Hi" | If ( x Else Print "Hi" |
Cosa cambiare in un programma mutante?
Esistono diverse tecniche che potrebbero essere utilizzate per generare programmi mutanti. Diamo un'occhiata a loro
Operandi di sostituzione degli operatori | Operatori di modifica delle espressioni | Operatori di modifica delle istruzioni |
---|---|---|
Sostituisci l'operando con un altro operando (x con y o y con x) o con il valore costante. | Sostituisce un operatore o l'inserimento di nuovi operatori in un'istruzione di programma. | Le dichiarazioni programmatiche vengono modificate per creare programmi mutanti. |
Esempio: se (x> y) sostituisce i valori xey Se (5> y) sostituisce x con la costante 5 | Esempio- If (x == y) Possiamo sostituire == in> = e avere un programma mutante come If (x> = y) e inserire ++ nell'istruzione If (x == ++ y) | Esempio: eliminare la parte else in un'istruzione if-else Eliminare l'intera istruzione if-else per verificare come si comporta un programma Alcuni operatori di mutazione di esempio:
|
Automazione del test di mutazione:
Il test di mutazione richiede molto tempo ed è complicato da eseguire manualmente. Per accelerare il processo, è consigliabile utilizzare strumenti di automazione. Gli strumenti di automazione riducono anche il costo dei test.
Elenco degli strumenti disponibili -
- Stryker
- Test PIT
Tipi di test di mutazione
Nell'ingegneria del software, il test di mutazione potrebbe essere categorizzato fondamentalmente in 3 tipi: dichiarazione di mutazione, mutazione decisionale e mutazione di valore.
- Statement Mutation - lo sviluppatore taglia e incolla una parte di un codice il cui risultato potrebbe essere la rimozione di alcune righe
- Mutazione valore : i valori dei parametri primari vengono modificati
- Mutazione decisionale : le istruzioni di controllo devono essere modificate
Punteggio di mutazione:
Il punteggio di mutazione è definito come la percentuale di mutanti uccisi con il numero totale di mutanti.
- Punteggio di mutazione = (mutanti uccisi / numero totale di mutanti) * 100
I casi di test sono adeguati alla mutazione se il punteggio è 100%. I risultati sperimentali hanno dimostrato che il test di mutazione è un approccio efficace per misurare l'adeguatezza dei casi di test. Ma lo svantaggio principale è che l'alto costo della generazione dei mutanti e dell'esecuzione di ogni caso di test contro quel programma mutante.
Vantaggi del test di mutazione:
Di seguito sono riportati i vantaggi del test di mutazione:
- È un approccio potente per ottenere un'elevata copertura del programma sorgente.
- Questo test è in grado di testare in modo completo il programma mutante.
- Il test di mutazione offre un buon livello di rilevamento degli errori allo sviluppatore del software.
- Questo metodo scopre ambiguità nel codice sorgente e ha la capacità di rilevare tutti gli errori nel programma.
- I clienti traggono vantaggio da questo test ottenendo un sistema più affidabile e stabile.
Svantaggi del test di mutazione:
D'altro canto, i seguenti sono gli svantaggi del test sui mutanti:
- Il test di mutazione è estremamente costoso e richiede tempo poiché ci sono molti programmi mutanti che devono essere generati.
- Dato che richiede tempo, è giusto dire che questo test non può essere eseguito senza uno strumento di automazione.
- Ogni mutazione avrà lo stesso numero di casi di test rispetto a quello del programma originale. Quindi, potrebbe essere necessario testare un gran numero di programmi mutanti rispetto alla suite di test originale.
- Poiché questo metodo comporta modifiche al codice sorgente, non è affatto applicabile per Black Box Testing.
Conclusione:
Vuoi un test esaustivo della tua applicazione? La risposta è il test di mutazione. È la tecnica più completa per testare un programma. Questo è il metodo che verifica l'efficacia e l'accuratezza di un programma di test per rilevare i guasti o gli errori nel sistema.