Abstract : | Στη σύγχρονη µηχανιϰή λογισµιϰού, η αποδοτιϰή αναγνώριση σχετιϰού ϰώδιϰα εντός µεγάλων αποϑετηρίων (repositories) έχει γίνει ολοένα ϰαι πιο δύσϰολη λόγω της αυξανόµενης πολυπλοϰότητας ϰαι ϰλίµαϰας των βάσεων για ϰώδιϰα. Στόχος αυτής της διπλωµατιϰής εργασίας είναι η ανάπτυξη µιας λύσης ιϰανής να παράγει αρχεία ϰώδιϰα που σχετίζονται µε συγϰεϰριµένα προγραµµατιστιϰά αρχεία εντός ενός αποϑετηρίου, χωρίς την ανάγϰη εξαντλητιϰής ανάλυσης του αποϑετηρίου στο σύνολό του για την εύρεση των πιο σχετιϰών αρχείων. Αυτή η µέϑοδος αξιοποιεί πολλαπλούς παράγοντες, όπως η τεϰµηρίωση (όπου είναι διαϑέσιµη), οι εισαγωγές βιβλιοϑηϰών, οι ϰλήσεις συναρτήσεων ϰαι τα ονόµατα µεταβλητών, για να αποµονώσει δυναµιϰά τα σχετιϰά αρχεία.Η αναπτυχϑείσα λύση, AutoTestLab, βασίζεται σε αυτήν την ιϰανότητα αυτοµατοποίησης της δηµιουργίας, εϰτέλεσης ϰαι επιϰύρωσης µονάδων δοϰιµών για τα αναγνωρισµένα αρχεία. Με την ενσωµάτωση Μεγάλων Γλωσσιϰών Μοντέλων (LLMs), το AutoTestLab ϰαταφέρνει να βελτιστοποιήσει τη δηµιουργία δοϰιµών χρησιµοποιώντας few-shot learning, βελτιώνοντας την αϰρίβεια των δοϰιµών αϰόµη ϰαι για ϰώδιϰες µε περιορισµένη τεϰµηρίωση. Η παρούσα διπλωµατιϰή εργασία αξιολογεί την απόδοση του AutoTestLab µέσω πειραµάτων που πραγµατοποιήϑηϰαν σε βιβλιοϑήϰες Apache Commons, αποδειϰνύοντας την ιϰανότητά του να διαχειρίζεται σύνϑετους ϰώδιϰες ϰαι να δηµιουργεί αυτόµατα αξιόπιστα unit tests. Η προσέγγιση συνδυάζει τεχνιϰέςδηµιουργίας ϰώδιϰα σε επίπεδο αποϑετηρίου ϰαι δυναµιϰή επιϰύρωση δοϰιµών για να εξασφαλίσει υψηλή ϰάλυψη ϰαι ποσοστά επιτυχίας.Παρά τα υποσχόµενα αποτελέσµατα στην ϰάλυψη των δοϰιµών ϰαι την αποτελεσµατιϰότητα, το σύστηµα αποϰαλύπτει προϰλήσεις, όπως η διαχείριση πιο σύνϑετων, αλληλοεξαρτώµενων παϰέτων ϰαι η ϰλιµάϰωση σε µεγαλύτερα σύνολα δεδοµένων. Μελλοντιϰές έρευνες ϑα επιϰεντρωϑούν στην επέϰταση του συνόλου δεδοµένων, στην ενσωµάτωση της δηµιουργίας µε επαυξηµένη ανάϰτηση (Retrieval-Augmented Generation - RAG) ϰαι στη βελτίωση της προσαρµοστιϰότητας του συστήµατος σε ένα ευρύτερο φάσµα περιβαλλόντων λογισµιϰού. In modern software engineering, efficiently identifying relevant code within large repositories has become increasingly challenging due to the growing complexity and scale of codebases. The objective of this thesis is to develop a solution capable of generating code files relevant to specific coding tasks within a repository, without the need for exhaustive repository-wide parsing to find the most relevant code archives. This method leverages multiple factors, including documentation (when available), library imports, function calls, and variable names, to isolate relevant files dynamically.The developed solution, AutoTestLab, builds upon this capability by automating the generation, execution, and validation of unit tests for the identified files. By integrating Large Language Models (LLMs), AutoTestLab is able to streamline test generation using few-shot learning, which improves test accuracy even for codebases with limited documentation. This thesis evaluates AutoTestLab’s performance through experiments conducted on Apache Commons libraries, demonstrating its capacity to handle complex codebases and automatically generate reliable unit tests. The approach combines repository-level code generation techniques and dynamic test validation to ensure high coverage and pass rates.Despite achieving promising results in test coverage and efficiency, the system reveals challenges, such as handling more complex, interdependent packages and scaling across larger datasets. Future work will focus on expanding the dataset, incorporating Retrieval-Augmented Generation (RAG), and enhancing the system’s adaptability across a broader range of software environments.
|
---|