Generovanie testov softvérových systémov


Základné informácie:

  • Meno Študenta: Bc. Ákos Czére
  • Názov Práce: Generovanie testov softvérových systémov
  • Meno Školitela: doc. Ing. Ivan Polášek, PhD.
  • Email Študenta: czere7@uniba.sk
Ákos Czére

Anotácia:

 Jednou z dôležitých etáp pri vývoji softvérových systémov je aj ich testovanie.


Cieľ Práce:

 Cieľom tejto diplomovej práce je navrhnúť postup generovania testov k existujúcemu zdrojovému kódu pomocou umelej inteligencie, pričom sa využije sada podobných kolekcií už existujúcich testov alebo šablón; testy budú vytvárané vo forme blokov try–catch, pomocou funkcie assert() alebo štandardných podmienok. Súčasťou práce je aj návrh spôsobu kontroly pokrytia testov na základe analýzy zdrojového kódu alebo prípadov použitia a následné vyhodnotenie ich účinnosti z hľadiska kvality a úplnosti testovania.


Denník - projektový seminár 1

Progres za prvý týždeň:

 Prvý týždeň som sa oboznámil s témou diplomovej práce a venoval som sa štúdiu odborných článkov zameraných na generovanie unit testov pomocou umelej inteligencie. V tejto etape som sa sústredil najmä na prístupy, ktoré nevyužívajú tzv. Large Language Models (LLM), aby som získal prehľad o tradičných AI technikách aplikovaných v oblasti automatizovaného testovania.

Nájdené články:


Progres za druhý týždeň:

 Druhý týždeň som sa zameral na preštudovanie odborných článkov týkajúcich sa generovania unit testov pomocou LLM. Cieľom bolo získať prehľad o súčasných možnostiach a prístupoch, ktoré tieto modely ponúkajú pri automatizovanom testovaní softvéru, ako aj porovnať ich výhody a obmedzenia v porovnaní s tradičnými metódami.

Nájdené články:


Progres za tretí týždeň:

  V treťom týždni som sa zameral na vyhľadávanie verejne dostupných GitHub repozitárov, ktoré obsahujú zdrojové kódy spolu s prislúchajúcimi unit testami. Cieľom bolo získať vhodné dátové zdroje, ktoré by mohli poslúžiť ako referenčný materiál pre analýzu, trénovanie modelov alebo overenie postupov generovania testov pomocou umelej inteligencie.

Nájdené repozitáre:


Progres za štvrtý týždeň:

  V štvrtom týždni som sa podrobnejšie venoval analýze častí „future work“ v relevantných odborných článkoch, ktoré sa zaoberajú generovaním unit testov pomocou umelej inteligencie. Tieto časti mi poskytli cenný pohľad na súčasné obmedzenia existujúcich prístupov a zároveň inšpiráciu pre možné smerovanie mojej vlastnej práce. V tejto fáze som sa tiež intenzívne zamýšľal nad tým, ako by moja diplomová práca mohla priniesť pridanú hodnotu, prípadne ponúknuť originálne riešenia alebo vylepšenia oproti existujúcim prístupom.


Progres za piaty týždeň:

 V piatom týždni som sa zameral na štúdium tutoriálov na YouTube, ktoré sa venovali použitiu techniky Retrieval-Augmented Generation (RAG) na vylepšenie výkonnosti lokálnych LLM. Tieto materiály mi poskytli užitočné poznatky o tom, ako možno efektívne kombinovať externé znalostné zdroje s generatívnymi modelmi. Následne som sa venoval čítaniu dokumentácie k odporúčaným a nájdeným knižniciam, ktoré implementujú alebo podporujú RAG, aby som lepšie porozumel ich možnostiam a zvážil ich potenciálne využitie v rámci diplomovej práce.


Progres za šiesty týždeň:

V šiestom týždni som sa venoval vývoju prvého prototypu založeného na technike Retrieval-Augmented Generation (RAG). Cieľom bolo prakticky overiť fungovanie tejto metódy v kontexte generovania testov a získať skúsenosti s jej implementáciou. Programovanie prototypu mi umožnilo hlbšie pochopiť jednotlivé komponenty RAG architektúry, ako aj identifikovať možné úskalia a oblasti, ktoré bude potrebné ďalej optimalizovať alebo rozšíriť. Rozhodol som sa primárne použiť knižnice Ollama a LangChain.


Progres za siedmy týždeň:

V siedmom týždni som sa zameral na štúdium technológie fine-tuningu veľkých jazykových modelov. Podobne ako v prípade RAG, som si pozrel viaceré YouTube tutoriály, ktoré sa venovali praktickému využitiu fine-tuningu, a zároveň som sa podrobne oboznámil s dokumentáciou k odporúčaným a použitým knižniciam a frameworkom. Cieľom bolo získať prehľad o možnostiach prispôsobenia modelov na konkrétne úlohy a pochopiť technické požiadavky a postupy potrebné na úspešnú realizáciu fine-tuningu v rámci mojej diplomovej práce. Rozhodol som sa primárne použiť package PyTorch a Unsloth, ktorý umožní fine-tuning na konzúmerských grafických kartách, nie len pomocou technológie QLoRA, ale aj viacerými inými optimalizáciami a odporúčanými nastaveniami.


