Download - Sono criteri per l’individuazione dei casi di input che …didawiki.cli.di.unipi.it/lib/exe/fetch.php/informatica/...vengono mai esercitati dai test. I criteri di control flow testing

Transcript
Page 1: Sono criteri per l’individuazione dei casi di input che …didawiki.cli.di.unipi.it/lib/exe/fetch.php/informatica/...vengono mai esercitati dai test. I criteri di control flow testing

Sonocriteriperl’individuazionedeicasidiinputchesibasanosullastrutturadelcodice

Page 2: Sono criteri per l’individuazione dei casi di input che …didawiki.cli.di.unipi.it/lib/exe/fetch.php/informatica/...vengono mai esercitati dai test. I criteri di control flow testing

­ Abbiamovistoicriterifunzionali

­ Icriteristrutturalichevediamooggidevonoaiutareadaggiungerealtritest.

­ Rispondonoalladomanda:“Qualialtricasidevoaggiungereperfaremergeremalfunzionamentichenonsonoapparsiconilblack-boxtesting?”

Perche’criteribasatisulcodice

Page 3: Sono criteri per l’individuazione dei casi di input che …didawiki.cli.di.unipi.it/lib/exe/fetch.php/informatica/...vengono mai esercitati dai test. I criteri di control flow testing

­ Banalmentepotremmodirecheunprogrammanone’testatoadeguatamentesealcunisuoielementinonvengonomaiesercitatidaitest.

­ Icriteridicontrolflowtestingsonodefinitiperclassiparticolaridielementierichiedonocheitestsesercitinotuttiqueglielementidelprogramma

­ Glielementipossonoessere:comandi,branches,condizioniocammini.

Glielementidiunflussodicontrollo

Page 4: Sono criteri per l’individuazione dei casi di input che …didawiki.cli.di.unipi.it/lib/exe/fetch.php/informatica/...vengono mai esercitati dai test. I criteri di control flow testing

Grafodiflusso▪ definiscelastrutturadelcodiceidentificandonelepartiecomesonocollegatetraloro

▪ èottenutoapartiredalcodice

Idiagrammiablocchi(dettianchediagrammidiflusso,flowchartininglese)sonounlinguaggiodimodellazionegraficoperrappresentarealgoritmi(insensolato)

Page 5: Sono criteri per l’individuazione dei casi di input che …didawiki.cli.di.unipi.it/lib/exe/fetch.php/informatica/...vengono mai esercitati dai test. I criteri di control flow testing

double eleva(int x, int y) { 1. if (y<0) 2. pow = 0-y; 3. else pow = y; 4. z = 1.0; 5. while (pow!=0) 6. { z = z*x; pow = pow-1 } 7. if (y<0) 8. z = 1.0 / z; 9. return(z); }

1

2 3

4

5

6 7

8 9

Page 6: Sono criteri per l’individuazione dei casi di input che …didawiki.cli.di.unipi.it/lib/exe/fetch.php/informatica/...vengono mai esercitati dai test. I criteri di control flow testing

Coperturadeicomandi

1

2 3

4

5

6 7

8 9

double eleva(int x, int y) { 1. if (y<0) 2. pow = 0-y; 3. else pow = y; 4. z = 1.0; 5. while (pow!=0) 6. { z = z*x; pow = pow-1 } 7. if (y<0) 8. z = 1.0 / z; 9. return(z); }

InsiemedivaloriperxeycheesercitinoicomandiEsempio:-{(x=2,y=2),(x=0,y=0)}-{(x=-2,y=3),(x=0,y=-5)}

Page 7: Sono criteri per l’individuazione dei casi di input che …didawiki.cli.di.unipi.it/lib/exe/fetch.php/informatica/...vengono mai esercitati dai test. I criteri di control flow testing

Coperturadeicomandi:comescegliamotrainsiemiditest

1

2 3

4

5

6 7

8 9

double eleva(int x, int y) { 1. if (y<0) 2. pow = 0-y; 3. else pow = y; 4. z = 1.0; 5. while (pow!=0) 6. { z = z*x; pow = pow-1 } 7. if (y<0) 8. z = 1.0 / z; 9. return(z); }

Misuradicopertura=numerodicomandiesercitatinumerodicomanditotali

