Blog KI/ML Automatisierung mit GitLab Duo, Teil 2: Komplexes Testen
Aktualisiert am: January 14, 2025
5 Minuten Lesezeit

Automatisierung mit GitLab Duo, Teil 2: Komplexes Testen

Hier erfährst du, wie das GitLab-Team mit Hilfe der KI-Funktionen von GitLab Duo komplexere Testsituationen bewältigt und dabei auch sicherstellt, dass die Code-Tests den Standards entsprechen.

checkmark - cover - security

Im ersten Teil unserer dreiteiligen Serie über die Testerstellung mit GitLab Duo ging es darum, wie man Code-Tests automatisieren kann. Jetzt werden wir die Erfahrungen teilen, die wir beim Einsatz von KI für die Testgenerierung gemacht haben.

Herausforderungen und wie wir sie gemeistert haben

Insgesamt waren wir mit den Ergebnissen zufrieden, die wir mit GitLab Duo bei der Testgenerierung für unseren Code erzielt haben. Wie bei jeder Sprachgenerierung waren in einigen Fällen kleinere Anpassungen erforderlich, z. B. die Korrektur von Importpfaden oder die Bearbeitung von Inhalten in Datensätzen. Bei den komplexeren Fällen mussten wir berücksichtigen, dass KI-Lösungen oft der Kontext fehlt. Hier erfährst du, wie wir die komplexeren Testsituationen mit GitLab Duo gemeistert haben.

Aktualisieren bestehender Testfälle

Wie so oft bei der Entwicklung eines Softwareprodukts stießen wir auf Fälle, in denen wir bestehende Tests aktualisieren mussten. Anstatt eine komplette Testsuite für ein häufiges Problem manuell anzupassen, nutzten wir die Fähigkeiten des GitLab-Duo-Chat-Fensters in VS Code voll aus. Um beispielsweise Tests zu überarbeiten, nutzten wir den Chat-Prompt „Please update the provided tests to use unittest rather than pytest“ („Aktualisiere die bereitgestellten Tests so, dass sie unittest und nicht pytest verwenden“) und fügten dann die Tests ein, die GitLab Duo aktualisieren sollte.

Automatisierte Testgenerierung



Chat-Prompt zur Verwendung von unittest anstelle von pytest

Hinweis: Wir haben die Empfehlungen von GitLab Duo kopiert und in unseren Code eingefügt.

Erstellen von Tests für Legacy-Code

Das Erstellen von Tests für älteren Code, von dem wir wussten, dass er funktioniert, war eine weitere Herausforderung. In solchen Fällen war es sinnvoll, neben den fehlgeschlagenen Tests auch Fehlerschnipsel bereitzustellen und GitLab Duo zu bitten, neue Tests zu erstellen. Wir haben die Fehler aus dem Terminalfenster in den Chat kopiert und mit der Aufforderung „Please explain and fix this failing test“ („Erkläre und behebe diesen fehlgeschlagenen Test“) oder ähnlichen Prompts eine Zusammenfassung der Probleme mit dem Test ausgeben lassen sowie einen neuen Test erstellt, der das Problem behebt. Wir mussten feststellen, dass dies manchmal mehrere Überarbeitungsrunden erforderte, wenn neue Testfehler auftraten. Die Effizienz von GitLab Duo bei der Erstellung verschiedener überarbeiteter Lösungen war jedoch schnell und wirkte sich positiv auf die Effizienz des Teams und der Entwickler(innen) aus.

Herausforderungen mit komplexem oder abstraktem Code

In anderen Fällen führte die Modularisierung oder die Komplexität unseres Codes zu Abweichungen bei den Ergebnissen von GitLab Duo. Bei der Erstellung von Tests erzeugte GitLab Duo beispielsweise manchmal eine Reihe bestandener und fehlgeschlagener Tests, was auf unterschiedliche Testansätze zurückzuführen war (z. B. die Verwendung von Simulationen und die Objekte, die simuliert wurden). Wir gaben GitLab Duo ein eigenes Beispiel für einen bestandenen Test und forderten es auf, die einzelnen Tests nacheinander so zu ändern, dass sie dem Stil der bestandenen Tests entsprechen, um die Konsistenz zu wahren. Außerdem stellten wir GitLab Duo eine Datei mit funktionierenden Tests für ein ähnliches Objekt oder eine ähnliche Aufgabe zur Verfügung, damit es die Struktur nachbilden konnte.

