Cos'è il test di mutazione? (Esempio)
Cos'è il test di mutazione?
Test di mutazione è un tipo di test del software in cui alcune istruzioni 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 tale da non superare il codice sorgente mutato.
Le modifiche apportate al programma mutante dovrebbero essere mantenute estremamente piccole in modo da non influenzare l'obiettivo generale del programma. Il test di mutazione è anche chiamato strategia di test basata sugli errori poiché implica la creazione di un errore nel programma ed è un tipo di Bianco Box Testing per cui viene utilizzato principalmente Test unitari.
La mutazione fu originariamente proposta nel 1971, ma perse interesse a causa degli alti costi coinvolti. Ora, ancora una volta, ha preso piede ed è ampiamente utilizzato per lingue come Java e XML.
Come eseguire il test di mutazione?
Di seguito sono riportati i passaggi per eseguire il test di mutazione (analisi di mutazione):
Passo 1 : Gli errori vengono introdotti nel codice sorgente del programma creando molte versioni chiamate mutanti. Ogni mutante dovrebbe contenere un singolo errore e l'obiettivo è causare il fallimento della versione mutante, il che dimostra l'efficacia dei casi di test.
Passo 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.
Passo 3 : Confronta i risultati di un programma originale e mutante.
Passo 4 : Se il programma originale e i programmi mutanti generano output diversi, il mutante viene ucciso dal caso di test. Quindi il caso di test è sufficientemente buono per rilevare il cambiamento tra il programma originale e quello mutante.
Passo 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 un singolo cambiamento sintattico apportato all'istruzione del programma. Ogni programma mutante dovrebbe differire dal programma originale di una mutazione.
Programma originale | Programma mutante |
---|---|
Se (x>y)
Stampa "Ciao" Altro Stampa "Ciao" |
Se(x<y)
Stampa "Ciao" Altro Stampa "Ciao" |
Cosa cambiare in un programma mutante?
Esistono diverse tecniche che potrebbero essere utilizzate per generare programmi mutanti. Diamo un'occhiata a loro
Operaoperatori sostitutivi e | Modifica dell'espressione OperaTors | Modifica dichiarazione OperaTors |
---|---|---|
Sostituisci l'operando con un altro operando (x con y o y con x) o con il valore costante. | Sostituire un operatore o inserire nuovi operatori in un'istruzione di programma. | Le istruzioni programmatiche vengono modificate per creare programmi mutanti. |
Esempio-
Se (x>y) sostituisci i valori x e y Se(5>y) sostituisci x con la costante 5 |
Esempio-
Se(x==y) Possiamo sostituire == in >= e avere un programma mutante come If(x>=y) e inserendo ++ nell'istruzione Se(x==++y) |
Esempio-
Elimina la parte else in un'istruzione if-else Elimina l'intera istruzione if-else per verificare come si comporta un programma Alcuni degli operatori di mutazione del campione:
|
Automazione dei test di mutazione
I test di mutazione richiedono molto tempo e sono complicati 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-
Tipi di test di mutazione
In Software Engineering, I test di mutazione possono essere fondamentalmente classificati in 3 tipi: mutazione dell'affermazione, mutazione della decisione e mutazione del valore.
- Mutazione dell'istruzione – lo sviluppatore taglia e incolla una parte di codice il cui risultato potrebbe essere la rimozione di alcune righe
- Mutazione del valore– i valori dei parametri primari vengono modificati
- Mutazione della decisione– le dichiarazioni di controllo devono essere modificate
Punteggio di mutazione
Il punteggio di mutazione è definito come la percentuale di mutanti uccisi rispetto al numero totale di mutanti.
- Punteggio mutazione = (mutanti uccisi/numero totale di mutanti) * 100
I casi test sono adeguati alla mutazione se il punteggio è del 100%. I risultati sperimentali hanno dimostrato che il test di mutazione è un approccio efficace per misurare l’adeguatezza dei casi test. Ma lo svantaggio principale è l’alto costo di generazione dei mutanti e di esecuzione di ogni caso di test contro quel programma mutante.
Vantaggi dei 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 delle mutazioni offre allo sviluppatore del software un buon livello di rilevamento degli errori.
- Questo metodo scopre le ambiguità nel codice sorgente e ha la capacità di rilevare tutti gli errori del programma.
- I clienti traggono vantaggio da questi test ottenendo un sistema estremamente affidabile e stabile.
Svantaggi dei test di mutazione
D'altro canto, gli svantaggi dei test sui mutanti sono i seguenti:
- I test di mutazione sono estremamente costosi e richiedono molto tempo poiché è necessario generare molti programmi mutanti.
- Dato che richiede molto 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 di quello del programma originale. Pertanto, 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 a Nero Box Testing.
Conclusione
Desideri 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 guasti o errori nel sistema.