Page 8: Sono criteri per l’individuazione dei casi di input che …didawiki.cli.di.unipi.it/lib/exe/fetch.php/informatica/...vengono mai esercitati dai test. I criteri di control flow testing

Esisteunacoperturatotalechesiottieneconsoloduecasiditest:unoy<0eunoy>=0.(x=2,y=-2)esercitaicomandilungoilcamminorossoedhaunacoperturadi8/9=89%

(x=2,y=0)esercitaicomandilungoilcamminomarroneedhaunacoperturadi6/9=66%

{(x=2,y=-2),(x=2,y=0)}haunacoperturadi9/9=100%

1

2 3

4

5

6 7

8 9

comandi

double eleva(int x, int y) { 1. if (y<0) 2. pow = 0-y; 3. else pow = y; 4. z = 1.0; 5. while (pow!=0) 6. { z = z*x; pow = pow-1 } 7. if (y<0) 8. z = 1.0 / z; 9. return(z); }

Page 9: Sono criteri per l’individuazione dei casi di input che …didawiki.cli.di.unipi.it/lib/exe/fetch.php/informatica/...vengono mai esercitati dai test. I criteri di control flow testing

Coperturadeicomandi

­ Lacoperturanone’monotonarispettoalladimensionedell’insiemeditest:

­ {(x=4,y=-2)}haunacoperturapiu’altarispettoa{(x=2,y=0),(x=-2,y=2)}!

Manonsemprevalelapenacercareatuttiicostiuncoperturaminima!

Page 10: Sono criteri per l’individuazione dei casi di input che …didawiki.cli.di.unipi.it/lib/exe/fetch.php/informatica/...vengono mai esercitati dai test. I criteri di control flow testing

double eleva(int x, int y){

if (y<0) pow = 0-y; else pow = y; z = 1.0; while (pow!=0) { z = z * x; pow = pow-1} if (y<0) z = 1.0 / z; return(z); }

1

2

4

5

6 7

8 9

Possoesercitaretuttiicomandicon(x=2,y=-1)manonmiaccorgodelfattochemancailramoelse!Devoaverecasiditestcheesercitinoentrambiiramidiunacondizione.

Page 11: Sono criteri per l’individuazione dei casi di input che …didawiki.cli.di.unipi.it/lib/exe/fetch.php/informatica/...vengono mai esercitati dai test. I criteri di control flow testing

double eleva(int x, int y){

if (y<0) pow = 0-y; else pow = y; z = 1.0; while (pow!=0) { z = z * x; pow = pow-1} if (y<0) z = 1.0 / z; return(z); }

1

2

4

5

6 7

8 9

Peravereunacoperturadelledecisionidevoaverealmenoduecasiditestunoy<0eunoy>=0.Devocopriretuttelefrecce!Misuradicopertura=numeroditestesercitatinumeroditesttotali

Page 12: Sono criteri per l’individuazione dei casi di input che …didawiki.cli.di.unipi.it/lib/exe/fetch.php/informatica/...vengono mai esercitati dai test. I criteri di control flow testing

siconsideriilcodice if(x>1||y==0){comando1} else{comando2}

Iltest{x=0,y=0}e{x=0,y=1}garantiscelapienacoperturadelladecisione,manonesercitatuttiivaloridiveritàdellaprimacondizione

• inparticolareavreipotutovolerscriverex<1eaverinvertitoilversodel<Iltest{x=2,y=2}e{x=0,y=o}esercitaivaloridiveritàdelleduecondizioni(manontutteledecisioni)Iltest{x=2,y=0}e{x=0,y=2}esercitatuttiivaloridiveritàdelleduecondizioniin&&(etutteledecisioni)

Condizionicomposte

Page 13: Sono criteri per l’individuazione dei casi di input che …didawiki.cli.di.unipi.it/lib/exe/fetch.php/informatica/...vengono mai esercitati dai test. I criteri di control flow testing

Coperturadicondizionisemplici

­ UninsiemeditestTperunprogrammaPcopretuttelecondizionisemplici(basiccondition)ofPseognicondizionesempliceinPhauntestconoutputattesotrueeuntestconuntestoutputattesofalse

