2025-11-21T20:16:16.286197

The Potential of LLMs in Automating Software Testing: From Generation to Reporting

Sherifi, Slhoub, Nembhard
Having a high quality software is essential in software engineering, which requires robust validation and verification processes during testing activities. Manual testing, while effective, can be time consuming and costly, leading to an increased demand for automated methods. Recent advancements in Large Language Models (LLMs) have significantly influenced software engineering, particularly in areas like requirements analysis, test automation, and debugging. This paper explores an agent-oriented approach to automated software testing, using LLMs to reduce human intervention and enhance testing efficiency. The proposed framework integrates LLMs to generate unit tests, visualize call graphs, and automate test execution and reporting. Evaluations across multiple applications in Python and Java demonstrate the system's high test coverage and efficient operation. This research underscores the potential of LLM-powered agents to streamline software testing workflows while addressing challenges in scalability and accuracy.
academic

Das Potenzial von LLMs bei der Automatisierung von Softwaretests: Von der Generierung bis zur Berichterstellung

Grundinformationen

  • Paper-ID: 2501.00217
  • Titel: The Potential of LLMs in Automating Software Testing: From Generation to Reporting
  • Autoren: Betim Sherifi, Khaled Slhoub, Fitzroy Nembhard (Florida Institute of Technology)
  • Klassifizierung: cs.SE (Softwaretechnik), cs.AI (Künstliche Intelligenz)
  • Veröffentlichungsdatum: 31. Dezember 2024
  • Paper-Link: https://arxiv.org/abs/2501.00217

Zusammenfassung

Die Entwicklung hochwertiger Software in der Softwaretechnik erfordert robuste Verifikations- und Validierungsprozesse. Obwohl manuelle Tests wirksam sind, sind sie zeitaufwändig und kostspielig, daher wächst die Nachfrage nach automatisierten Methoden. Jüngste Fortschritte bei großen Sprachmodellen (LLMs) haben die Softwaretechnik erheblich beeinflusst, besonders in den Bereichen Anforderungsanalyse, Testautomatisierung und Debugging. Dieses Paper erforscht einen agentengestützten Ansatz zur automatisierten Softwaretestung, der LLMs nutzt, um menschliche Eingriffe zu reduzieren und die Testeffizienzen zu verbessern. Das vorgeschlagene Framework integriert LLMs zur Generierung von Unit-Tests, zur Visualisierung von Aufrufgraphen und zur Automatisierung der Testausführung und Berichterstellung. Die Evaluierung auf mehreren Anwendungen in Python und Java zeigt, dass das System hohe Testabdeckung und effiziente Ausführung bietet.

Forschungshintergrund und Motivation

Problemdefinition

  1. Kernproblem: Traditionelle Softwaretestmethoden weisen Ineffizienz, hohe Kosten und übermäßige menschliche Eingriffe auf
  2. Praktische Anforderung: Die Softwarequalitätssicherung erfordert umfassende Verifikations- und Validierungsprozesse, aber manuelle Tests können die Effizienzanforderungen der modernen Softwareentwicklung nicht erfüllen

Bedeutungsanalyse

  • Softwaretests gelten als eines der wichtigsten Gebiete in der Softwaretechnik-Ausbildung
  • Manuelle Testmethoden wie Regressionstests sind besonders zeitaufwändig und teuer
  • Die Sicherstellung, dass Softwareprodukte wie erwartet funktionieren und Qualitätsstandards erfüllen, ist für die Softwaretechnik entscheidend

Einschränkungen bestehender Methoden

  • Manuelle Tests: Obwohl wirksam, sind sie zeitaufwändig und kostspielig
  • Traditionelle automatisierte Tests: Können manuelle Methoden nicht vollständig ersetzen; in Szenarien wie GUI-Tests ist menschliche Beteiligung erforderlich
  • Traditionelle agentengestützte Softwaretestung (ABST): Mangelt es an intelligenter Testfall-Generierungsfähigkeit

Forschungsmotivation

Nutzung der starken Fähigkeiten von LLMs in Kombination mit Multi-Agent-Systemen zur Konstruktion eines intelligenten Test-Frameworks, das dynamisch Testfälle generieren, menschliche Eingaben erheblich reduzieren und die Zeit für Testfall-Erstellung und -Ausführung minimieren kann.

