2019 - politehnica university of timișoaralabs.cs.upt.ro/~oose/uploads/vvs/cursvvs10.pdf ·...
TRANSCRIPT
![Page 1: 2019 - Politehnica University of Timișoaralabs.cs.upt.ro/~oose/uploads/VVS/cursVVS10.pdf · 2019-11-26 · Exemplu: Test monkeys Utilitare automate care execut a act, iuni la ^ nt^amplare](https://reader033.vdocuments.us/reader033/viewer/2022041615/5e3af03735a6154f195e2205/html5/thumbnails/1.jpg)
Automatizarea testarii
2019
![Page 2: 2019 - Politehnica University of Timișoaralabs.cs.upt.ro/~oose/uploads/VVS/cursVVS10.pdf · 2019-11-26 · Exemplu: Test monkeys Utilitare automate care execut a act, iuni la ^ nt^amplare](https://reader033.vdocuments.us/reader033/viewer/2022041615/5e3af03735a6154f195e2205/html5/thumbnails/2.jpg)
Problematica automatizarii
Testarea are componente repetitive, deci se justifica automatizarea.
Problema e evaluarea cost-beneficiu a automatizarii [Kaner]
Cer timp: crearea, verificarea funct, ionarii, documentarea testelor
E reutilizabila automatizarea? (cat se modifica programul?)
Necesita mentenant, a? (modificare GUI, internat, ionalizare)⇒ Automatizarea testarii: tratata ca orice proces de dezvoltare
Intarzie gasirea erorilor? (scade resursele pentru rularea testelor)
Gases, te suficiente erori? Sau greul ramane pe testarea manuala?
E suficient de puternica? Sau automatizeaza doar testele “us,oare”?
![Page 3: 2019 - Politehnica University of Timișoaralabs.cs.upt.ro/~oose/uploads/VVS/cursVVS10.pdf · 2019-11-26 · Exemplu: Test monkeys Utilitare automate care execut a act, iuni la ^ nt^amplare](https://reader033.vdocuments.us/reader033/viewer/2022041615/5e3af03735a6154f195e2205/html5/thumbnails/3.jpg)
Problematica automatizarii
Testarea are componente repetitive, deci se justifica automatizarea.
Problema e evaluarea cost-beneficiu a automatizarii [Kaner]
Cer timp: crearea, verificarea funct, ionarii, documentarea testelor
E reutilizabila automatizarea? (cat se modifica programul?)
Necesita mentenant, a? (modificare GUI, internat, ionalizare)⇒ Automatizarea testarii: tratata ca orice proces de dezvoltare
Intarzie gasirea erorilor? (scade resursele pentru rularea testelor)
Gases, te suficiente erori? Sau greul ramane pe testarea manuala?
E suficient de puternica? Sau automatizeaza doar testele “us,oare”?
![Page 4: 2019 - Politehnica University of Timișoaralabs.cs.upt.ro/~oose/uploads/VVS/cursVVS10.pdf · 2019-11-26 · Exemplu: Test monkeys Utilitare automate care execut a act, iuni la ^ nt^amplare](https://reader033.vdocuments.us/reader033/viewer/2022041615/5e3af03735a6154f195e2205/html5/thumbnails/4.jpg)
Problematica automatizarii
Testarea are componente repetitive, deci se justifica automatizarea.
Problema e evaluarea cost-beneficiu a automatizarii [Kaner]
Cer timp: crearea, verificarea funct, ionarii, documentarea testelor
E reutilizabila automatizarea? (cat se modifica programul?)
Necesita mentenant, a? (modificare GUI, internat, ionalizare)⇒ Automatizarea testarii: tratata ca orice proces de dezvoltare
Intarzie gasirea erorilor? (scade resursele pentru rularea testelor)
Gases, te suficiente erori? Sau greul ramane pe testarea manuala?
E suficient de puternica? Sau automatizeaza doar testele “us,oare”?
![Page 5: 2019 - Politehnica University of Timișoaralabs.cs.upt.ro/~oose/uploads/VVS/cursVVS10.pdf · 2019-11-26 · Exemplu: Test monkeys Utilitare automate care execut a act, iuni la ^ nt^amplare](https://reader033.vdocuments.us/reader033/viewer/2022041615/5e3af03735a6154f195e2205/html5/thumbnails/5.jpg)
Exemplu: Capture-replay
1) ınregistreaza act, iunile utilizatorului (mouse/tastatura), s, iecranul rezultat (bitmap) ⇒ nivelul cel mai primitiv
– alte verificari: cu efortul testorului (ıntrerupere/inserare)– susceptibila la orice modificare ın produs– posibile erori de comparare ın imaginea rezultata
2) script cu act, iuni la nivel ınalt (selectare meniu/buton)– mai flexibile, dar nu verifica implicit aspectul grafic
(nivel scazut: font, dimensiune/suprascriere text, etc.)
3) limbaj de scripting pentru a genera automat teste noi
![Page 6: 2019 - Politehnica University of Timișoaralabs.cs.upt.ro/~oose/uploads/VVS/cursVVS10.pdf · 2019-11-26 · Exemplu: Test monkeys Utilitare automate care execut a act, iuni la ^ nt^amplare](https://reader033.vdocuments.us/reader033/viewer/2022041615/5e3af03735a6154f195e2205/html5/thumbnails/6.jpg)
Exemplu: Capture-replay
Dezavantajele sistemului capture-replay
Nu poate continua din erori
⇒ erorile sunt gasite ın procesul manual de ınregistrare⇒ se automatizeaza doar reluarea testului “bun” (regresie)
Nu poate defini testele implicite pentru om (“tot restul e OK”)
(nu detecteaza erori nespecificate, sau e inflexibila – ex. bitmap)
![Page 7: 2019 - Politehnica University of Timișoaralabs.cs.upt.ro/~oose/uploads/VVS/cursVVS10.pdf · 2019-11-26 · Exemplu: Test monkeys Utilitare automate care execut a act, iuni la ^ nt^amplare](https://reader033.vdocuments.us/reader033/viewer/2022041615/5e3af03735a6154f195e2205/html5/thumbnails/7.jpg)
Exemplu: Test monkeys
Utilitare automate care executa act, iuni la ıntamplare(fara cunos, tint,ele unui testor despre funct, ionalitatea produsului)
Dumb monkeys: ignora complet utilitatea (doar mouse/tastatura)dar pot avea not, iuni de baza despre ferestre/meniuri/butoane
Smart monkeys: au un model cu stari al aplicat, iei, exercita tranzit, iiıntre aceste stari
++ pot gasi uneori 10-20% din erori [Nyman, Microsoft, 2000]++ buna acoperire preliminara (ex: 65% ın 15 min, editor texte)++ teste complet automate, fara efort uman de ınregistrare++ ruleaza independent, nesupravegheat, minim de resurse (cost)
-- “dumb” monkeys nu s, tiu ce e eroare: doar cand sistemul crapa-- ⇒ erorile sunt dificil de ınregistrat s, i reprodus
![Page 8: 2019 - Politehnica University of Timișoaralabs.cs.upt.ro/~oose/uploads/VVS/cursVVS10.pdf · 2019-11-26 · Exemplu: Test monkeys Utilitare automate care execut a act, iuni la ^ nt^amplare](https://reader033.vdocuments.us/reader033/viewer/2022041615/5e3af03735a6154f195e2205/html5/thumbnails/8.jpg)
Exemplu: Test monkeys
Utilitare automate care executa act, iuni la ıntamplare(fara cunos, tint,ele unui testor despre funct, ionalitatea produsului)
Dumb monkeys: ignora complet utilitatea (doar mouse/tastatura)dar pot avea not, iuni de baza despre ferestre/meniuri/butoane
Smart monkeys: au un model cu stari al aplicat, iei, exercita tranzit, iiıntre aceste stari
++ pot gasi uneori 10-20% din erori [Nyman, Microsoft, 2000]++ buna acoperire preliminara (ex: 65% ın 15 min, editor texte)++ teste complet automate, fara efort uman de ınregistrare++ ruleaza independent, nesupravegheat, minim de resurse (cost)
-- “dumb” monkeys nu s, tiu ce e eroare: doar cand sistemul crapa-- ⇒ erorile sunt dificil de ınregistrat s, i reprodus
![Page 9: 2019 - Politehnica University of Timișoaralabs.cs.upt.ro/~oose/uploads/VVS/cursVVS10.pdf · 2019-11-26 · Exemplu: Test monkeys Utilitare automate care execut a act, iuni la ^ nt^amplare](https://reader033.vdocuments.us/reader033/viewer/2022041615/5e3af03735a6154f195e2205/html5/thumbnails/9.jpg)
Ce putem automatiza ın testare?
Execut, ia/rularea testelorex. ın orice cadru de testare de modulutila pentru testarea de regresie
Evaluarea testelor= problema oracolului de testare: testul a trecut sau nu ?
Netrivial. Adesea necesita inspect, ie manuala. Riscuri:– erori nedetectate (imprecizie, sau aceeas, i eroare ca programul)– avertismente false ⇒ costul verificarii manuale
Ex: comparare de semnale continue (ın industria automotive)comparare de imagini pentru ecran/imprimanta
Generarea testelorRelativ facil: generarea de schelete de test (declarat, ii + apeluri)Mai dificil: generarea inteligenta de date relevante (acoperire)
![Page 10: 2019 - Politehnica University of Timișoaralabs.cs.upt.ro/~oose/uploads/VVS/cursVVS10.pdf · 2019-11-26 · Exemplu: Test monkeys Utilitare automate care execut a act, iuni la ^ nt^amplare](https://reader033.vdocuments.us/reader033/viewer/2022041615/5e3af03735a6154f195e2205/html5/thumbnails/10.jpg)
Ce putem automatiza ın testare?
Execut, ia/rularea testelorex. ın orice cadru de testare de modulutila pentru testarea de regresie
Evaluarea testelor= problema oracolului de testare: testul a trecut sau nu ?
Netrivial. Adesea necesita inspect, ie manuala. Riscuri:– erori nedetectate (imprecizie, sau aceeas, i eroare ca programul)– avertismente false ⇒ costul verificarii manuale
Ex: comparare de semnale continue (ın industria automotive)comparare de imagini pentru ecran/imprimanta
Generarea testelorRelativ facil: generarea de schelete de test (declarat, ii + apeluri)Mai dificil: generarea inteligenta de date relevante (acoperire)
![Page 11: 2019 - Politehnica University of Timișoaralabs.cs.upt.ro/~oose/uploads/VVS/cursVVS10.pdf · 2019-11-26 · Exemplu: Test monkeys Utilitare automate care execut a act, iuni la ^ nt^amplare](https://reader033.vdocuments.us/reader033/viewer/2022041615/5e3af03735a6154f195e2205/html5/thumbnails/11.jpg)
Ce putem automatiza ın testare?
Execut, ia/rularea testelorex. ın orice cadru de testare de modulutila pentru testarea de regresie
Evaluarea testelor= problema oracolului de testare: testul a trecut sau nu ?
Netrivial. Adesea necesita inspect, ie manuala. Riscuri:– erori nedetectate (imprecizie, sau aceeas, i eroare ca programul)– avertismente false ⇒ costul verificarii manuale
Ex: comparare de semnale continue (ın industria automotive)comparare de imagini pentru ecran/imprimanta
Generarea testelorRelativ facil: generarea de schelete de test (declarat, ii + apeluri)Mai dificil: generarea inteligenta de date relevante (acoperire)
![Page 12: 2019 - Politehnica University of Timișoaralabs.cs.upt.ro/~oose/uploads/VVS/cursVVS10.pdf · 2019-11-26 · Exemplu: Test monkeys Utilitare automate care execut a act, iuni la ^ nt^amplare](https://reader033.vdocuments.us/reader033/viewer/2022041615/5e3af03735a6154f195e2205/html5/thumbnails/12.jpg)
Alegerea arhitecturii de testare [Kaner]
1) Arhitectura direct, ionata de date (data-driven)Separa datele de structura testului (la fel ca ın programe)Exemplu: Tabel, linii = teste; coloane = parametrii de testUn script genereaza un test pentru fiecare rand din tabelMinim rezonabil: acopera fiecare pereche de valori la parametri
(pentru fiecare combinat, ie de parametri numarul e exponent, ial)
2) Definirea unui cadru de testare (framework-based architecture)O biblioteca de funct, ii separa testarea de interfat,a utilizatorEx: open(file), independent de act, iunile pentru deschidere(meniu, clic pe buton, tastatura, etc.)++ reutilizare pentru act, iunile frecvent folosite++ nivel de indirectare ⇒ izolare de utilitarul de testare-- costisitor, amortizare doar la versiuni ulterioare
![Page 13: 2019 - Politehnica University of Timișoaralabs.cs.upt.ro/~oose/uploads/VVS/cursVVS10.pdf · 2019-11-26 · Exemplu: Test monkeys Utilitare automate care execut a act, iuni la ^ nt^amplare](https://reader033.vdocuments.us/reader033/viewer/2022041615/5e3af03735a6154f195e2205/html5/thumbnails/13.jpg)
Alegerea arhitecturii de testare [Kaner]
1) Arhitectura direct, ionata de date (data-driven)Separa datele de structura testului (la fel ca ın programe)Exemplu: Tabel, linii = teste; coloane = parametrii de testUn script genereaza un test pentru fiecare rand din tabelMinim rezonabil: acopera fiecare pereche de valori la parametri
(pentru fiecare combinat, ie de parametri numarul e exponent, ial)
2) Definirea unui cadru de testare (framework-based architecture)O biblioteca de funct, ii separa testarea de interfat,a utilizatorEx: open(file), independent de act, iunile pentru deschidere(meniu, clic pe buton, tastatura, etc.)++ reutilizare pentru act, iunile frecvent folosite++ nivel de indirectare ⇒ izolare de utilitarul de testare-- costisitor, amortizare doar la versiuni ulterioare
![Page 14: 2019 - Politehnica University of Timișoaralabs.cs.upt.ro/~oose/uploads/VVS/cursVVS10.pdf · 2019-11-26 · Exemplu: Test monkeys Utilitare automate care execut a act, iuni la ^ nt^amplare](https://reader033.vdocuments.us/reader033/viewer/2022041615/5e3af03735a6154f195e2205/html5/thumbnails/14.jpg)
Testarea pornind de la specificat, ii
Automatizabila (keyword testing) pentru specific. ın limbaj definit
Pornind de la documentat, ie: specificat, ie tabelara, ex. [Pettichord]
Test ID Operation Table Name Type Nulls
dtbed101 Add Col TB03 NEW INT COL CHAR(100) Y
Important: format suficient de us,or inteligibil pentru specificator
Un translator/interpretor de test genereaza din tabel driverul detest sau face interfat,a cu utilitarul comercial de testare folosit
++: axat pe cerint,e (ce, nu cum), independent, a de implementare s, iutilitar de testare, auto-documentat
Avansat: generare automata din specificat, ii ın limbaj formal(ex. tabele de decizie ın RSML (Requirements State MachineLanguage), la protocolul de aviat, ie TCAS-II)
![Page 15: 2019 - Politehnica University of Timișoaralabs.cs.upt.ro/~oose/uploads/VVS/cursVVS10.pdf · 2019-11-26 · Exemplu: Test monkeys Utilitare automate care execut a act, iuni la ^ nt^amplare](https://reader033.vdocuments.us/reader033/viewer/2022041615/5e3af03735a6154f195e2205/html5/thumbnails/15.jpg)
Testarea pornind de la specificat, ii
Automatizabila (keyword testing) pentru specific. ın limbaj definit
Pornind de la documentat, ie: specificat, ie tabelara, ex. [Pettichord]
Test ID Operation Table Name Type Nulls
dtbed101 Add Col TB03 NEW INT COL CHAR(100) Y
Important: format suficient de us,or inteligibil pentru specificator
Un translator/interpretor de test genereaza din tabel driverul detest sau face interfat,a cu utilitarul comercial de testare folosit
++: axat pe cerint,e (ce, nu cum), independent, a de implementare s, iutilitar de testare, auto-documentat
Avansat: generare automata din specificat, ii ın limbaj formal(ex. tabele de decizie ın RSML (Requirements State MachineLanguage), la protocolul de aviat, ie TCAS-II)
![Page 16: 2019 - Politehnica University of Timișoaralabs.cs.upt.ro/~oose/uploads/VVS/cursVVS10.pdf · 2019-11-26 · Exemplu: Test monkeys Utilitare automate care execut a act, iuni la ^ nt^amplare](https://reader033.vdocuments.us/reader033/viewer/2022041615/5e3af03735a6154f195e2205/html5/thumbnails/16.jpg)
Testarea pornind de la specificat, ii
Automatizabila (keyword testing) pentru specific. ın limbaj definit
Pornind de la documentat, ie: specificat, ie tabelara, ex. [Pettichord]
Test ID Operation Table Name Type Nulls
dtbed101 Add Col TB03 NEW INT COL CHAR(100) Y
Important: format suficient de us,or inteligibil pentru specificator
Un translator/interpretor de test genereaza din tabel driverul detest sau face interfat,a cu utilitarul comercial de testare folosit
++: axat pe cerint,e (ce, nu cum), independent, a de implementare s, iutilitar de testare, auto-documentat
Avansat: generare automata din specificat, ii ın limbaj formal(ex. tabele de decizie ın RSML (Requirements State MachineLanguage), la protocolul de aviat, ie TCAS-II)
![Page 17: 2019 - Politehnica University of Timișoaralabs.cs.upt.ro/~oose/uploads/VVS/cursVVS10.pdf · 2019-11-26 · Exemplu: Test monkeys Utilitare automate care execut a act, iuni la ^ nt^amplare](https://reader033.vdocuments.us/reader033/viewer/2022041615/5e3af03735a6154f195e2205/html5/thumbnails/17.jpg)
Testarea pornind de la specificat, ii
Automatizabila (keyword testing) pentru specific. ın limbaj definit
Pornind de la documentat, ie: specificat, ie tabelara, ex. [Pettichord]
Test ID Operation Table Name Type Nulls
dtbed101 Add Col TB03 NEW INT COL CHAR(100) Y
Important: format suficient de us,or inteligibil pentru specificator
Un translator/interpretor de test genereaza din tabel driverul detest sau face interfat,a cu utilitarul comercial de testare folosit
++: axat pe cerint,e (ce, nu cum), independent, a de implementare s, iutilitar de testare, auto-documentat
Avansat: generare automata din specificat, ii ın limbaj formal(ex. tabele de decizie ın RSML (Requirements State MachineLanguage), la protocolul de aviat, ie TCAS-II)
![Page 18: 2019 - Politehnica University of Timișoaralabs.cs.upt.ro/~oose/uploads/VVS/cursVVS10.pdf · 2019-11-26 · Exemplu: Test monkeys Utilitare automate care execut a act, iuni la ^ nt^amplare](https://reader033.vdocuments.us/reader033/viewer/2022041615/5e3af03735a6154f195e2205/html5/thumbnails/18.jpg)
Testarea bazata pe modele
Modele: automate finite, UML, Statecharts (automate ierarhice),Message Sequence Charts, automate cu timp, ret,ele Petri,lant,uri Markov...
Criterii de generare: acoperirea satisfacatoare a modeluluitoate starile / tranzit, iile; combinat, ii de k tranzit, ii consecutive(k-switch cover)
++ faciliteaza generarea testelor relevante-- investit, ie ın construirea s, i mentenant,a modelului
Testare prin model checkingprin explorarea spat, iului starilor, pornind de la specificat, ii:
1) se pune ıntrebarea: poate modelul sa ajunga ıntr-o stare data ?2) daca da, un model checker va genera un exemplu = caz de test
![Page 19: 2019 - Politehnica University of Timișoaralabs.cs.upt.ro/~oose/uploads/VVS/cursVVS10.pdf · 2019-11-26 · Exemplu: Test monkeys Utilitare automate care execut a act, iuni la ^ nt^amplare](https://reader033.vdocuments.us/reader033/viewer/2022041615/5e3af03735a6154f195e2205/html5/thumbnails/19.jpg)
Testarea bazata pe modele
Modele: automate finite, UML, Statecharts (automate ierarhice),Message Sequence Charts, automate cu timp, ret,ele Petri,lant,uri Markov...
Criterii de generare: acoperirea satisfacatoare a modeluluitoate starile / tranzit, iile; combinat, ii de k tranzit, ii consecutive(k-switch cover)
++ faciliteaza generarea testelor relevante-- investit, ie ın construirea s, i mentenant,a modelului
Testare prin model checkingprin explorarea spat, iului starilor, pornind de la specificat, ii:
1) se pune ıntrebarea: poate modelul sa ajunga ıntr-o stare data ?2) daca da, un model checker va genera un exemplu = caz de test
![Page 20: 2019 - Politehnica University of Timișoaralabs.cs.upt.ro/~oose/uploads/VVS/cursVVS10.pdf · 2019-11-26 · Exemplu: Test monkeys Utilitare automate care execut a act, iuni la ^ nt^amplare](https://reader033.vdocuments.us/reader033/viewer/2022041615/5e3af03735a6154f195e2205/html5/thumbnails/20.jpg)
Testarea bazata pe modele
Modele: automate finite, UML, Statecharts (automate ierarhice),Message Sequence Charts, automate cu timp, ret,ele Petri,lant,uri Markov...
Criterii de generare: acoperirea satisfacatoare a modeluluitoate starile / tranzit, iile; combinat, ii de k tranzit, ii consecutive(k-switch cover)
++ faciliteaza generarea testelor relevante-- investit, ie ın construirea s, i mentenant,a modelului
Testare prin model checkingprin explorarea spat, iului starilor, pornind de la specificat, ii:
1) se pune ıntrebarea: poate modelul sa ajunga ıntr-o stare data ?2) daca da, un model checker va genera un exemplu = caz de test
![Page 21: 2019 - Politehnica University of Timișoaralabs.cs.upt.ro/~oose/uploads/VVS/cursVVS10.pdf · 2019-11-26 · Exemplu: Test monkeys Utilitare automate care execut a act, iuni la ^ nt^amplare](https://reader033.vdocuments.us/reader033/viewer/2022041615/5e3af03735a6154f195e2205/html5/thumbnails/21.jpg)
Testarea pornind de la implementare: execut, ie simbolica
Scop: exercitarea programului, satisfacand un criteriu de acoperire⇒ necesita: instrumentarea pentru masurarea acoperirii
Cum: combinat, ie de cai alese la ıntamplare + direct, ionat(pentru atingerea ramurilor neparcurse ınca)
Execut, ie simbolica: execut, ie a programului folosind expresii (cuvariabile = simboluri), spre deosebire de valori numerice
In execut, ia simbolica se ret, in constrangeri (path conditions)corespunzand ramificat, iilor urmate de program
Realizabilitatea condit, iilor se verifica cu utilitare specializate(satisfiability checkers, constraint solvers)⇒ genereaza date de test care vor exercita calea respectivasau demonstreaza ca nu e fezabila ⇒ opres, te explorarea acelei cai
![Page 22: 2019 - Politehnica University of Timișoaralabs.cs.upt.ro/~oose/uploads/VVS/cursVVS10.pdf · 2019-11-26 · Exemplu: Test monkeys Utilitare automate care execut a act, iuni la ^ nt^amplare](https://reader033.vdocuments.us/reader033/viewer/2022041615/5e3af03735a6154f195e2205/html5/thumbnails/22.jpg)
Testarea pornind de la implementare: execut, ie simbolica
Scop: exercitarea programului, satisfacand un criteriu de acoperire⇒ necesita: instrumentarea pentru masurarea acoperirii
Cum: combinat, ie de cai alese la ıntamplare + direct, ionat(pentru atingerea ramurilor neparcurse ınca)
Execut, ie simbolica: execut, ie a programului folosind expresii (cuvariabile = simboluri), spre deosebire de valori numerice
In execut, ia simbolica se ret, in constrangeri (path conditions)corespunzand ramificat, iilor urmate de program
Realizabilitatea condit, iilor se verifica cu utilitare specializate(satisfiability checkers, constraint solvers)⇒ genereaza date de test care vor exercita calea respectivasau demonstreaza ca nu e fezabila ⇒ opres, te explorarea acelei cai
![Page 23: 2019 - Politehnica University of Timișoaralabs.cs.upt.ro/~oose/uploads/VVS/cursVVS10.pdf · 2019-11-26 · Exemplu: Test monkeys Utilitare automate care execut a act, iuni la ^ nt^amplare](https://reader033.vdocuments.us/reader033/viewer/2022041615/5e3af03735a6154f195e2205/html5/thumbnails/23.jpg)
Testarea pornind de la implementare: execut, ie simbolica
Scop: exercitarea programului, satisfacand un criteriu de acoperire⇒ necesita: instrumentarea pentru masurarea acoperirii
Cum: combinat, ie de cai alese la ıntamplare + direct, ionat(pentru atingerea ramurilor neparcurse ınca)
Execut, ie simbolica: execut, ie a programului folosind expresii (cuvariabile = simboluri), spre deosebire de valori numerice
In execut, ia simbolica se ret, in constrangeri (path conditions)corespunzand ramificat, iilor urmate de program
Realizabilitatea condit, iilor se verifica cu utilitare specializate(satisfiability checkers, constraint solvers)⇒ genereaza date de test care vor exercita calea respectivasau demonstreaza ca nu e fezabila ⇒ opres, te explorarea acelei cai
![Page 24: 2019 - Politehnica University of Timișoaralabs.cs.upt.ro/~oose/uploads/VVS/cursVVS10.pdf · 2019-11-26 · Exemplu: Test monkeys Utilitare automate care execut a act, iuni la ^ nt^amplare](https://reader033.vdocuments.us/reader033/viewer/2022041615/5e3af03735a6154f195e2205/html5/thumbnails/24.jpg)
Execut, ia simbolica s, i testarea programelor
init, ial descrisa de James C. King (1976)
programul e executat (de un interpretor special) folosind intrarisymbolice
⇒ arbore de execut, ie simbolicacu condit, ii de cale (path conditions) care acumuleaza condit, iile
de la fiecare ramificare/decizieexecut, ia se opres, te cand condit, ia devine inconsistenta
(nerealizabila)
Scopul generarii de testefactor ridicat de acoperireuneori, atingerea unei anumite ramuri
Larg cercetata (150+ articole), tehnica matura, de succesUtilitare: Java Pathfinder, (j)CUTE, Crest, KLEE, Pex, SAGE, ...
pentru C, C#, Java, mai recent JavaScript
![Page 25: 2019 - Politehnica University of Timișoaralabs.cs.upt.ro/~oose/uploads/VVS/cursVVS10.pdf · 2019-11-26 · Exemplu: Test monkeys Utilitare automate care execut a act, iuni la ^ nt^amplare](https://reader033.vdocuments.us/reader033/viewer/2022041615/5e3af03735a6154f195e2205/html5/thumbnails/25.jpg)
Execut, ia simbolica s, i testarea programelor
init, ial descrisa de James C. King (1976)
programul e executat (de un interpretor special) folosind intrarisymbolice⇒ arbore de execut, ie simbolica
cu condit, ii de cale (path conditions) care acumuleaza condit, iilede la fiecare ramificare/decizie
execut, ia se opres, te cand condit, ia devine inconsistenta(nerealizabila)
Scopul generarii de testefactor ridicat de acoperireuneori, atingerea unei anumite ramuri
Larg cercetata (150+ articole), tehnica matura, de succesUtilitare: Java Pathfinder, (j)CUTE, Crest, KLEE, Pex, SAGE, ...
pentru C, C#, Java, mai recent JavaScript
![Page 26: 2019 - Politehnica University of Timișoaralabs.cs.upt.ro/~oose/uploads/VVS/cursVVS10.pdf · 2019-11-26 · Exemplu: Test monkeys Utilitare automate care execut a act, iuni la ^ nt^amplare](https://reader033.vdocuments.us/reader033/viewer/2022041615/5e3af03735a6154f195e2205/html5/thumbnails/26.jpg)
Execut, ia simbolica s, i testarea programelor
init, ial descrisa de James C. King (1976)
programul e executat (de un interpretor special) folosind intrarisymbolice⇒ arbore de execut, ie simbolica
cu condit, ii de cale (path conditions) care acumuleaza condit, iilede la fiecare ramificare/decizie
execut, ia se opres, te cand condit, ia devine inconsistenta(nerealizabila)
Scopul generarii de testefactor ridicat de acoperireuneori, atingerea unei anumite ramuri
Larg cercetata (150+ articole), tehnica matura, de succesUtilitare: Java Pathfinder, (j)CUTE, Crest, KLEE, Pex, SAGE, ...
pentru C, C#, Java, mai recent JavaScript
![Page 27: 2019 - Politehnica University of Timișoaralabs.cs.upt.ro/~oose/uploads/VVS/cursVVS10.pdf · 2019-11-26 · Exemplu: Test monkeys Utilitare automate care execut a act, iuni la ^ nt^amplare](https://reader033.vdocuments.us/reader033/viewer/2022041615/5e3af03735a6154f195e2205/html5/thumbnails/27.jpg)
Execut, ia simbolica: variante
Execut, ie integral simbolicaexploreaza independent fiecare cale de execut, ie
c1 ?
c2 ? c3 ?
¬c1 ∧ ¬c2 ¬c1 ∧ c2 c1 ∧ ¬c3 c1 ∧ c3
Problema: toata semantica limbajului trebuie exprimata ın formules, i un rezolvitor pentru formule arbitrare ⇒ imposibil
matematica complicata, funct, ii de biblioteca, interact, iuni cu mediulex. KLEE: modele pentru 40 de apeluri sistem (2500 LOC)
![Page 28: 2019 - Politehnica University of Timișoaralabs.cs.upt.ro/~oose/uploads/VVS/cursVVS10.pdf · 2019-11-26 · Exemplu: Test monkeys Utilitare automate care execut a act, iuni la ^ nt^amplare](https://reader033.vdocuments.us/reader033/viewer/2022041615/5e3af03735a6154f195e2205/html5/thumbnails/28.jpg)
Execut, ie simbolica dinamica (concolica)
Execut, ia simbolica e direct, ionata de cea concretade aici numele concolic
Cand modelarea simbolica ar fi prea complicata, ınlocuies, te pasulrespectiv cu execut, ie concreta
ex. aritmetica neliniara, funct, ii de biblioteca
function explore(pc = [c1, c2, . . . , cn])for k = n downto 1 do
inputs = solve pc = c1 ∧ . . . ∧ ck−1 ∧ ¬ck (flip ck)rerun with new inputs; capture new pc’explore(pc’)
Problema: ınlocuind cu valori concrete, se poate sa nu maiatingem calea dorita
![Page 29: 2019 - Politehnica University of Timișoaralabs.cs.upt.ro/~oose/uploads/VVS/cursVVS10.pdf · 2019-11-26 · Exemplu: Test monkeys Utilitare automate care execut a act, iuni la ^ nt^amplare](https://reader033.vdocuments.us/reader033/viewer/2022041615/5e3af03735a6154f195e2205/html5/thumbnails/29.jpg)
Execut, ie simbolica dinamica (concolica)
Execut, ia simbolica e direct, ionata de cea concretade aici numele concolic
Cand modelarea simbolica ar fi prea complicata, ınlocuies, te pasulrespectiv cu execut, ie concreta
ex. aritmetica neliniara, funct, ii de biblioteca
function explore(pc = [c1, c2, . . . , cn])for k = n downto 1 do
inputs = solve pc = c1 ∧ . . . ∧ ck−1 ∧ ¬ck (flip ck)rerun with new inputs; capture new pc’explore(pc’)
Problema: ınlocuind cu valori concrete, se poate sa nu maiatingem calea dorita
![Page 30: 2019 - Politehnica University of Timișoaralabs.cs.upt.ro/~oose/uploads/VVS/cursVVS10.pdf · 2019-11-26 · Exemplu: Test monkeys Utilitare automate care execut a act, iuni la ^ nt^amplare](https://reader033.vdocuments.us/reader033/viewer/2022041615/5e3af03735a6154f195e2205/html5/thumbnails/30.jpg)
Concretizarea ca obstacol ın execut, ia simbolica
y = hash ( x ) ; // nu s t i m ce f a c e hash => y e c o n c r e ti f ( x + y > 0)
// c a l e a 1e l s e
// c a l e a 2
Fie prima intrare: x = 20; y = hash(20) = 13 ⇒ calea 1
Pentru calea 2, negam x + y > 0, cu y concret (constanta 13)
Rezolvitorul poate returna (de ex.) x = -15dar putem avea hash(-15) = 27 s, i x + y > 0 (nu putem prezice)
⇒ execut, ia urmeaza tot calea 1
⇒ reıncercare; ın cel mai rau caz, devine testare aleatoare
![Page 31: 2019 - Politehnica University of Timișoaralabs.cs.upt.ro/~oose/uploads/VVS/cursVVS10.pdf · 2019-11-26 · Exemplu: Test monkeys Utilitare automate care execut a act, iuni la ^ nt^amplare](https://reader033.vdocuments.us/reader033/viewer/2022041615/5e3af03735a6154f195e2205/html5/thumbnails/31.jpg)
Cand e eficienta automatizarea ?
In testarea de regresie: necesita doar stocarea testelor s, i arezultatelor as, teptate + compararea automata a rezultatelor
Testarea interfet,elor utilizator (UI testing)
Testarea translatoarelor:generarea automata de intrari pornind de la gramatica limbajuluise exploreaza aleator/statistic combinat, ii de neterminale
Load/stress testing: aleatoare, relevanta e cantitatea, nu cont, inutul
Fuzz testing: generarea de cantitat, i mari de intrari aleatoare/ostile,pentru a detecta erori de validare / vulnerabilitat, i de securitate
Ex: Randoop [Microsoft]: 4 mil. teste ın 150 ore CPU / 15 ore-om30 de erori ın cod testat 200 pers.-an, cu 20 erori/an gasite manualv. s, i http://research.microsoft.com/en-us/projects/Pex/
![Page 32: 2019 - Politehnica University of Timișoaralabs.cs.upt.ro/~oose/uploads/VVS/cursVVS10.pdf · 2019-11-26 · Exemplu: Test monkeys Utilitare automate care execut a act, iuni la ^ nt^amplare](https://reader033.vdocuments.us/reader033/viewer/2022041615/5e3af03735a6154f195e2205/html5/thumbnails/32.jpg)
Cand e eficienta automatizarea ?
In testarea de regresie: necesita doar stocarea testelor s, i arezultatelor as, teptate + compararea automata a rezultatelor
Testarea interfet,elor utilizator (UI testing)
Testarea translatoarelor:generarea automata de intrari pornind de la gramatica limbajuluise exploreaza aleator/statistic combinat, ii de neterminale
Load/stress testing: aleatoare, relevanta e cantitatea, nu cont, inutul
Fuzz testing: generarea de cantitat, i mari de intrari aleatoare/ostile,pentru a detecta erori de validare / vulnerabilitat, i de securitate
Ex: Randoop [Microsoft]: 4 mil. teste ın 150 ore CPU / 15 ore-om30 de erori ın cod testat 200 pers.-an, cu 20 erori/an gasite manualv. s, i http://research.microsoft.com/en-us/projects/Pex/
![Page 33: 2019 - Politehnica University of Timișoaralabs.cs.upt.ro/~oose/uploads/VVS/cursVVS10.pdf · 2019-11-26 · Exemplu: Test monkeys Utilitare automate care execut a act, iuni la ^ nt^amplare](https://reader033.vdocuments.us/reader033/viewer/2022041615/5e3af03735a6154f195e2205/html5/thumbnails/33.jpg)
Cand e eficienta automatizarea ?
In testarea de regresie: necesita doar stocarea testelor s, i arezultatelor as, teptate + compararea automata a rezultatelor
Testarea interfet,elor utilizator (UI testing)
Testarea translatoarelor:generarea automata de intrari pornind de la gramatica limbajuluise exploreaza aleator/statistic combinat, ii de neterminale
Load/stress testing: aleatoare, relevanta e cantitatea, nu cont, inutul
Fuzz testing: generarea de cantitat, i mari de intrari aleatoare/ostile,pentru a detecta erori de validare / vulnerabilitat, i de securitate
Ex: Randoop [Microsoft]: 4 mil. teste ın 150 ore CPU / 15 ore-om30 de erori ın cod testat 200 pers.-an, cu 20 erori/an gasite manualv. s, i http://research.microsoft.com/en-us/projects/Pex/
![Page 34: 2019 - Politehnica University of Timișoaralabs.cs.upt.ro/~oose/uploads/VVS/cursVVS10.pdf · 2019-11-26 · Exemplu: Test monkeys Utilitare automate care execut a act, iuni la ^ nt^amplare](https://reader033.vdocuments.us/reader033/viewer/2022041615/5e3af03735a6154f195e2205/html5/thumbnails/34.jpg)
Cand e eficienta automatizarea ?
In testarea de regresie: necesita doar stocarea testelor s, i arezultatelor as, teptate + compararea automata a rezultatelor
Testarea interfet,elor utilizator (UI testing)
Testarea translatoarelor:generarea automata de intrari pornind de la gramatica limbajuluise exploreaza aleator/statistic combinat, ii de neterminale
Load/stress testing: aleatoare, relevanta e cantitatea, nu cont, inutul
Fuzz testing: generarea de cantitat, i mari de intrari aleatoare/ostile,pentru a detecta erori de validare / vulnerabilitat, i de securitate
Ex: Randoop [Microsoft]: 4 mil. teste ın 150 ore CPU / 15 ore-om30 de erori ın cod testat 200 pers.-an, cu 20 erori/an gasite manualv. s, i http://research.microsoft.com/en-us/projects/Pex/
![Page 35: 2019 - Politehnica University of Timișoaralabs.cs.upt.ro/~oose/uploads/VVS/cursVVS10.pdf · 2019-11-26 · Exemplu: Test monkeys Utilitare automate care execut a act, iuni la ^ nt^amplare](https://reader033.vdocuments.us/reader033/viewer/2022041615/5e3af03735a6154f195e2205/html5/thumbnails/35.jpg)
Cand e eficienta automatizarea ?
In testarea de regresie: necesita doar stocarea testelor s, i arezultatelor as, teptate + compararea automata a rezultatelor
Testarea interfet,elor utilizator (UI testing)
Testarea translatoarelor:generarea automata de intrari pornind de la gramatica limbajuluise exploreaza aleator/statistic combinat, ii de neterminale
Load/stress testing: aleatoare, relevanta e cantitatea, nu cont, inutul
Fuzz testing: generarea de cantitat, i mari de intrari aleatoare/ostile,pentru a detecta erori de validare / vulnerabilitat, i de securitate
Ex: Randoop [Microsoft]: 4 mil. teste ın 150 ore CPU / 15 ore-om30 de erori ın cod testat 200 pers.-an, cu 20 erori/an gasite manualv. s, i http://research.microsoft.com/en-us/projects/Pex/
![Page 36: 2019 - Politehnica University of Timișoaralabs.cs.upt.ro/~oose/uploads/VVS/cursVVS10.pdf · 2019-11-26 · Exemplu: Test monkeys Utilitare automate care execut a act, iuni la ^ nt^amplare](https://reader033.vdocuments.us/reader033/viewer/2022041615/5e3af03735a6154f195e2205/html5/thumbnails/36.jpg)
Automatizarea depanarii
Dupa automatizarea detect, iei ⇒ sprijinul ın localizarea erorilor
Minimizarea intrarilor de eroareprin cautare binara, determinand jumatatea de intrare care
cauzeaza eroarea (ex. ın cazul programelor cu intrari fis, iere)
Minimizarea diferent,elor ıntre o rulare corecta s, i una eronatatot cautare binara, pentru doua intrari cat mai apropiate
Localizarea erorilor ın spat, iucomparand starea de execut, ie ıntre rulari corecte s, i eronatedetectand (precis sau statistic) invariant, i/tipare corecte, violate
de execut, ia eronata
Localizarea erorilor ın timpprin compararea secvent,elor eronate s, i identificarea punctelor
ın care variabile infectate ıncep sa difere / afecteze ies, irea
Delta debugging [Zeller]: implementare part, ial automata a acestora
![Page 37: 2019 - Politehnica University of Timișoaralabs.cs.upt.ro/~oose/uploads/VVS/cursVVS10.pdf · 2019-11-26 · Exemplu: Test monkeys Utilitare automate care execut a act, iuni la ^ nt^amplare](https://reader033.vdocuments.us/reader033/viewer/2022041615/5e3af03735a6154f195e2205/html5/thumbnails/37.jpg)
Automatizarea depanarii
Dupa automatizarea detect, iei ⇒ sprijinul ın localizarea erorilor
Minimizarea intrarilor de eroareprin cautare binara, determinand jumatatea de intrare care
cauzeaza eroarea (ex. ın cazul programelor cu intrari fis, iere)
Minimizarea diferent,elor ıntre o rulare corecta s, i una eronatatot cautare binara, pentru doua intrari cat mai apropiate
Localizarea erorilor ın spat, iucomparand starea de execut, ie ıntre rulari corecte s, i eronatedetectand (precis sau statistic) invariant, i/tipare corecte, violate
de execut, ia eronata
Localizarea erorilor ın timpprin compararea secvent,elor eronate s, i identificarea punctelor
ın care variabile infectate ıncep sa difere / afecteze ies, irea
Delta debugging [Zeller]: implementare part, ial automata a acestora
![Page 38: 2019 - Politehnica University of Timișoaralabs.cs.upt.ro/~oose/uploads/VVS/cursVVS10.pdf · 2019-11-26 · Exemplu: Test monkeys Utilitare automate care execut a act, iuni la ^ nt^amplare](https://reader033.vdocuments.us/reader033/viewer/2022041615/5e3af03735a6154f195e2205/html5/thumbnails/38.jpg)
Automatizarea depanarii
Dupa automatizarea detect, iei ⇒ sprijinul ın localizarea erorilor
Minimizarea intrarilor de eroareprin cautare binara, determinand jumatatea de intrare care
cauzeaza eroarea (ex. ın cazul programelor cu intrari fis, iere)
Minimizarea diferent,elor ıntre o rulare corecta s, i una eronatatot cautare binara, pentru doua intrari cat mai apropiate
Localizarea erorilor ın spat, iucomparand starea de execut, ie ıntre rulari corecte s, i eronatedetectand (precis sau statistic) invariant, i/tipare corecte, violate
de execut, ia eronata
Localizarea erorilor ın timpprin compararea secvent,elor eronate s, i identificarea punctelor
ın care variabile infectate ıncep sa difere / afecteze ies, irea
Delta debugging [Zeller]: implementare part, ial automata a acestora
![Page 39: 2019 - Politehnica University of Timișoaralabs.cs.upt.ro/~oose/uploads/VVS/cursVVS10.pdf · 2019-11-26 · Exemplu: Test monkeys Utilitare automate care execut a act, iuni la ^ nt^amplare](https://reader033.vdocuments.us/reader033/viewer/2022041615/5e3af03735a6154f195e2205/html5/thumbnails/39.jpg)
Automatizarea depanarii
Dupa automatizarea detect, iei ⇒ sprijinul ın localizarea erorilor
Minimizarea intrarilor de eroareprin cautare binara, determinand jumatatea de intrare care
cauzeaza eroarea (ex. ın cazul programelor cu intrari fis, iere)
Minimizarea diferent,elor ıntre o rulare corecta s, i una eronatatot cautare binara, pentru doua intrari cat mai apropiate
Localizarea erorilor ın spat, iucomparand starea de execut, ie ıntre rulari corecte s, i eronatedetectand (precis sau statistic) invariant, i/tipare corecte, violate
de execut, ia eronata
Localizarea erorilor ın timpprin compararea secvent,elor eronate s, i identificarea punctelor
ın care variabile infectate ıncep sa difere / afecteze ies, irea
Delta debugging [Zeller]: implementare part, ial automata a acestora
![Page 40: 2019 - Politehnica University of Timișoaralabs.cs.upt.ro/~oose/uploads/VVS/cursVVS10.pdf · 2019-11-26 · Exemplu: Test monkeys Utilitare automate care execut a act, iuni la ^ nt^amplare](https://reader033.vdocuments.us/reader033/viewer/2022041615/5e3af03735a6154f195e2205/html5/thumbnails/40.jpg)
Automatizarea depanarii
Dupa automatizarea detect, iei ⇒ sprijinul ın localizarea erorilor
Minimizarea intrarilor de eroareprin cautare binara, determinand jumatatea de intrare care
cauzeaza eroarea (ex. ın cazul programelor cu intrari fis, iere)
Minimizarea diferent,elor ıntre o rulare corecta s, i una eronatatot cautare binara, pentru doua intrari cat mai apropiate
Localizarea erorilor ın spat, iucomparand starea de execut, ie ıntre rulari corecte s, i eronatedetectand (precis sau statistic) invariant, i/tipare corecte, violate
de execut, ia eronata
Localizarea erorilor ın timpprin compararea secvent,elor eronate s, i identificarea punctelor
ın care variabile infectate ıncep sa difere / afecteze ies, irea
Delta debugging [Zeller]: implementare part, ial automata a acestora
![Page 41: 2019 - Politehnica University of Timișoaralabs.cs.upt.ro/~oose/uploads/VVS/cursVVS10.pdf · 2019-11-26 · Exemplu: Test monkeys Utilitare automate care execut a act, iuni la ^ nt^amplare](https://reader033.vdocuments.us/reader033/viewer/2022041615/5e3af03735a6154f195e2205/html5/thumbnails/41.jpg)
Program slicing
= calculul fragmentului de program care poate afecta valorileıntr-un anumit punct de interes (slicing criterion; ex. numevariabila + linie sursa)
Tehnica folosita ın toate abordarile de depanare automata,inspirata din act, iunile mentale ale depanatorului uman [Weiser ’79]
bazata pe urmarirea tranzitiva a dependent,elor– de date (valoarea lui y depinde de a lui x)– de control (valoarea lui y depinde de o condit, ie ın x)
![Page 42: 2019 - Politehnica University of Timișoaralabs.cs.upt.ro/~oose/uploads/VVS/cursVVS10.pdf · 2019-11-26 · Exemplu: Test monkeys Utilitare automate care execut a act, iuni la ^ nt^amplare](https://reader033.vdocuments.us/reader033/viewer/2022041615/5e3af03735a6154f195e2205/html5/thumbnails/42.jpg)
Program slicing
= calculul fragmentului de program care poate afecta valorileıntr-un anumit punct de interes (slicing criterion; ex. numevariabila + linie sursa)
Tehnica folosita ın toate abordarile de depanare automata,inspirata din act, iunile mentale ale depanatorului uman [Weiser ’79]
bazata pe urmarirea tranzitiva a dependent,elor– de date (valoarea lui y depinde de a lui x)– de control (valoarea lui y depinde de o condit, ie ın x)
![Page 43: 2019 - Politehnica University of Timișoaralabs.cs.upt.ro/~oose/uploads/VVS/cursVVS10.pdf · 2019-11-26 · Exemplu: Test monkeys Utilitare automate care execut a act, iuni la ^ nt^amplare](https://reader033.vdocuments.us/reader033/viewer/2022041615/5e3af03735a6154f195e2205/html5/thumbnails/43.jpg)
Program slicing
Tipuri de slicing:
– static (conservator, pe sursa)sau dinamic (precis, pe o execut, ie anume)
– ınainte (ce va fi afectat de starea curenta?)sau ınapoi (ce a produs starea curenta?)
– dupa nivelul de precizie al potent, ialelor dependent,e considerate
– executabil (program simplificat de sine statator) sau nu, etc.