Ce este testarea mutațiilor? (Exemplu)
Ce este testarea mutațiilor?
Testarea mutațiilor este un tip de testare software în care anumite declarații ale codului sursă sunt modificate/mutate pentru a verifica dacă cazurile de testare sunt capabile să găsească erori în codul sursă. Scopul testării mutațiilor este de a asigura calitatea cazurilor de testare în ceea ce privește robustețea, astfel încât să eșueze codul sursă mutat.
Modificările făcute în programul mutant trebuie păstrate extrem de mici, astfel încât să nu afecteze obiectivul general al programului. Testarea mutațiilor se mai numește și strategie de testare bazată pe erori, deoarece implică crearea unei erori în program și este un tip de Alb Box Testarea care este folosit în principal pentru Testarea unității.
Mutația a fost propusă inițial în 1971, dar și-a pierdut fervoarea din cauza costurilor mari implicate. Acum, din nou, a luat abur și este utilizat pe scară largă pentru limbi precum Java și XML.
Cum se execută testarea mutațiilor?
Următorii sunt pașii pentru a executa testarea mutațiilor (analiza mutațiilor):
Etapa 1: Defecțiunile sunt introduse în codul sursă al programului prin crearea multor versiuni numite mutanți. Fiecare mutant ar trebui să conțină o singură eroare, iar scopul este de a provoca eșecul versiunii mutante, ceea ce demonstrează eficacitatea cazurilor de testare.
Etapa 2: cazurile de testare sunt aplicate programului original și, de asemenea, programului mutant. A Caz de testare ar trebui să fie adecvat și este ajustat pentru a detecta erorile într-un program.
Etapa 3: comparați rezultatele unui program original și mutant.
Etapa 4: Dacă programul original și programele mutante generează rezultate diferite, atunci mutantul este ucis de cazul de testare. Prin urmare, cazul de testare este suficient de bun pentru a detecta schimbarea dintre programul original și cel mutant.
Etapa 5: Dacă programul original și programul mutant generează aceeași ieșire, Mutant este menținut în viață. În astfel de cazuri, trebuie create cazuri de testare mai eficiente care să omoare toți mutanții.
Cum se creează programe mutante?
O mutație nu este altceva decât o singură modificare sintactică care se face în instrucțiunea programului. Fiecare program mutant ar trebui să difere de programul original printr-o mutație.
Programul original | Programul Mutant |
---|---|
Dacă (x>y)
Tipăriți „Bună ziua” Altfel Tipăriți „Bună” |
Dacă(x<y)
Tipăriți „Bună ziua” Altfel Tipăriți „Bună” |
Ce trebuie schimbat într-un program mutant?
Există mai multe tehnici care ar putea fi folosite pentru a genera programe mutante. Să ne uităm la ele
Operaşi operatori de înlocuire | Modificarea expresiei Operatori | Modificarea declarației Operatori |
---|---|---|
Înlocuiți operandul cu un alt operand (x cu y sau y cu x) sau cu valoarea constantă. | Înlocuirea unui operator sau inserarea de noi operatori într-o instrucțiune de program. | Instrucțiunile programatice sunt modificate pentru a crea programe mutante. |
Exemplu-
Dacă(x>y) înlocuiți valorile x și y Dacă(5>y) înlocuiți x cu constanta 5 |
Exemplu-
Dacă(x==y) Putem înlocui == în >= și avem program mutant ca If(x>=y) și inserând ++ în instrucțiune Dacă(x==++y) |
Exemplu-
Ștergeți partea else dintr-o declarație if-else Ștergeți întreaga instrucțiune if-else pentru a verifica cum se comportă un program Unii dintre operatorii de mutație ale mostrei:
|
Automatizarea testării mutațiilor
Testarea mutațiilor este extrem de consumatoare de timp și complicat de executat manual. Pentru a accelera procesul, este recomandabil să alegeți instrumente de automatizare. Instrumentele de automatizare reduc și costurile de testare.
Lista instrumentelor disponibile -
Tipuri de testare a mutațiilor
In Inginerie Software, Testarea mutațiilor ar putea fi în mod fundamental clasificată în 3 tipuri – mutație de declarație, mutație de decizie și mutație de valoare.
- Mutația declarației – dezvoltatorul decupează și lipește o parte dintr-un cod al cărui rezultat poate fi o eliminare a unor linii
- Mutația valorii– se modifică valorile parametrilor primari
- Mutație de decizie– instrucțiunile de control urmează să fie modificate
Scorul de mutație
Scorul mutației este definit ca procentul de mutanți uciși cu numărul total de mutanți.
- Scor mutație = (Mutanți uciși / Numărul total de mutanți) * 100
Cazurile de testare sunt adecvate pentru mutații dacă scorul este de 100%. Rezultatele experimentale au arătat că testarea mutațiilor este o abordare eficientă pentru măsurarea adecvării cazurilor de testare. Dar, principalul dezavantaj este că costul ridicat al generării mutanților și al executării fiecărui caz de testare împotriva acelui program mutant.
Avantajele testării mutațiilor
Următoarele sunt avantajele testării mutațiilor:
- Este o abordare puternică pentru a obține o acoperire ridicată a programului sursă.
- Această testare este capabilă să testeze complet programul mutant.
- Testarea mutațiilor aduce un nivel bun de detectare a erorilor dezvoltatorului de software.
- Această metodă descoperă ambiguități în codul sursă și are capacitatea de a detecta toate defecțiunile din program.
- Clienții beneficiază de această testare prin obținerea unui sistem cât mai fiabil și stabil.
Dezavantajele testării mutațiilor
Pe de altă parte, următoarele sunt dezavantajele testării mutanților:
- Testarea mutațiilor este extrem de costisitoare și consumatoare de timp, deoarece există multe programe mutante care trebuie generate.
- Deoarece necesită mult timp, este corect să spunem că această testare nu poate fi făcută fără un instrument de automatizare.
- Fiecare mutație va avea același număr de cazuri de testare decât cel al programului original. Așadar, un număr mare de programe mutante ar putea trebui testate față de suita de teste inițială.
- Deoarece această metodă implică modificări de cod sursă, nu este deloc aplicabilă pentru Negru Box Testarea.
Concluzie
Doriți testarea exhaustivă a aplicației dvs.? Răspunsul este testarea mutațiilor. Este cea mai cuprinzătoare tehnică de testare a unui program. Aceasta este metoda care verifică eficacitatea și acuratețea unui program de testare pentru a detecta defecțiunile sau erorile din sistem.