Kernbeiträge

  1. Vorschlag eines LLM-basierten Multi-Agent-Softwaretestings-Frameworks, das End-to-End-Automatisierung von Testgenerierung bis Berichterstellung ermöglicht
  2. Entwurf einer vierschichtigen Systemarchitektur, bestehend aus Audio-Web-Client, Softwaretesting-Agent, LLMs und Entwicklungsumgebung
  3. Implementierung dynamischer Testfall-Generierung, die LLMs zur automatischen Generierung angepasster Unit-Tests und Testbegründungen nutzt
  4. Integration von Visualisierungsfunktionen, automatische Generierung von Aufrufgraphen im DOT-Format zur Darstellung von Anwendungsinteraktionen
  5. Validierung der Systemeffektivität, Erreichung hoher Testabdeckung (durchschnittlich 93,45%-97,71%) in Python- und Java-Projekten

Methodische Details

Aufgabendefinition

Eingabe: Testaufforderungen von Benutzern über Sprache oder Text (einschließlich Projektname, Unterordner, Programmiersprache usw.) Ausgabe: Umfassender PDF-Bericht mit Testergebnissen, Abdeckungsanalyse, Testbegründungen und Aufrufgraphen Einschränkungen: Unterstützung für Python- und Java-Projekte, Fokus auf Unit-Test-Ebene

Modellarchitektur

Hochebenen-Architektur

Das System besteht aus vier Hauptkomponenten:

  1. Audio-Web-Client: Erfasst Benutzereingaben (Sprachbefehle oder Text), initiiert Test-Workflow über HTTP-GET-Anfragen
  2. Softwaretesting-Agent: Kernkomponente des Systems, koordiniert Interaktionen zwischen Komponenten, fungiert als Abstraktionsschicht für Testskript-Generierung, -Ausführung und Berichterstellung
  3. Große Sprachmodelle (LLMs): Führen Entitätsextraktion, Testgenerierung und DOT-Graph-Generierungsaufgaben aus
  4. Entwicklungsumgebung: Bietet Zugriff auf Projektcode, führt generierte Testfälle aus und zeigt Ergebnisse an

Niedrigebenen-Architektur-Workflow

  1. Initialisierung: Client sendet Sprachbefehl an Test-Generator-API
  2. Entitätsextraktion: LLM extrahiert Projektname, Unterordner und Programmiersprache aus Benutzereingabe
  3. Dateisuche: FileLocator-Modul lokalisiert angegebenen Projektordner und extrahiert Dateiinhalte
  4. Testgenerierung: LLM (mit Gemini) generiert Unit-Tests und entsprechende Begründungen
  5. Graphgenerierung: LLM generiert DOT-Graph-Strings zur Visualisierung von Aufrufgraphen
  6. Ausführung und Berichterstellung: Test-Executor führt Tests aus, PDF-Report-Generator erstellt umfassenden Bericht mit Ergebnissen, Abdeckung und Aufrufgraphen

Technische Innovationen

  1. Intelligente Entitätsextraktion: Nutzt LLM zur automatischen Extraktion kritischer Testparameter aus natürlichsprachlichen Anweisungen
  2. Dynamische Testgenerierung: Automatische Generierung von Testskripten mit Basis- und Grenzfällen basierend auf Codeanalyse
  3. Begründungsgenerierung: Bereitstellung detaillierter Testbegründungen und Abdeckungsszenariobeschreibungen für jeden Testfall
  4. Integrierte Visualisierung: Automatische Generierung von Aufrufgraphen zur Unterstützung des Verständnisses von Codebase-Interaktionen
  5. End-to-End-Automatisierung: Vollständig automatisierter Prozess von Benutzereingabe bis zum endgültigen Bericht

Experimentelle Einrichtung

Datensatz

Verwendung von vier Anwendungen unterschiedlicher Komplexität:

Python-Projekte:

  • Experiment: Grundlegende Taschenrechnerfunktionalität (47 Codezeilen)
  • Cinema: Kinoverwaltungssystem (183 Codezeilen)

Java-Projekte:

  • StudentAverage: Berechnung von Studentennoten (114 Codezeilen)
  • LibrarySystem: Bibliotheksverwaltungssystem (269 Codezeilen)

Bewertungsmetriken

  1. Ausführungserfolgsquote: Anteil der Durchläufe, die alle Schritte abschließen (Testgenerierung, Ausführung, PDF-Berichterstellung)
  2. Testabdeckung: Prozentsatz des Codes, der durch generierte Testfälle abgedeckt wird
  3. Ausführungszeit: Zeitaufwand-Analyse verschiedener Operationsphasen
  4. Sprachvergleich: Leistungsunterschiede zwischen Python- und Java-Projekten