Sicherstellen, dass der generierte Code unseren Standards entspricht

Während der Entwicklung eines Python-Moduls generierte GitLab Duo viele Tests mit Simulationen, die oft überarbeitet werden mussten, insbesondere im Hinblick auf die Standardisierung der Namensgebung. In solchen Fällen konnten wir GitLab Duo Chat nutzen, um die Tests zu überarbeiten und Anweisungen zu geben, welche Testkomponenten zu aktualisieren waren. GitLab Duo zu diesen Änderungen aufzufordern, war wesentlich schneller als die Überarbeitung einzelner Tests, wie wir es zuvor getan hatten.

Nicht abgedeckte Testfälle

GitLab Duo erstellte Tests für zusätzliche Testfälle, die das Team zuvor nicht berücksichtigt hatte, und erhöhte so die Abdeckung. So konnten wir dank GitLab Duo diese Grenzfälle schnell und effizient angehen und die Testabdeckung erweitern, was für unser Team einen wichtigen Mehrwert darstellt, um schneller ein robustes Produkt zu entwickeln.

Was wir gelernt haben

Die folgenden Erkenntnisse waren wichtig für unseren Erfolg mit GitLab Duo:

  • Schnell und effizient für eine schnelle Entwicklung und Iteration – Die Rolle von GitLab Duo bei der Erstellung von automatisierten Tests war für unser Team ein wichtiger Beschleuniger bei der Entwicklung und ermöglichte es uns, schneller und mit größerem Vertrauen in unsere Änderungen zu arbeiten.
  • Es ist wichtig, geeignete Prompts zu verwenden – Bei der Verwendung von GitLab Duo für unseren Anwendungsfall sind wir auf ein wichtiges Thema für die Optimierung des Machine Learning gestoßen: das Prompt-Engineering. Manchmal mussten wir nur wenige Schlüsselwörter in unserer Frage ändern, um die ideale Antwort zu generieren.
  • Wir müssen die zugrunde liegenden Frameworks und den Code verstehen – Bei jeglichem KI-generierten Code, der in ein Produkt einfließt, selbst wenn es sich nur um Tests handelt, ist es wichtig, dass wir verstehen, wie der Code funktioniert, damit wir ihn angemessen debuggen und Änderungen beantragen können.
  • Wir müssen den gewünschten Endzustand und die Standards kennen – Ähnlich wie bei der Einhaltung von Programmierstandards für die Formatierung und die Verwendung von Bibliotheken bei der Entwicklung ohne KI ist es wichtig, die Übersicht darüber zu behalten, wie die beabsichtigten Ergebnisse aussehen sollen und welche Standards beim Einsatz von KI eingehalten werden müssen. GitLab Duo braucht den Kontext, um Code-Standards zu verstehen. Deshalb ist es wichtig, dass die Teammitglieder, die GitLab Duo nutzen, die Ergebnisse angemessen überwachen, um sicherzustellen, dass die Qualität und andere Erwartungen erfüllt werden.
  • GitLab Duo ist kein Ersatz für alle Tests – Auch wenn wir GitLab Duo in großem Umfang für die Erstellung automatisierter Tests nutzen, ersetzt es nicht unsere anderen Tests und die menschliche Aufsicht. Funktionale Tests, Integrationstests und andere Tests haben nach wie vor einen wichtigen Platz im Qualitätssicherungsprozess und im gesamten Software-Entwicklungsprozess.

In unserem nächsten Artikel der Reihe geht es um einen Test, den wir durchgeführt haben, um die Auswirkungen von GitLab Duo auf die automatisierten Tests unseres Teams zu validieren, und um die beeindruckenden Ergebnisse, die wir bis jetzt erzielt haben.

Wir möchten gern von dir hören

Hat dir dieser Blogbeitrag gefallen oder hast du Fragen oder Feedback? Erstelle ein neues Diskussionsthema im GitLab Community-Forum und tausche deine Eindrücke aus. Teile dein Feedback

Bist du bereit?

Sieh dir an, was dein Team mit einer einheitlichen DevSecOps-Plattform erreichen könnte.

Kostenlose Testversion anfordern

Finde heraus, welcher Tarif für dein Team am besten geeignet ist

Erfahre mehr über die Preise

Erfahre mehr darüber, was GitLab für dein Team tun kann

Sprich mit einem Experten/einer Expertin