Risk Based Software Test Prioritization Using Machine Learning Defect Prediction on Five Open Source Repositories
Dieses Paper legt eine fatale Label-Feature-Zirkularität in der standardmäßigen risikobasierten Softwareprüfung offen, die die Leistung des maschinellen Lernens künstlich aufbläht, und schlägt anschließend ein rigoroses Protokoll unter Verwendung von Leaky-Feature-Entfernung und strenger Evaluierung vor, um eine bescheidene, aber statistisch robuste Verbesserung von 3,64 % gegenüber starken Baselines nachzuweisen, während gleichzeitig aufgezeigt wird, dass diese Modelle temporal nicht generalisieren können.
Originalarbeit lizenziert unter CC BY 4.0 (https://creativecommons.org/licenses/by/4.0/). Dies ist eine KI-generierte Erklärung des untenstehenden Papers. Sie wurde nicht von den Autoren verfasst oder gebilligt. Für technische Genauigkeit konsultieren Sie das Originalpaper. Vollständigen Haftungsausschluss lesen
In der weiten, sich ständig wandelnden Landschaft der modernen Softwareentwicklung wird Code in einer Geschwindigkeit geschrieben, getestet und aktualisiert, die jedes menschliche Team überfordern würde. Um Schritt zu halten, verlassen sich Ingenieure auf automatisierte Systeme, die bei jeder Änderung tausende von Prüfungen durchführen. Diese Prüfungen, bekannt als Tests, sind das Sicherheitsnetz, das Fehler abfängt, bevor sie die Nutzer erreichen. Doch mit wachsender Software wächst auch die Anzahl der Tests noch schneller, bis sie schließlich so groß wird, dass das Ausführen jedes einzelnen von ihnen zu lange dauert. Das Warten auf eine vollständige Runde an Prüfungen kann die Einführung neuer Funktionen um Stunden verzögern und den gesamten kreativen Prozess verlangsamen. Dies schafft ein schwieriges Dilemma: Teams müssen schnell sein, können es sich aber nicht leisten, die Sicherheitsprüfungen zu überspringen. Die Lösung, zu der viele übergegangen sind, ist das risikobasierte Testen – eine Strategie, die versucht zu erraten, welche Teile des Codes am wahrscheinlichsten fehlerhaft sind, und diese zuerst zu prüfen. Die Hoffnung ist, Fehler schnell zu finden, ohne Zeit mit den Teilen des Systems zu verschwenden, die stabil sind.
Seit Jahren versuchen Forscher, Computern beizubringen, diese Vermutungen mithilfe von maschinellem Lernen zu treffen, einer Methode, bei der Software Muster aus vergangenen Daten lernt. Sie fütterten die Computer mit Informationen darüber, wie Dateien geändert wurden, wer sie änderte und wie oft dies geschah. Das Ziel war es, ein Modell zu bauen, das eine Datei betrachten und sagen konnte: „Diese hier ist riskant; prüfe sie zuerst.“ Doch eine neue Studie des unabhängigen Forschers Vijay Prasad Javvadi zeigt auf, dass viele dieser bisherigen Versuche auf einem grundlegenden Fehler basierten. Die Studie zeigt, dass die Daten, die verwendet wurden, um den Computer zu lehren, wie eine „fehlerbehaftete“ Datei aussieht, oft dieselben Daten waren, die auch für die Vorhersage genutzt wurden. Es war, als würde man einen Schüler bitten, eine Testnote vorherzusagen, während man ihm heimlich den Lösungsschlüssel als Lernhilfe in die Hand drückt. Der Computer lernte nicht, die Zukunft vorherzusagen; er las lediglich das Etikett, das er eigentlich erraten sollte.
Javvadi setzte sich zum Ziel, dies zu korrigieren, indem er das Data Leakage (Datenleck) entfernte und mit einem sauberen Satz von Regeln neu anfing. Er sammelte Daten aus fünf massiven, bekannten Open-Source-Projekten und untersuchte dabei fast dreihunderttausend Dateien. In der alten, fehlerhaften Methode wurde dem Computer gesagt, eine Datei sei „defektanfällig“, wenn sie jemals wegen eines Fehlers behoben wurde, und man gab ihm dann genau die Anzahl dieser Korrekturen als Hinweis, um seine Vorhersage zu treffen. Javvadi entfernte diese irreführenden Hinweise. Er zwang den Computer, sich nur auf andere Signale zu verlassen, wie etwa wie oft eine Datei bearbeitet wurde, wie viele verschiedene Personen an ihr arbeiteten und wie viel Code hinzugefügt oder entfernt wurde. Er verglich diese intelligenten Modelle dann mit einem sehr einfachen, nicht-intelligenten Ansatz: einfach die Dateien danach zu sortieren, wie oft sie geändert worden waren.
Die Ergebnisse waren aufschlussreich. Als die irreführenden Hinweise entfernt wurden, brachen die komplexen Modelle des maschinellen Lernens nicht zusammen, aber sie vollbrachten auch keine Wunder. Das intelligenteste Modell, ein Algorithmus namens Random Forest, schaffte es, etwa 46,5 Prozent der defekten Dateien zu identifizieren, wenn es nur die obersten 10 Prozent der verdächtigsten Dateien betrachtete. Dies war eine echte Verbesserung, aber sie war moderat. Viel wichtiger war, dass die einfache Methode, also nur zu zählen, wie oft eine Datei geändert worden war, fast genauso gut war und etwa 43 Prozent der fehlerhaften Dateien entdeckte. Das intelligente Modell erzielte nur einen kleinen Vorteil von etwa drei bis vier Prozentpunkten gegenüber der einfachen Zählung. Dies deutet darauf hin, dass maschinelles Lernen zwar helfen kann, aber das mächtigste Signal für das Finden von Fehlern oft einfach die rohe Historie davon ist, wie viel an einer Datei bearbeitet wurde.
Die Studie deckte auch eine überraschende Einschränkung darüber auf, wie weit diese Vorhersagen in die Zukunft reichen können. Als die Forscher versuchten, die Modelle an brandneuen Dateien zu testen – Dateien, die gerade erst erstellt worden waren und noch keine Zeit hatten, eine Historie von Änderungen anzuhäufen – versagten die Modelle vollständig. Sie schnitten nicht besser ab als das bloße Raten. Dies geschah, weil die Definition einer „fehlerbehafteten“ Datei auf einer Historie vergangener Fehlerbehebungen beruhte. Eine brandneue Datei hat keine Historie, also hatte das Modell keine Möglichkeit zu wissen, ob sie irgendwann problematisch werden würde. Dieser Befund dient als Warnung: Diese Werkzeuge sind exzellent darin, zu beschreiben, welche Dateien derzeit aufgrund ihrer Vergangenheit riskant sind, aber sie können nicht zuverlässig vorhersagen, welche brandneuen Dateien morgen riskant sein werden.
Am Ende bietet diese Forschung ein klareres, ehrlicheres Bild davon, wie die Softwareprüfung priorisiert werden sollte. Sie bestätigt, dass die alten Methoden durch einen verborgenen Fehler aufgebläht waren, beweist aber auch, dass ein korrigierter Ansatz dennoch einen Wert besitzt. Der beste Weg für Engineering-Teams besteht nicht darin, sich auf komplexe Black-Box-Vorhersagen zu verlassen, sondern eine Kombination aus einfachen, verständlichen Signalen und einem leichtgewichtigen Modell des maschinellen Lernens zu nutzen. Die Studie empfiehlt die Verwendung eines spezifischen Typs schneller Algorithmen, die eine Vorhersage in weniger als einer Millisekunde treffen können, sodass sie sofort laufen können, während ein Entwickler tippt. Dieser Ansatz verspricht nicht, jeden Fehler zu finden, aber er bietet einen statistisch fundierten Weg, um die begrenzte Testzeit auf die Dateien zu konzentrieren, die es am ehesten benötigen, und so das Bedürfnis nach Geschwindigkeit mit der Notwendigkeit der Sicherheit in Einklang zu bringen.
Ertrinken Sie in Arbeiten in Ihrem Fachgebiet?
Erhalten Sie tägliche Digests der neuesten Arbeiten passend zu Ihren Forschungsbegriffen — mit technischen Zusammenfassungen, in Ihrer Sprache.