Sono criteri per l’individuazione dei casi di input che...

47
Sono criteri per l’individuazione dei casi di input che si basano sulla struttura del codice

Transcript of Sono criteri per l’individuazione dei casi di input che...

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