Implementierungsdetails

  • LLM-Modell: Hauptsächlich Google Gemini, Vergleichsexperimente mit ChatGPT
  • Testdurchläufe: 20 Ausführungen für Python-Projekte, 24 Ausführungen für Java-Projekte
  • Eingabeformat: Tests mit verschiedenen natürlichsprachlichen Prompt-Formaten

Experimentelle Ergebnisse

Hauptergebnisse

Erfolgsquoten-Performance

  • Python-Projekte: Alle 20 Ausführungen erfolgreich (100% Erfolgsquote)
  • Java-Projekte: 3 Ausfälle bei 24 Ausführungen (87,5% Erfolgsquote)
  • Ausfallgründe: Hauptsächlich durch mehrdeutige Prompts und Kompilierungsfehler in generierten Testskripten verursacht

Ausführungszeit-Analyse

  • Durchschnittliche Gesamtausführungszeit: 83,5 Sekunden
  • Testgenerierungszeit: 62,8 Sekunden (größter Anteil)
  • Ordnersuche: 9,7 Sekunden
  • DOT-Graph-Generierung: 5,4 Sekunden
  • Testausführung: 3,2 Sekunden

Sprachvergleich-Ergebnisse

MetrikJavaPython
Durchschnittliche Gesamtausführungszeit86,7s80s
Testgenerierungszeit62,4s63,3s
Testausführungszeit5,44s0,87s
Durchschnittliche Testabdeckung97,71%93,45%

Detaillierte Projektanalyse

ProjektSpracheCodezeilenGesamtzeitTestgenerierungTestausführungAbdeckung
LibrarySystemJava269119,06s92,54s5,39s94,67%
StudentManagerJava11462,55s39,79s5,48s100,00%
CinemaPython183110,13s92,43s0,79s88,30%
ExperimentPython4749,78s34,17s0,96s98,60%

LLM-Vergleichsexperimente

ChatGPT vs. Gemini (LibrarySystem-Projekt):

  • ChatGPT-Generierungszeit: ~180 Sekunden (etwa doppelt so lange wie Gemini)
  • ChatGPT-Testabdeckung: 98%
  • Hinweis: Die Verwendung der ChatGPT-Webanwendung statt API könnte die Generierungszeit beeinflussen

Fallstudienanalyse

Testbegründungs-Beispiele

Cinema-Projekt - rent_movie-Funktion:

  • Basisfall: "Testen Sie die Vermietung eines verfügbaren Films an ein bestehendes Mitglied"
  • Grenzfälle: "Testen Sie die Vermietung eines nicht existierenden Films, die Vermietung an ein nicht existierendes Mitglied, die Vermietung eines bereits vermieteten Films"

Library-Projekt - getTitle-Funktion:

  • Basisfall: "Testen Sie den Abruf des Buchtitels nach Objekterstellung"
  • Grenzfälle: Nicht zutreffend

Verwandte Arbeiten

Traditionelle agentengestützte Softwaretestung (ABST)

  • Entwicklungsverlauf: Seit 1999 beachtet, in den letzten zehn Jahren erheblich angewachsen
  • Anwendungsschwerpunkt: Hauptsächlich auf Systemebenen-Tests konzentriert, Java als Hauptzielsprache
  • Repräsentative Arbeiten:
    • Automatisiertes Test-Framework für Web-Systeme (Multi-Agent-Zusammenarbeit)
    • Industrielle Kaffeemaschinen-Tests (Fuzzy-Logic-Prioritätsordnung)

LLM-gestärkte Softwaretestung

  • Branchenumfrage: 48% der Praktiker haben LLMs bereits in Testaktivitäten integriert
  • Anwendungsbereiche: Anforderungsanalyse, Testplanentwicklung, Testautomatisierung
  • Häufig verwendete Tools: ChatGPT, GitHub Copilot
  • Forschungstrends: Analyse von 102 verwandten Papieren zeigt signifikanten Wert von LLMs bei Testfall-Generierung, Assertions-Erstellung und anderen Aspekten

Schlussfolgerungen und Diskussion

Hauptschlussfolgerungen

  1. Hohe Erfolgsquote: LLM-gesteuerte Agenten zeigen hervorragende Leistung bei der Automatisierung von Softwaretests, 100% Erfolgsquote bei Python-Projekten
  2. Hohe Abdeckung: Durchschnittliche Testabdeckung über 93%, was die Effektivität generierter Testfälle beweist
  3. Effizienzsteigerung: Signifikante Reduzierung menschlicher Eingriffe, End-to-End-Automatisierung von Testgenerierung bis Berichterstellung
  4. Sprachadaptabilität: Framework unterstützt erfolgreich zwei Mainstream-Programmiersprachen Python und Java

