English version  


CNCSIS

Modulul ECHOS

1.2 Extragerea, filtrarea si verificarea de invarianti din suite de teste

Reamintim ca urma activitatilor realizate anul precedent a fost dezvoltat un plugin Eclipse denumit DaikonAdapter. In esenta, acest instrument prototip permite programatorului adnotarea codului sursa cu invarianti (la nivel de metoda si clasa) prin rularea instrumentului Daikon [Ernst07] pornind de la o metoda main (suita de teste) indicata de programator.

In cadrul anului curent, prototipul initial a fost rafinat si redenumit cu numele de ECHOS. Una dintre rafinarile esentiale realizate vizeaza o limitare importanta a instrumentului Daikon: acesta nu este capabil sa surprinda invarianti pentru o clasa si metodele sale in contextul relatiei de mostenire. Mai exact, invariantii extrasi de Daikon pentru metodele unei clase derivate nu includ niciodata valori ale campurilor mostenite de subclasa de la superclasa sa. Aceasta este o limitare extrem de serioasa, din moment ce relatia de mostenire este extrem de importanta pentru analiza sistemelor software orientate pe obiecte.

Pentru eliminarea acestei limitari, ECHOS a fost inzestrat cu urmatoarea facilitate: in momentul rularii unei suite de teste pentru testarea unei clase, ECHOS genereaza automat un cod echivalent pentru respectiva clasa care contine si atributele mostenite de aceasta de la superclasa sa. In continuare instrumentul Daikon este rulat peste aceast cod generat automat. Efectul consta in identificarea de invarianti care contin si valori pentru campuri mostenite. Aceasta rafinare a identificarii de invarianti contribuie la o analiza mai exacta a codului orientat pe obiecte si permite efectuarea unor analize ce nu ar fi posibile altfel.

Ca urmare a acestei rafinari a extragerii de invarianti, am reusit sa inzestram ECHOS cu capabilitati de verificare a corectitudinii suprascrierii unei metode. Pe baza invarintilor identificati in maniera descrisa anterior, si utilizand demonstratorul de teoreme Simplify, ECHOS verifica respectarea relatiilor logice (obligatorii in contextul unei suprascrieri corecte) intre invariantii metodei suprascrise si a celei ce o suprascrie (cea din urma indicata de programator).


Figura 3.3.1 - Plugin Echos

O problema a detectiei de invarianti bazata pe analiza dinamica consta in posibilitatea ca acesti invarianti sa nu fie relevanti datorita utilizarii unei suite de teste insuficienta. Pentru a rezolva aceasta problema am actionat in doua directii: A) Extinderea si integrarea in ECHOS a unui procedeu iterativ de generare a testelor bazata pe acoperire implementata in cadrul unui proiect de diploma in 2007. B) Verificarea invariantilor unei metode poate fi realizata prin analiza statica. ESC/Java este un instrument software care poate fi utilizat in acest sens. Ca urmare am procedat la integrarea acest instrument software in ECHOS. In aceasta maniera programatorul poate determina relevanta invariantilor produsi de Daikon pentru o metoda. In cazul in care se determina ca acestia nu sunt relevanti (nu sunt satisfacuti de metoda in cauza considerand ca ea e corecta) se poate trece la rafinarea suitei de teste pe baza careia au fost produsi (vezi A).

Prin utilizarea complementara a celor doua facilitati puse la dispozitie de ECHOS este posibila rafinarea iterativa a unei suite de teste.

Ultima actualizare: 11 Mai, 2010