This shows you the differences between two versions of the page.
tsc:laboratoare:laborator-09 [2024/05/14 23:51] dragos.isopencu |
tsc:laboratoare:laborator-09 [2025/05/12 13:42] (current) matei.calugaru [Fuzz testing] |
||
---|---|---|---|
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ție. Folosiț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 regresie, generați primul output de referință, apoi alterați testele și analizați mesajele de eroare. | + | Dacă folosiți un fork al repo-ului, asigurați-vă că este sincronizat cu repo-ul principal. |
+ | TODO-urile sunt scrise pentru fiecare exercitiu in repo. | ||