­ Coperturadellebasiccondition=n.divaloridiverita’assuntidallebasicconditions2*n.dibasicconditions

Page 14: Sono criteri per l’individuazione dei casi di input che …didawiki.cli.di.unipi.it/lib/exe/fetch.php/informatica/...vengono mai esercitati dai test. I criteri di control flow testing

siconsideriilcodice if(x>1&&y==0&&z>3){comando1} else{comando2}LamultipleconditioncoveragerichiededitestaretuttelepossibilicombinazioniInpresenzadi&&cisipuòridurrea4casi:▪ vero,vero,vero▪ vero,vero,falso▪ vero,falso,-▪ falso,-,-

23<latexit sha1_base64="58MN8DxL4svhrrOOB1rRJ16+vjQ=">AAAB7HicbVBNT8JAEJ3iF+IX6tHLRjDxRNpy0CPRi0dMLJBAJdtlCxu222Z3a9I0/AYvHjTGqz/Im//GBXpQ8CWTvLw3k5l5QcKZ0rb9bZU2Nre2d8q7lb39g8Oj6vFJR8WpJNQjMY9lL8CKciaop5nmtJdIiqOA024wvZ373ScqFYvFg84S6kd4LFjICNZG8uruY7M+rNbshr0AWidOQWpQoD2sfg1GMUkjKjThWKm+Yyfaz7HUjHA6qwxSRRNMpnhM+4YKHFHl54tjZ+jCKCMUxtKU0Gih/p7IcaRUFgWmM8J6ola9ufif1091eO3nTCSppoIsF4UpRzpG88/RiElKNM8MwUQycysiEywx0SafignBWX15nXTchtNsuPdurXVTxFGGMziHS3DgClpwB23wgACDZ3iFN0tYL9a79bFsLVnFzCn8gfX5A1uCjbk=</latexit>

Page 15: Sono criteri per l’individuazione dei casi di input che …didawiki.cli.di.unipi.it/lib/exe/fetch.php/informatica/...vengono mai esercitati dai test. I criteri di control flow testing

RichiededipercorreretuttiicamminiInpresenzadicicliilnumerodicamminièpotenzialmenteinfinitoPerlimitareilnumerodicamminidaattraversaresirichiedanocasiditestcheesercitinoilciclo▪ 0volte,▪ esattamenteunavolta▪ piu’diunavoltaAlcunicamminiimpossibili(1245679)

1

2 3

4

5

6 7

8 9

Page 16: Sono criteri per l’individuazione dei casi di input che …didawiki.cli.di.unipi.it/lib/exe/fetch.php/informatica/...vengono mai esercitati dai test. I criteri di control flow testing

Generalitàdegliapprocci▪ rispettoallavaliditàdeirisultati▪ rispettoallecaratteristichedaprovare▪ rispettoaicostidasostenereDipendenzeeimplicazioni▪ l’applicazionedeicriterifunzionalinondipendedalcodice

▪ icriteristrutturalisiprestanoallavalutazionedellacopertura

Page 17: Sono criteri per l’individuazione dei casi di input che …didawiki.cli.di.unipi.it/lib/exe/fetch.php/informatica/...vengono mai esercitati dai test. I criteri di control flow testing

Unastrategiaditipogray-boxprevededitestareilprogrammaconoscendoirequisitiedavendounalimitataconoscenzadellarealizzazione,peresempioconoscendosolol’architetturaUn’altrastrategiagray-boxproponediprogettareiltestusandocriterifunzionaliequindidiusarelemisuredicopertura(sivedalasezione“Valutazionedeitest”)deicriteristrutturalipervalutarel’adeguatezzadeltest

Page 18: Sono criteri per l’individuazione dei casi di input che …didawiki.cli.di.unipi.it/lib/exe/fetch.php/informatica/...vengono mai esercitati dai test. I criteri di control flow testing
Page 19: Sono criteri per l’individuazione dei casi di input che …didawiki.cli.di.unipi.it/lib/exe/fetch.php/informatica/...vengono mai esercitati dai test. I criteri di control flow testing

Dobbiamo contare i pesci in un lago

Page 20: Sono criteri per l’individuazione dei casi di input che …didawiki.cli.di.unipi.it/lib/exe/fetch.php/informatica/...vengono mai esercitati dai test. I criteri di control flow testing

