|
Erori in interpretorul limbajului sail daniel Cioata
|
tarix | 30.10.2017 | ölçüsü | 476 b. | | #21991 |
|
Erori in interpretorul limbajului SAIL
Despre… LRG - din 1999 se ocupa cu inspectia codului programelor
- principalul scop: calitatea proiectarii programelor orientate pe obiecte
- tehnici si metode de analiza statica
- implementate intr-o larga varietate de limbaje
- in 2002 s-a definit limbajul SAIL
- Cristina Marinescu, Radu Marinescu, Tudor Gîrba
SAIL - se lucreaza si in prezent
- doreste sa unifice modalitatile de exprimare ale diferitelor metode inrudite de analiza statica
- usurinta programarii prin similaritate cu alte limbaje existente (Java, Sql)
Erori in implementarea limbajului SAIL ! Interpretorul SAIL este inca imatur Va suferi modificari in intervalul de timp urmator - exemplu : refactorizarea pentru o mai buna performanta de timp
Initial interpretorul nu dispunea de nici un test - orice modificare facuta putea afecta corectitudinea interpretorului
- eroarea nu putea fi depistata imediat dupa aparitia ei
Am realizat o suita de teste pentru eventualele erori - Teste impartite pe categorii in functie de tematica
Principalele categorii de teste Operatii asupra tipurilor elementare Operatii asupra tipurilor compuse - lucrul cu structuri
- lucrul cu colectii
Lucrul cu instructiunile limbajului
Operatii asupra tipurilor elementare Tipurile int si real - operatii primitive: adunare, scadere, inmultire, impartire
- respectarea prioritatii intre operatiile primitive
- testarea unei atribuiri
Tipul boolean - operatii logice: si, sau
- instructiunea if
- atribuire
- condition = ((age>25) && (redHat==true));
Tipul string - respectarea ordonarii sirurilor: “abc”<“abd”
- operatia de concatenare a sirurilor:
- sir = “Unu”+”Doi”;
- … rezultatul era sirul vid
Tipuri compuse: Structuri Doua metode de abordare: - operatii de baza
- accesarea campurilor
Operatii de baza: - initializarea automata cu valori predefinite
- listarea unei structuri
- compararea a 2 structuri
- referintele nu erau retinute corect:
- firstAddress = setAddress("Aleea Zambilelor",2,10);
- secondAddress = setAddress("Aleea Macului",3,2);
- firstPerson = setPerson(“Dani",21,false,firstAddress);
- secondPerson = setPerson(“Adi",34,true,secondAddress);
- output firstPerson ( Adi, 34, true,(Aleea Macului,3,2))
- output secondPerson( Adi, 34, true,(Aleea Macului,3,2))
Accesarea campurilor unei structuri: - folosirea operatorului punct pentru a accesa campurile
- compararea campurilor a doua structuri
Tipuri compuse: Colectii Sunt foarte folosite in SAIL Doua cai de testare: - operatii de baza
- operatii specifice
Operatii de baza: - creare
- uniune, intersectie, diferenta
- iterare
Operatii specifice colectiilor: - compararea colectiilor
- aflarea numarului de elemente
- produsul cartezian, operatie specifica SAIL
- prodCart = select (*) from cart(Colectia1,Colectia2);
- …prodCart nu continea toate aranjamentele dintre cele doua colectii date ca parametru
Lucrul cu instructiunile limbajului Principalele instructiuni: - iterate
- iterate (man,iterator) {
- manNames=manNames+iterator.name;
- }
- select
- specificarea unor campuri pentru selectare
- secondMan=select (name, age, hasJob) from man;
- selectarea unor elemente dintr-o colectie cu filtru
- wom=select (*) from woman where Fiter(age,29);
- if/else
- if (firstPerson.name==“Dani”) {
- output firstPerson;
- }
- else { output “Eroare !” }
Lucrul cu functii Testarea functiilor - definire
- apel
- structura de baza a unei functii
- valoarea returnata, transmiterea de parametri
- overloading
- referintele nu erau retinute corect
Specificatii corecte ? “Comparatia dintre elementele unei structuri se refera la valorile lor si nu la identitatea lor fizica” In urma testelor a rezultat ca comparatia se face prin referinta ! “Produsul cartezian dintre o colectie si ea insasi nu este posibil” Person[] col1,col2; . . . . . col1=col2; cartCol=select (*) from cart(col1,col2);
Concluzii si dezvoltari ulterioare Test – un program SAIL - usor de inteles
- ruleaza rapid
- nu este necesara prezenta unui mediu special
- Au fost depistate erori de implementare
- In urma modificarilor viitoare aspura interpretorului limbajului SAIL, dupa aplicarea testelor, se pot identifica imediat eventualele erori aparute
2 tipuri de testare - black box: testare functionala
- glass box:testarea automatizata cu biblioteca JUNIT
testarea functionala dublata de testarea automatizata
Intrebari, va rog...
Dostları ilə paylaş: |
|
|