Der Leitfaden ist inspiriert vom Engineering System Success Playbook (ESSP) von GitHub, das Strategien und Metriken für die Verbesserung von Engineeringsystemen empfiehlt.
Wenn du mit dem Rollout von Copilot beginnst, empfehlen wir, deine Ziele zu definieren, den Rollout entsprechend zu planen und die Ziele klar an Mitarbeitende zu kommunizieren. Weitere Informationen findest du unter Erreichen der Engineeringziele deines Unternehmens mit GitHub Copilot.
1. Identifizieren von Erfolgshindernissen
Der erste Schritt, der vom ESSP empfohlen wird, besteht darin, ein klares Verständnis der Hindernisse zu entwickeln, die Verbesserungen in deinem Unternehmen verhindern. Wenn du die aktuelle Baseline, den gewünschten zukünftigen Zustand und die Hindernisse für Fortschritt kennst, kannst du sicherstellen, dass Änderungen gezielt und effektiv sind.
Viele Softwareteams stellen sich dauerhaften Herausforderungen bei der Aufrechterhaltung von hochwertigem Code aufgrund geringer Komponententestabdeckung. In schnelllebigen Entwicklungsumgebungen wird das Schreiben von Tests häufig als zeitaufwendig oder nicht unbedingt notwendig angesehen, insbesondere wenn Teams unter dem Druck stehen, Features schnell bereitstellen zu müssen.
Dadurch können kritische Fehler spät im Entwicklungslebenszyklus entdeckt werden, häufig in Staging- oder Produktionsumgebungen.
Dies führt zu einer Kette negativer Ergebnisse:
- Höhere Fehlerraten und mehr vom Kunden gemeldete Probleme
- Gestiegene Kosten für die Behebung von Fehlern nach der Bereitstellung
- Geringeres Vertrauen der Entwickler in die Stabilität ihres Codes
- Langsamere Veröffentlichungszyklen aufgrund reaktiven Debuggens und Patchings
In älteren Systemen kann die Handhabung der Testabdeckung aufgrund komplexer Abhängigkeiten oder schlecht dokumentierten Codes noch schwieriger sein. Entwickler sind möglicherweise nicht mit älteren Codebasen oder mit Testframeworks vertraut, was das Problem noch weiter verstärkt.
Die Verbesserung der Testabdeckung ist eine anerkannte bewährte Methode, erfordert jedoch Zeit und Kompetenzen, die viele Teams nur schwer erbringen können.
2. Auswerten der Optionen
Der nächste Schritt besteht darin, Lösungen für die in Schritt 1 identifizierten Hindernisse zu bewerten und auszuwählen. In diesem Leitfaden konzentrieren wir uns auf die Auswirkungen, die GitHub Copilot auf das von dir identifizierte Ziel haben kann. Denke daran, dass erfolgreiche Rollouts eines neuen Tools auch Änderungen an Kultur und Prozessen erfordern.
Du führst Testversionen neuer Tools und Prozesse mit Pilotgruppen aus, um Feedback zu sammeln und den Erfolg zu messen. Informationen zu Schulungsressourcen und Metriken, die in der Testversion verwendet werden sollen, findest du in den Abschnitten 3. Implementieren von Änderungen und Zu überwachende Metriken.
Wie Copilot helfen kann
GitHub Copilot können den Prozess des Schreibens von Komponententests erheblich beschleunigen und vereinfachen. Wenn du den umgebenden Code und den Kontext verstehst, kann Copilot Testfunktionen vorschlagen, die der Struktur und Logik des getesteten Codes entsprechen.
Die Funktionen von Copilot sind in mehreren Szenarios nützlich:
- Wenn Entwickler neue Funktionen schreiben, kann Copilot automatisch entsprechende Testfälle inline vorschlagen.
- Beim Umgestalten von Legacycode kann Copilot helfen, Testgerüste zu generieren, um Regressionen zu verhindern.
- Bei nicht getesteten Modulen können Entwickler Copilot auffordern, aussagekräftige Testfälle zu generieren, auch wenn die Testabdeckung fehlt oder inkonsistent ist.
Durch die Vereinfachung, Beschleunigung und Automatisierung von Komponententests reduziert Copilot die Reibung, die zu Lücken bei der Testabdeckung führen kann, und hilft Teams bei der Einführung einer qualitätsorientierten Denkweise.
Anwendungsfälle
- Inlinetestgenerierung: Entwickler können Copilot auffordern, Tests für eine bestimmte Funktion oder ein bestimmtes Modul zu generieren, ohne den Kontext zu wechseln.
- Bessere Edgefallabdeckung: Durch Hinweisen von Copilot auf Edgeszenarios (z. B. NULL-Eingaben, leere Listen oder ungültige Zustände) können Entwickler schnell mehr Logikzweige abdecken.
- Beschleunigtes Onboarding: Neue Teammitglieder können Copilot verwenden, um zu verstehen, wie sich eine Funktion verhalten wird, indem sie sich die generierten Testfälle ansehen.
- Unterstützung bei CI/CD: Copilot kann vorschlagen, wie Tests in deine Buildpipeline integriert werden, um sicherzustellen, dass Verbesserungen bei der Abdeckung Qualitätsgates direkt unterstützen.
Kulturelle Überlegungen
Neben dem Rollout von GitHub Copilot solltest du auch alle sozialen oder kulturellen Faktoren angehen, die dich daran hindern könnten, deine Ziele zu erreichen.
Die folgenden Beispiele stammen aus dem Abschnitt „Anti-Patterns“ im ESSP.
- Teams verlassen sich möglicherweise auf manuelle Tests oder unzureichende automatisierte Tests. Dies kann durch Ressourceneinschränkungen für die Automatisierung oder durch mangelnde Erfahrung mit modernen Testtools verursacht werden.
- Teams warten möglicherweise zu lange mit der Freigabe und stellen dann große Codebatches auf einmal bereit, wodurch Fehler und Regressionen schwieriger zu erkennen sind. Dies kann durch fehlende Reife der CI/CD-Pipeline, strenge Complianceanforderungen oder lange Überprüfungszyklen zwischen PR und Bereitstellung verursacht werden.
3. Implementieren von Änderungen
Wenn du den richtigen Ansatz zur Überwindung der Hindernisse identifiziert hast, skaliere die von dir identifizierten Lösungen. Damit der Rollout eines neuen Tools oder Prozesses erfolgreich ist, ist es wichtig, Besitz für jeden Teil des Rollouts zuzuweisen, deine Ziele transparent zu kommunizieren, effektive Schulungen anzubieten und deine Ergebnisse zu messen.
Dieser Abschnitt enthält Beispielszenarien, bewährte Methoden und Ressourcen für Entwickelnde. Wir empfehlen die Verwendung dieses Abschnitts, um die Kommunikation und Schulungssitzungen zu planen, damit Mitarbeitende Copilot entsprechend deiner Ziele nutzen können.
- Tests inline generieren
- Grenzfälle abdecken
- Grundlegendes zu neuem Code
- Unterstützung bei CI/CD
- Bewährte Methoden für Programmierende
- Ressourcen für Programmierende
- Empfohlene Features
Tests inline generieren
- Wähle in VS Code die Funktion aus, die du testen möchtest, und fordere Copilot folgendermaßen auf:
Generate a unit test for this code.
- Copilot generiert je nach Sprache und Struktur einen Test inline oder in einer separaten Testdatei.
- Überprüfe, verfeinere und akzeptiere den Vorschlag.
Grenzfälle abdecken
-
Bitte Copilot nach dem Schreiben eines Tests um Folgendes:
What are some edge cases I should test for this function?
Oder:
Write test cases for when the input is null or empty.
-
Copilot schlägt zusätzliche Testfälle vor, um Grenzbedingungen abzudecken.
-
Überprüfe die Tests und integriere sie in deine Testsuite.
Grundlegendes zu neuem Code
- Wähle eine Legacyfunktion aus und bitte Copilot um Folgendes:
Explain what this function does and generate a test to validate it.
- Copilot erläutert den Zweck der Funktion und schlägt entsprechende Testfälle vor.
- Sieh dir die Testfälle an, um das erwartete Verhalten zu verstehen und den Kontext schnell zu erstellen.
Unterstützung bei CI/CD
- Überprüfe deine Testfälle und führe einen Commit für die Codebasis durch.
- Übermittle folgenden Prompt an Copilot:
Where should I place this test if I want it to run in CI?
- Basierend auf der Struktur der Codebasis schlägt Copilot vor, wo Testdateien platziert werden sollen und wie Pipelinekonfigurationen aktualisiert werden.
Bewährte Methoden für Entwickler
Empfehlungen für Programmierende:
- Verwende beschreibende Kommentare oder Prompts beim Chatten mit Copilot. Zum Beispiel:
Generate unit tests for a function that calculates discounts based on user type and purchase amount.
- Verwende Copilot zum Erkunden der Logikabdeckung. Zum Beispiel:
What branches or conditions does this function have that should be tested?
- Erkunde verschiedene Prompttechniken und vergleiche die Ergebnisse verschiedener KI-Modelle.
Hinweise für Programmierende:
- Akzeptiere generierte Tests ohne Überprüfen der Logik. Stelle sicher, dass die Tests die tatsächlichen Anforderungen widerspiegeln und realistische Eingaben und Ausgaben verarbeiten.
- Überspringe das Bestätigen des Edgeverhaltens. Wenn du nur „fröhliche Pfade“ testest, riskierst du, dass dir Regressionen entgehen.
- Verlasse dich auf Copilot, um nicht dokumentierte Geschäftsregeln zu erraten. Stelle immer Kontext über Prompts oder Kommentare bereit.
- Behandle Copilot als Ersatz für menschliche Code Reviews. Copilot beschleunigt den Prozess, du musst allerdings dennoch technische Beurteilungen anwenden.
Ressourcen für Entwickler
- Schreiben von Tests mit GitHub Copilot
- Generieren von Komponententests mit GitHub Copilot: Tipps und Beispiele
- GitHub Copilot ist ÜBERALL in Visual Studio (Videoinhalte mit einem Abschnitt zum Testen)
- Prompt Engineering für Copilot Chat
- Ändern des KI-Modells für Copilot Chat
Empfohlene Features
Zu überwachende Metriken
Um Testversionen neuer Tools zu bewerten und sicherzustellen, dass deine vollständigen Rollouts konsistente Verbesserungen bieten, solltest du die Ergebnisse überwachen und bei Bedarf Anpassungen vornehmen. Im Allgemeinen empfehlen wir, die Schlüsselbereiche Qualität, Geschwindigkeit und Entwicklerzufriedenheit zu berücksichtigen und zu prüfen, wie diese Bereiche zusammen zu Geschäftsergebnissen beitragen.
Hier sind einige Metriken, die du anschauen solltest, um die Auswirkung von Copilot auf dieses bestimmte Ziel zu bewerten.
- Testabdeckung: Nachverfolgen des Anstiegs der Zeilen- und Verzweigungsabdeckung nach der Einführung von Copilot. Sieh dir nach Möglichkeit Testabdeckungsberichte aus deinen CI-Pipelines an.
- Fehlerrate nach der Bereitstellung: Weniger Fehler sollten in Produktionsumgebungen gemeldet werden.
- Entwicklervertrauen: Verwende Umfragen oder Retrospektiven, um zu beurteilen, wie sicher sich Entwickler fühlen, wenn sie neuen Code liefern.
- Zeit zum Schreiben von Tests: Miss die weniger benötigte Zeit zum Erstellen von Komponententests.