Progres za ôsmi týždeň

V ôsmom týždni som vytvoril prvý prototyp programu, ktorý umožňuje používateľovi spustiť proces fine-tuningu pre lokálny LLM, alebo použiť už fine-tunovaný lokálnuy model na inferenciu. Tento nástroj predstavuje základný pilier praktickej časti diplomovej práce, keďže umožňuje experimentovanie s prispôsobením modelu na konkrétne dáta a následné generovanie výstupov na základe naučených vzorov.


Progres za deviaty týždeň

V deviatom týždni som sa venoval príprave prezentácie, v ktorej som zhrnul najdôležitejšie informácie ohľadom mojej diplomovej práci, ako napríklad doterajšie pokroky, použité technológie, frameworky a knižnice, plány do budúcna atď. Tiež som začal pripraviť a vypracovať LaTeX kostru diplomovej práci.




Denník - projektový seminár 2

Progres za prvý týždeň:

  Výrazná časť semestra bola venovaná štúdiu prác o LLM-agentoch, autonómnych systémoch a možnostiach automatizovaného generovania testov. Preskúmal som frameworky ako LangChain , LangGraph a rôzne RAG architektúry.


Progres za druhý týždeň:

  Otestoval som viacero LLM backendov a nakoniec som zvolil Ollama pre lokálne inferencie a GraphRAG pre kontextové vyhľadávanie na úrovni projektu. Prebiehalo testovanie výkonu a kompatibility.


Progres za tretí týždeň:

  Navrhol som kompletnú 8-uzlovú pipeline v LangGraphe , definoval som úlohy jednotlivých uzlov a dátové toky medzi agentmi. Tento návrh predstavoval základ pre ďalšiu implementáciu.


Progres za štvrtý týždeň:

 Implementácia summarization_node – Vytvoril som komponent, ktorý spracováva zdrojové súbory postupne, extrahuje z nich štruktúry a funkcionality a generuje súhrnný opis projektu. Optimalizoval som prompt, aby analýza kódu bola presnejšia.


Progres za piaty týždeň:

 Implementácia grapher_node – Implementoval som uzol, ktorý inicializuje Microsoft GraphRAG a pripája ho k vygenerovanému súhrnnému súboru. Konfiguroval som GraphRAG pre lokálnu prevádzku cez Ollama.


Progres za šiesty týždeň:

 Implementácia stub_ideas_node – Implementoval som komponent, ktorý sa dotazuje GraphRAG na relevantné objekty + používa tradicionálny RAG a generuje štruktúrované návrhy testovacích scenárov. Definoval som formát pre generované testovacie stuby.


Progres za siedmy týždeň:

 Implementácia test_writer_node – Vytvoril som agenta, ktorý premieňa testovacie scenáre na skutočný testovací kód, primárne vo forme unit testov. Riešil som správnu štruktúru a konzistentnosť so zdrojovým kódom.


Progres za ôsmi týždeň

 Implementácia validator_node – Implementoval som validačný uzol, ktorý analyzuje vygenerované testy, hľadá chyby, chýbajúce importy, nekorektnú logiku a ďalšie problémy. Navrhol som slučku spätnej väzby pre iteratívnu úpravu.


Progres za deviaty týždeň

 Implementácia test_rewriter_node – Tento uzol sa spúšťa pri neúspešnej validácii. Prepíše testy na základe spätnej väzby z validačného uzla a odošle ich späť na opätovnú kontrolu. Výrazne to zvýšilo úspešnosť generovaných testov.


Progres za desiaty týždeň

 Implementácia test_saver_node a save_all_tests_node – Implementoval som moduly zodpovedné za ukladanie otestovaných a validovaných testov, resetovanie zdieľaného agentového stavu a zjednocovanie testov pomocou deterministického post-procesora.


Progres za jedeásty a dvanásty týždeň

 Venoval som dva týždne písaniu prvých strán diplomovej práce, najmä úvodu, výskumu, teoretického základu a popisu architektúry systému.




[1] GKIKOPOULI, Marios; BATAA, Batjigdrel. Empirical Comparison Between Conventional and AI-based Automated Unit Test Generation Tools in Java. 2023.

[2] PASTERNAK, Benny; TYSZBEROWICZ, Shmuel; YEHUDAI, Amiram. GenUTest: a unit test and mock aspect generation tool. International journal on software tools for technology transfer, 2009, 11: 273-290.