Contiamo i pesci nel lago Mettiamo M pesci meccanici nel lago con un numero imprecisato di pesci

Ne guardiamo N di questi N1 sono quelli meccanici

Page 21: Sono criteri per l’individuazione dei casi di input che …didawiki.cli.di.unipi.it/lib/exe/fetch.php/informatica/...vengono mai esercitati dai test. I criteri di control flow testing

Contiamo…

total =

Ne avevamo messi M meccanici Ne guardiamo N. Di questi N1 sono quelli meccanici

NN1* M

N1 : N = M : Total

Page 22: Sono criteri per l’individuazione dei casi di input che …didawiki.cli.di.unipi.it/lib/exe/fetch.php/informatica/...vengono mai esercitati dai test. I criteri di control flow testing

contiamo i bug in un programma

Page 23: Sono criteri per l’individuazione dei casi di input che …didawiki.cli.di.unipi.it/lib/exe/fetch.php/informatica/...vengono mai esercitati dai test. I criteri di control flow testing

void transduce() { #define BUFLEN 1000 char buf[BUFLEN]; int pos = 0; char inChar; int atCR = 0; while ((inChar = getchar()) != EOF ) { switch (inChar) { case LF: if (atCR) { atCR = 0; } else { emit(buf, pos); pos = 0; } break; case CR: emit(buf, pos); pos = 0; atCR = 1; break; default: if (pos >= BUFLEN-2) fail("Buffer overflow"); buf[pos++] = inChar; } } if (pos > 0) { emit(buf, pos); } }

contiamo i bug in un programma che converte il fine linea secondo le convenzioni Machintosh,

DOS, Unix.

Page 24: Sono criteri per l’individuazione dei casi di input che …didawiki.cli.di.unipi.it/lib/exe/fetch.php/informatica/...vengono mai esercitati dai test. I criteri di control flow testing

void transduce() { #define BUFLEN 1000 char buf[BUFLEN]; int pos = 0; char inChar; int atCR = 0; while ((inChar = getchar()) != EOF ) { switch (inChar) { case LF: if (atCR) { atCR = 0; } else { emit(buf, pos); pos = 0; } break; case CR: emit(buf, pos); pos = 0; atCR = 1; break; default: if (pos >= BUFLEN-2) fail("Buffer overflow"); buf[pos++] = inChar; } } if (pos > 0) { emit(buf, pos); } }

(pos => 0)

“seminiamo” un errore

Page 25: Sono criteri per l’individuazione dei casi di input che …didawiki.cli.di.unipi.it/lib/exe/fetch.php/informatica/...vengono mai esercitati dai test. I criteri di control flow testing

void transduce() { #define BUFLEN 1000 char buf[BUFLEN]; int pos = 0; char inChar; int atCR = 0; while ((inChar = getchar()) != EOF ) { switch (inChar) { case LF: if (atCR) { atCR = 0; } else { emit(buf, pos); pos = 0; } break; case CR: emit(buf, pos); pos = 0; atCR = 1; break; default: if (pos >= BUFLEN-2) fail("Buffer overflow"); buf[pos++] = inChar; } } if (pos > 0) { emit(buf, pos); } }

Troviamo l’errore con un caso di test Una linea terminata dal ritorno linea DOS

Page 26: Sono criteri per l’individuazione dei casi di input che …didawiki.cli.di.unipi.it/lib/exe/fetch.php/informatica/...vengono mai esercitati dai test. I criteri di control flow testing

Assunzione

Page 27: Sono criteri per l’individuazione dei casi di input che …didawiki.cli.di.unipi.it/lib/exe/fetch.php/informatica/...vengono mai esercitati dai test. I criteri di control flow testing

void transduce() { #define BUFLEN 1000 char buf[BUFLEN]; int pos = 0; char inChar; int atCR = 0; while ((inChar = getchar()) != EOF ) { switch (inChar) { case LF: if (atCR) { atCR = 0; } else { emit(buf, pos); pos = 0; } break; case CR: emit(buf, pos); pos = 0; atCR = 1; break; default: if (pos >= BUFLEN-2) fail("Buffer overflow"); buf[pos++] = inChar; } } if (pos > 0) { emit(buf, pos); } }

(pos => 0)

assunzione

gli errori che mettiamo sono rappresentativi di quelli che potrebbero esserci davvero

Page 28: Sono criteri per l’individuazione dei casi di input che …didawiki.cli.di.unipi.it/lib/exe/fetch.php/informatica/...vengono mai esercitati dai test. I criteri di control flow testing

DopoaveresercitatoPsuT,siverificaPcorrettorispettoaT.SivuolefareunaverificapiùprofondasullacorrettezzadiP:introducodeidifetti(piccoli,dettemutazioni)suPechiamoilprogrammamodificatoP’.QuestoP’vienedettomutante.SieseguonosuP’glistessitestdiT.Iltestdovrebberilevareglierrori.

• Seiltestnonrilevaquestierrori,allorasignificacheiltestnoneravalido.

• Selirivela,sisupponechenerivelianchealtri.Questoèunmetodopervalutarelacapacitàdiuntest,evedereseèilcasodiintrodurretestpiùsofisticati.

Page 29: Sono criteri per l’individuazione dei casi di input che …didawiki.cli.di.unipi.it/lib/exe/fetch.php/informatica/...vengono mai esercitati dai test. I criteri di control flow testing

mutazione:cambiamentosintattico(unbuginseritonelcodice)

Esempio:modifica(i<0)in(i<=0)

Unmutantevieneuccisosefalliscealmenoinuncasoditest

efficaciadiuntest=quantitàdimutantiuccisi

Latecnicasiapplicaincongiunzioneconaltricriteriditest

Nellasuaformulazioneèprevistainfattil’esistenza,oltrealprogrammadacontrollare,anchediuninsiemeditestgiàrealizzati.

Page 30: Sono criteri per l’individuazione dei casi di input che …didawiki.cli.di.unipi.it/lib/exe/fetch.php/informatica/...vengono mai esercitati dai test. I criteri di control flow testing

Ipotesi del programmatore Competente

Gli errori reali sono piccole variazioni sintattiche del programma corretto

=> Mutanti sono modelli ragionevoli dei programmi con

difetti

Page 31: Sono criteri per l’individuazione dei casi di input che …didawiki.cli.di.unipi.it/lib/exe/fetch.php/informatica/...vengono mai esercitati dai test. I criteri di control flow testing

Mettendo insieme tutte le ipotesiTests che trovano semplici difetti allora trovano

anche difetti piu’ complessi

una test suite che uccide i mutanti e’ capace anche di trovare difetti reali nel programma

Page 32: Sono criteri per l’individuazione dei casi di input che …didawiki.cli.di.unipi.it/lib/exe/fetch.php/informatica/...vengono mai esercitati dai test. I criteri di control flow testing

crp:sostituzione(replacement)dicostantepercostante▪ adesempio:da(x<5)a(x<12)ror:sostituzionedell'operatorerelazionale▪ adesempio:da(x<=5)a(x<5)vie:eliminazionedell'inizializzazionediunavariabile▪ cambiaintx=5;aintx;lrc:sostituzionediunoperatorelogico▪ Adesempioda&a|abs:inserimentodiunvaloreassoluto▪ Daxa|x|

Page 33: Sono criteri per l’individuazione dei casi di input che …didawiki.cli.di.unipi.it/lib/exe/fetch.php/informatica/...vengono mai esercitati dai test. I criteri di control flow testing

MutazioniperilC

Page 34: Sono criteri per l’individuazione dei casi di input che …didawiki.cli.di.unipi.it/lib/exe/fetch.php/informatica/...vengono mai esercitati dai test. I criteri di control flow testing

­ Unmutantee’invalidosenone’sintatticamentecorretto,cioe’senonpassalacompilazione,e’validoaltrimenti

­ Unmutantee’utilesee’validoedistinguerlodalprogrammaoriginalenone’facile,cioe’seesistesolounpiccolosottoinsiemeditestchepermettedidistinguerlodalprogrammaoriginale.

­ Trovaremutazionicheproducanomutantivalidieutilinone’facileedipendedallinguaggio!

MutantiValidieUtili

Page 35: Sono criteri per l’individuazione dei casi di input che …didawiki.cli.di.unipi.it/lib/exe/fetch.php/informatica/...vengono mai esercitati dai test. I criteri di control flow testing

Unmutantepuòessereequivalentealprogrammaoriginale▪ Cambiare(x<0)a(x<=0)nonhacambiatoaffattol'output:Lamutazionenonèunverodifetto

▪ Determinareseunmutanteèequivalentealprogrammaoriginalepuòesserefacileodifficile;nelpeggioredeicasièindecidibile

Oppurelasuiteditestpotrebbeessereinadeguata▪ Seilmutantepotevaesserestatoucciso,manonloera,indicaunadebolezzanellasuiteditest

Page 36: Sono criteri per l’individuazione dei casi di input che …didawiki.cli.di.unipi.it/lib/exe/fetch.php/informatica/...vengono mai esercitati dai test. I criteri di control flow testing

Questastrategiaèadottataconobiettividiversi▪ favorirelascopertadimalfunzionamentiipotizzati:interveniresulcodicepuò

esserepiùconvenienterispettoallagenerazionedicasiditestadhoc.▪ valutarel’efficaciadell’insiemeditest,controllandose“siaccorge”delle

modificheintrodottesulprogrammaoriginale.▪ cercareindicazionicircalalocalizzazionedeidifettilacuiesistenzaèstata

denunciatadaitesteseguitisulprogrammaoriginale

Usolimitatodalgrannumerodimutantichepossonoesseredefiniti,dalcostodellalororealizzazione,esoprattuttodaltempoedallerisorsenecessarieaeseguireitestsuimutantieaconfrontareirisultati

Page 37: Sono criteri per l’individuazione dei casi di input che …didawiki.cli.di.unipi.it/lib/exe/fetch.php/informatica/...vengono mai esercitati dai test. I criteri di control flow testing

Obiettivo:controllarese,dopounamodifica,ilsoftwareèregredito,secioèsianostatiintrodottideidifettinonpresentinellaversioneprecedenteallamodificaStrategia:riapplicarealsoftwaremodificatoitestprogettatiperlasuaversioneoriginaleeconfrontareirisultatiUsoinmanutenzione.Difatto,però,ilsusseguirsidiinterventidimanutenzioneadattivaesoprattuttoperfettiva(enonmonotona)rendonolabatteriaditestobsoletaUsoneiprocessidisviluppoevolutivi▪ prototipi▪ itest,soprattuttomiratiallefunzionalitàdelprodotto,sonosviluppatiinsiemeal

primoprototipoeaccompagnanol’evoluzione

▪ integrazionetop-down

Page 38: Sono criteri per l’individuazione dei casi di input che …didawiki.cli.di.unipi.it/lib/exe/fetch.php/informatica/...vengono mai esercitati dai test. I criteri di control flow testing

Rivisitazionedeicriteristrutturaliinterminidell’architetturadiunsistemainvecechedelcodicediunprogrammaBasatisuunaclassificazionedeglierroricommessinelladefinizionedelleinterazionifraimoduliErrorediformato:iparametridiinvocazioneodiritornodiunafunzionalitàsonosbagliatipernumeroopertipo▪ difettofrequente,mafortunatamentecompilatorielinkerpermettonodirilevareautomaticamente

concontrollistaticiErroredicontenuto:iparametridiinvocazioneodiritornodiunafunzionalitàsonosbagliatipervalore▪ èilcasoincuiimodulisiaspettanoargomentiilcuivaloredeverispettarebenprecisivincoli;sivada

parametrinoninizializzati(e.g.puntatorinulli)astrutturedatiinutilizzabili(e.g.unvettorenonordinatopassatoaunaproceduradiricercabinaria)

Erroredisequenzaoditempo▪ inquestocasoèsbagliatalasequenzaconcuièinvocataunaseriedifunzionalità,singolarmente

corrette;neisistemidipendentidaltempopossonoancherisultaresbagliatigliintervallitemporalitrascorsifraun’invocazioneel’altraofraun’invocazioneelacorrispondenterestituzionedeirisultati

Page 39: Sono criteri per l’individuazione dei casi di input che …didawiki.cli.di.unipi.it/lib/exe/fetch.php/informatica/...vengono mai esercitati dai test. I criteri di control flow testing

Mutanti equivalenti

TS = {TC1, TC2} TC1 = final int[] array = { 5, 9, 0, 2, 7, 3 }; insertionSort(array, 0, 6);  TC2 = final int[] array2 = { 3, 1, 0, 2, 7, 3 }; insertionSort(array2, 2, 4);

public void insertionSort(int [] array, int min, int max) {}    for(int i = min+1; i < max; i++) {

      int x = i; int j = i-1;

for(; j >= min; j--) {

if(array[j]>array[x]) { int k = array[x];

array[x] = array[j]; array[j] = k;

x = j;          } else break;

     }

} }

Provide two sets of mutant operators M1 and M2 such that: 1.   The mutant obtained by applying M1 is killed by TS 2.   The mutant obtained by applying M2 is NOT killed by TS.

Page 40: Sono criteri per l’individuazione dei casi di input che …didawiki.cli.di.unipi.it/lib/exe/fetch.php/informatica/...vengono mai esercitati dai test. I criteri di control flow testing
Page 41: Sono criteri per l’individuazione dei casi di input che …didawiki.cli.di.unipi.it/lib/exe/fetch.php/informatica/...vengono mai esercitati dai test. I criteri di control flow testing

Questotestcasehaavutosuccessoononhafunzionato?Inutiletestareautomaticamente10.000casiditestseirisultatidevonoesserecontrollatiamano!▪ ex.JUnit:unoracolospecifico("assert")codificatoamanoinciascuncasoditest

Approcciotipico:oracolobasatosulconfrontoconvaloredioutputprevistoNonl'unicoapproccio!

Page 42: Sono criteri per l’individuazione dei casi di input che …didawiki.cli.di.unipi.it/lib/exe/fetch.php/informatica/...vengono mai esercitati dai test. I criteri di control flow testing
Page 43: Sono criteri per l’individuazione dei casi di input che …didawiki.cli.di.unipi.it/lib/exe/fetch.php/informatica/...vengono mai esercitati dai test. I criteri di control flow testing

Risultatiricavatidallespecifiche▪ specificheformali▪ specificheeseguibiliInversionedellefunzioni▪ quandol’inversaè“piùfacile”▪ avoltedisponibilefralefunzionalità▪ limitazioniperdifettidiapprossimazione

Page 44: Sono criteri per l’individuazione dei casi di input che …didawiki.cli.di.unipi.it/lib/exe/fetch.php/informatica/...vengono mai esercitati dai test. I criteri di control flow testing

Versioniprecedentidellostessocodice▪ disponibili(perfunzionalitànonmodificate)▪ provedinonregressioneVersionimultipleindipendenti▪ programmipreesistenti(back-to-back)▪ sviluppateadhoc▪ semplificazionedeglialgoritmi▪ magaripocoefficientimacorrette

Page 45: Sono criteri per l’individuazione dei casi di input che …didawiki.cli.di.unipi.it/lib/exe/fetch.php/informatica/...vengono mai esercitati dai test. I criteri di control flow testing

Semplificazionedeidatid’ingresso▪ provarelefunzionalitàsudatisemplici▪ risultatinotiocalcolabiliconaltrimezzi▪ ipotesidicomportamentocostantePartiredall’outputetrovarel’input▪ Peresempiopertestareunalgoritmodiordinamentoprendereunarrayordinato(outputatteso)erimescolarloperottenereuninput

Page 46: Sono criteri per l’individuazione dei casi di input che …didawiki.cli.di.unipi.it/lib/exe/fetch.php/informatica/...vengono mai esercitati dai test. I criteri di control flow testing

Semplificazionedeirisultati▪ accontentarsidirisultatiplausibili▪ tramitevincolifraingressieuscite▪ tramiteinvariantisulleuscite

Page 47: Sono criteri per l’individuazione dei casi di input che …didawiki.cli.di.unipi.it/lib/exe/fetch.php/informatica/...vengono mai esercitati dai test. I criteri di control flow testing

Cap12-16-17▪ SoftwareTestingandAnalysis:Process,PrinciplesandTechniques-

Inparticolare:▪ Cap12:tuttotranne12.6▪ Cap16:tuttotranne16.5▪ Cap17:indettagliosolo17.5▪ MauroPezzèeMichalYoung