Differences

This shows you the differences between two versions of the page.

Link to this comparison view

tsc:laboratoare:laborator-09 [2024/02/29 14:40]
127.0.0.1 external edit
tsc:laboratoare:laborator-09 [2025/05/12 13:42] (current)
matei.calugaru [Fuzz testing]
Line 3: Line 3:
 ==== Regression testing ==== ==== Regression testing ====
  
-Testarea prin regresie este un tip de testare folosit pentru a determina o bucată de cod nouă va avea afecta negativ alte părți ale codului pe care nu le modifica ​în mod direct. În mod normal, atunci când introducem cod nou într-un modul al unui proiect, există teste unitare care verifică buna funcționare a modulului respectiv. Slăbicunea acestei metode este că nu verifică și posibilele efecte laterale ale noului modul. Astfel, testarea prin regresie este caracterizată prin testarea noului modul în contextul întregului proiect.+Testarea prin regresie este un tip de testare folosit pentru a determina ​dacă o bucată de cod nouă va afecta negativ alte părți ale codului pe care nu le modifică ​în mod direct. În mod normal, atunci când introducem cod nou într-un modul al unui proiect, există teste unitare care verifică buna funcționare a modulului respectiv. Slăbicunea acestei metode este că nu verifică și posibilele efecte laterale ale noului modul. Astfel, testarea prin regresie este caracterizată prin testarea noului modul în contextul întregului proiect.
  
 Testare prin regresie poate fi făcută în 3 moduri: Testare prin regresie poate fi făcută în 3 moduri:
Line 13: Line 13:
  
 === Retest all === === Retest all ===
-Cea mai costisitoare metodă, implică rerularea tuturor testelor aferente proiectului. Este de dorit să evităm această metodă pe cât posibil deoarece cosnumă foarte mult timp și resurse.+Cea mai costisitoare metodă, implică rerularea tuturor testelor aferente proiectului. Este de dorit să evităm această metodă pe cât posibil deoarece cosnumă foarte mult timp și foarte multe resurse ​resurse.
 === Regression test selection === === Regression test selection ===
 Implică împărțirea testelor deja existente în suită în 2 categorii: cele care pot fi rulate pentru regresie și cele care nu sunt necesare pentru testarea prin regresie. Implică împărțirea testelor deja existente în suită în 2 categorii: cele care pot fi rulate pentru regresie și cele care nu sunt necesare pentru testarea prin regresie.
Line 72: Line 72:
 Pentru acest laborator vom folosi fuzzer-ul atheris. Pentru acest laborator vom folosi fuzzer-ul atheris.
 <note tip><​code teraterm>​ <note tip><​code teraterm>​
-$pip install atheris+Atheris supports Linux (32- and 64-bit) and Mac OS X, Python versions 3.6-3.11.
 </​code></​note>​ </​code></​note>​
  
 +<note tip><​code teraterm>​
 +$pip install atheris
 +</​code></​note>​
  
  
Line 98: Line 101:
 {{:​tsc:​laboratoare:​result_atheris.jpeg?​600|}} {{:​tsc:​laboratoare:​result_atheris.jpeg?​600|}}
  
-În același fișier în care se află executabilul atheris va genera un nou fișier text cu numele hash-ului generat, în care va scrie input-urile care au dus la generarea erorilor. În cazul de mai sus va crea dun fișier care conține doar cuvântul "​bad"​+În același fișier în care se află executabilul atheris va genera un nou fișier text cu numele hash-ului generat, în care va scrie input-urile care au dus la generarea erorilor. În cazul de mai sus va crea un fișier care conține doar cuvântul "​bad"​.
  
 Pentru a-i putea spune lui atheris care părți din cod trebuie instrumentate. Pentru a face acest lucru avem 3 opțiuni: Pentru a-i putea spune lui atheris care părți din cod trebuie instrumentate. Pentru a face acest lucru avem 3 opțiuni:
Line 123: Line 126:
  
 ==== Exerciții ==== ==== Exerciții ====
-0) Citiți documentația pentru atheris: [[https://​github.com/​google/​atheris]] 
  
-1) Pentru ​început, scrieți o colecție de 5 funcții care pot genera excepții în cazul datelor de intrare eronate ​și scrieți teste pentru fiecare funcțieFolosiți atheris pentru a depista inputurile care ar putea genera erori+Pentru ​a clona [[https://​github.com/​cs-pub-ro/​systems-testing | repo-ul]] ​și a accesa resursele aferente laboratorului:​ 
 + 
 +<code bash> 
 +student@tsc:​~$ git clone git@github.com:​cs-pub-ro/​systems-testing.git 
 +student@tsc:​~$ cd systems-testing/​laboratories 
 +student@tsc:​~/​laboratories$ cd system-reg-fuzz-testing 
 +</​code>​ 
 + 
 +Dacă aveți local [[https://​github.com/​cs-pub-ro/​systems-testing | repo-ul]], asigurați-vă că aveți ultima versiune. 
 + 
 +<code bash> 
 +student@tsc:​~$ cd systems-testing 
 +student@tsc:​~$ git pull 
 +</​code>​
  
-2) Pentru aceleași funcții de mai sus, creați încă ​un set de teste de regresiegenerați primul output de referință, apoi alterați testele și analizați mesajele de eroare.+Dacă folosiți un fork al repo-uluiasigurați-vă că este sincronizat cu repo-ul principal.
  
 +TODO-urile sunt scrise pentru fiecare exercitiu in repo.
  
  
tsc/laboratoare/laborator-09.1709210427.txt.gz · Last modified: 2024/05/14 23:51 (external edit)
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0