[3] LOPS, Andrea, et al. A system for automated unit test generation using large language models and assessment of generated test suites. In: 2025 IEEE International Conference on Software Testing, Verification and Validation Workshops (ICSTW). IEEE, 2025. p. 29-36.

[4] PAN, Rangeet, et al. Multi-language unit test generation using llms. arXiv preprint arXiv:2409.03093, 2024.

Aktuálny zoznam zdrojov vo formáte bibtex z aktuálnej verzie práce:

@misc{gkikopouli2023empirical, title={Empirical Comparison Between Conventional and AI-based Automated Unit Test Generation Tools in Java}, author={Gkikopouli, Marios and Bataa, Batjigdrel}, year={2023} }

@inproceedings{lops2025system, title={A system for automated unit test generation using large language models and assessment of generated test suites}, author={Lops, Andrea and Narducci, Fedelucio and Ragone, Azzurra and Trizio, Michelantonio and Bartolini, Claudio}, booktitle={2025 IEEE International Conference on Software Testing, Verification and Validation Workshops (ICSTW)}, pages={29--36}, year={2025}, organization={IEEE} }

@article{pan2024multi, title={Multi-language unit test generation using llms}, author={Pan, Rangeet and Kim, Myeongsoo and Krishna, Rahul and Pavuluri, Raju and Sinha, Saurabh}, journal={arXiv preprint arXiv:2409.03093}, year={2024} }

@inproceedings{fraser2011evosuite, title={Evosuite: automatic test suite generation for object-oriented software}, author={Fraser, Gordon and Arcuri, Andrea}, booktitle={Proceedings of the 19th ACM SIGSOFT symposium and the 13th European conference on Foundations of software engineering}, pages={416--419}, year={2011} }

@article{wang2024software, title={Software testing with large language models: Survey, landscape, and vision}, author={Wang, Junjie and Huang, Yuchao and Chen, Chunyang and Liu, Zhe and Wang, Song and Wang, Qing}, journal={IEEE Transactions on Software Engineering}, volume={50}, number={4}, pages={911--936}, year={2024}, publisher={IEEE} }

@article{jin2024llms, title={From llms to llm-based agents for software engineering: A survey of current, challenges and future}, author={Jin, Haolin and Huang, Linghan and Cai, Haipeng and Yan, Jun and Li, Bo and Chen, Huaming}, journal={arXiv preprint arXiv:2408.02479}, year={2024} }

@article{andrzejewski2025automated, title={Automated Test Generation Using Large Language Models}, author={Andrzejewski, Marcin and Dubicka, Nina and Podolak, J{\k{e}}drzej and Kowal, Marek and Si{\l}ka, Jakub}, journal={Data}, volume={10}, number={10}, pages={156}, year={2025}, publisher={MDPI} }

@inproceedings{pan2025aster, title={Aster: Natural and multi-language unit test generation with llms}, author={Pan, Rangeet and Kim, Myeongsoo and Krishna, Rahul and Pavuluri, Raju and Sinha, Saurabh}, booktitle={2025 IEEE/ACM 47th International Conference on Software Engineering: Software Engineering in Practice (ICSE-SEIP)}, pages={413--424}, year={2025}, organization={IEEE} }

@inproceedings{pasternak2007genutest, title={Genutest: a unit test and mock aspect generation tool}, author={Pasternak, Benny and Tyszberowicz, Shmuel and Yehudai, Amiram}, booktitle={Haifa Verification Conference}, pages={252--266}, year={2007}, organization={Springer} }

@article{gao2023retrieval, title={Retrieval-augmented generation for large language models: A survey}, author={Gao, Yunfan and Xiong, Yun and Gao, Xinyu and Jia, Kangxiang and Pan, Jinliu and Bi, Yuxi and Dai, Yixin and Sun, Jiawei and Wang, Haofen and Wang, Haofen}, journal={arXiv preprint arXiv:2312.10997}, volume={2}, number={1}, year={2023} }

@article{han2024retrieval, title={Retrieval-augmented generation with graphs (graphrag)}, author={Han, Haoyu and Wang, Yu and Shomer, Harry and Guo, Kai and Ding, Jiayuan and Lei, Yongjia and Halappanavar, Mahantesh and Rossi, Ryan A and Mukherjee, Subhabrata and Tang, Xianfeng and others}, journal={arXiv preprint arXiv:2501.00309}, year={2024} }

@article{khelladi2025unify, title={Unify and Triumph: Polyglot, Diverse, and Self-Consistent Generation of Unit Tests with LLMs}, author={Khelladi, Djamel Eddine and Reux, Charly and Acher, Mathieu}, journal={arXiv preprint arXiv:2503.16144}, year={2025} }




Súbory na stiahnutie

Najaktuálnejšia verzia Diplomovej práce
Zdrojové súbory (zip)
Prezentácia (12.12.2025)