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. | ||