Einschränkungen

  1. Java-Projekt-Stabilität: Relativ hohe Ausfallquote bei Java-Ausführung, Verbesserung der Verarbeitung natürlicher Sprache und Syntaxgenauigkeit erforderlich
  2. Testbereichsbeschränkung: Derzeit nur auf Unit-Tests fokussiert, mangelnde Unterstützung für Integrations- und Systemtests
  3. Visualisierungsfunktionalität: Aufrufgraphen sind zwar nützlich, aber es fehlen erweiterte Funktionen wie Heatmap-Abdeckung
  4. Eingabeabhängigkeit: Empfindlich gegenüber Prompt-Qualität, mehrdeutige Prompts können zu Ausfällen führen

Zukünftige Richtungen

  1. Erweiterung von Testtypen: Einführung von Integrations- und Systemtests
  2. Verbesserte Sprachunterstützung: Erweiterung auf mehr Programmiersprachen
  3. Verbesserte Visualisierung: Hinzufügen von Heatmap-Abdeckung für Defekt-Anfälligkeit
  4. Anforderungsintegration: Anforderungsspezifikationsdokumente als Prompt-Eingabe zur Verbesserung der Genauigkeit
  5. Fehlerbehandlung: Verbesserung der Handhabung mehrdeutiger Prompts und Fehlerwiederherstellungsmechanismen

Tiefgreifende Bewertung

Stärken

  1. Hohe Innovativität: Erstmalige systematische Kombination von LLM mit Multi-Agent-Architektur für End-to-End-Softwaretestautomatisierung
  2. Hoher praktischer Wert: Löst praktische Schmerzpunkte im Softwaretestbereich mit starkem Ingenieur-Anwendungswert
  3. Umfassende Experimente: Umfassende Evaluierung über Sprachen und Projekte hinweg mit überzeugenden Ergebnissen
  4. Klare Architektur: Vernünftige Hochebenen- und Niedrigebenen-Architektur-Designs, hoher Modularisierungsgrad, leicht erweiterbar und wartbar

Mängel

  1. Begrenzte Testabdeckung: Nur Unit-Tests unterstützt, kann vollständige Softwaretestanforderungen nicht erfüllen
  2. Unzureichende Fehleranalyse: Begrenzte tiefgreifende Analyse der Ausfallgründe bei Java-Projekten
  3. Fehlende Benchmark-Vergleiche: Mangelnde detaillierte Vergleiche mit bestehenden Automatisierungstesttools
  4. Unverifizierte Skalierbarkeit: Systemskalierbarkeit nicht auf großen komplexen Projekten validiert

Einflussfähigkeit

  1. Akademischer Beitrag: Bietet neue Forschungsrichtung für LLM-Anwendungen in der Softwaretechnik
  2. Praktischer Wert: Kann direkt in Softwareentwicklungsprozesse angewendet werden, verbessert Testeffizienzen
  3. Technologie-Förderung: Zeigt enormes Potenzial von LLMs im Automatisierungstestbereich
  4. Reproduzierbarkeit: Detaillierte Architekturbeschreibung ermöglicht anderen Forschern Reproduktion und Verbesserung

Anwendungsszenarien

  1. Mittelgroße Projekte: Besonders geeignet für Projekte mit Codegröße unter einigen hundert Zeilen
  2. Unit-Test-Automatisierung: Kann manuelle Unit-Test-Schreibarbeit erheblich reduzieren
  3. Schnelle Prototyp-Validierung: Geeignet für Szenarien, die schnelle Testfall-Generierung erfordern
  4. Bildung und Training: Kann in Softwaretestunterricht und Schulungsszenarien verwendet werden

Literaturverzeichnis

Das Paper zitiert 13 wichtige Referenzen, die traditionelle ABST-Methoden, LLM-Anwendungen in Softwaretests und grundlegende Softwaretesttheorie abdecken und eine solide theoretische Grundlage für die Forschung bieten.


Gesamtbewertung: Dies ist ein Forschungspapier von bedeutendem Wert im Schnittstellenbereich von Softwaretechnik und künstlicher Intelligenz. Obwohl es einige Einschränkungen gibt, eröffnet sein innovativer Ansatz und praktische Ergebnisse neue Richtungen für LLM-Anwendungen in der Softwaretestautomatisierung und bietet guten akademischen Wert und praktische Perspektiven.