Freigeben über


KI-gestützte Erstellung von Tests mit GitHub Copilot (Vorschauversion)

Anmerkung

Funktionen in der Vorschauversion sind nicht für den Produktionseinsatz gedacht und können eine eingeschränkte Funktionalität aufweisen. Diese Funktionen stehen vor dem offiziellen Release zur Verfügung, damit Kunden früher Zugriff darauf erhalten und Feedback geben können.

Die Erstellung umfangreicher Testpläne für Power Platform-Anwendungen kann insbesondere bei komplexen Szenarien zeitaufwändig sein. KI-gestützte Erstellungstools wie GitHub Copilot können diesen Prozess erheblich beschleunigen durch das Generieren von Testvorlagen, dem Vorschlagen von Testfälle und der automatisierten Erstellung von Codebausteinen.

Diese Anleitung erklärt, wie Sie GitHub Copilot mit Power Platform-Quellcodeverwaltungslösungen für die effiziente Erstellung von Test Engine-Testpläne verwenden können.

Anforderungen

Bevor Sie beginnen, stellen Sie Folgendes sicher:

Einrichten der Testerstellungsumgebung

Um die Effektivität der KI-gestützten Testerstellung zu maximieren, kombinieren Sie diese Tools in einem strukturierten Workflow:

  1. Quelldateien abrufen
  2. Initialisieren eines Git-Repositorys für die Versionskontrolle (falls noch nicht geschehen)
  3. Erstellen Sie einen dedizierten Testordner in Ihrem Lösungsrepository
  4. Lösungsordner in Visual Studio Code öffnen

GitHub Copilot für die Testerstellung verwenden

GitHub Copilot kann Ihnen dabei helfen, verschiedene Testkomponenten basierend auf Ihrer quellgesteuerten Lösung zu generieren. Hier erfahren Sie, wie Sie die Funktionen effektiv nutzen können:

Verwenden der Beispieldokumentation als Kontext

Der Test Engine-Beispielkatalog bietet umfassendes Referenzmaterial für GitHub Copilot. Sie können Copilot dabei helfen, qualitativ hochwertigere Tests zu generieren, indem Sie:

  • Die Datei samples.md in Ihren Arbeitsbereich aufnehmen
  • Verweisen auf bestimmte Beispiele in Ihren Eingabeaufforderungen
  • Verknüpfungen zu GitHub-Beispielrepositorys erstellen

So können Sie beispielsweise Folgendes tun:

  • Öffnen Sie sowohl Ihren Anwendungscode als auch die Datei Samples.md in VS Code
  • Fordern Sie Copilot auf, Tests „ähnlich dem ButtonClicker-Beispiel“ oder „mit Mustern aus dem Dataverse-Beispiel“ zu erstellen
  • Verweisen Sie auf spezifische Funktionen aus Beispielen, die Ihren Testanforderungen entsprechen

Dieser Ansatz hilft Copilot, Power Platform Test Engine-Muster zu verstehen und genauere Tests zu generieren.

Mit GitHub Copilot im Agentenmodus arbeiten

Der GitHub Copilot-Chat von Visual Studio Code bietet einen Agentenmodus, mit dem Sie Tests basierend auf Ihren Lösungsdateien generieren können. Dieser Modus ermöglicht Copilot einen tieferen Zugriff auf Ihren Projektkontext und ein tieferes Verständnis.

So verwenden Sie den Agent-Modus für die Testgenerierung:

  1. Öffnen Sie GitHub Copilot-Chat in VS Code (STRG+Umschalt+I).
  2. Wählen Sie aus der Copilot-Modusauswahl Agent aus.
  3. Formulieren Sie eine detaillierte Eingabeaufforderung für den Test, den Sie erstellen möchten.

Beispiele für Eingabeaufforderungen für die Testgenerierung

Nutze Sie Eingabeaufforderungen wie die folgenden für die Testgenerierung:

Ziel:
Generieren Sie eine umfassende Testsammlung für eine Canvas-App mithilfe von Power Apps Test Engine, modelliert nach dem ButtonClicker-Beispiel.

Eingabeaufforderung:
Generiere einen Test für ./SolutionPackage/src/CanvasApps/src/MyApp/Src/App.fx.yaml unter Verwendung des Beispiels unter https://github.com/microsoft/PowerApps-TestEngine/tree/main/samples/buttonclicker als Referenz. Erstelle erwartete Fälle, Grenzfälle und Ausnahmefälle. Der Test sollte eine YAML-Testdatei und Power Fx-Testschritte, config.json und RunTest.ps1 basierend auf dem Beispiel erstellen, damit ich den Test ausführen kann.

Ziel:
Erstellen Sie einen detaillierten Testplan für eine modellgesteuerte App, um sicherzustellen, dass die Kernfunktionalität und die Geschäftslogik wie erwartet funktionieren.

Eingabeaufforderung:
Erstellen Sie einen umfassenden Testplan für meine modellgesteuerte App unter ./SolutionPackage/src/Other/Solution.xml. Der Test sollte das Laden des Formulars, die Datensatzerstellung und die Ausführung von Geschäftsregeln überprüfen. Generiere den Test-YAML, Power Fx-Schritte und ein PowerShell-Skript zum Ausführen des Tests.

Ziel:
Erstellen Sie einen Testplan für Dataverse-Entitäten, um CRUD-Vorgänge durch Power Fx-Aktionen zu überprüfen.

Eingabeaufforderung:
Erstelle einen umfassenden Testplan für meine Dataverse Entitäten. Der Test sollte Power Fx-Aktionen zum Erstellen, Aktualisieren und Löschen ausführen. Generiere den Test-YAML, Power Fx-Schritte und ein PowerShell-Skript zum Ausführen des Tests.

Die generierten Testkomponenten verstehen

Wenn GitHub Copilot einen Test generiert, werden in der Regel folgende Komponenten erstellt:

  • YAML-Testplan: definiert die Teststruktur, die App-URL und die Testschritte
  • Power Fx-Testschritte: enthält die Testlogik in Form von Power Fx-Ausdrücken
  • config.json: Konfiguration für Testausführungsparameter
  • RunTest.ps1: PowerShell Skript zum Ausführen des Tests

Beispiel: Generierte Teststruktur

MyAppTests/
├── MyAppTest.fx.yaml     # Power Fx test steps
├── MyAppTest.yml         # Test plan definition
├── config.json           # Test configuration
└── RunTest.ps1           # Test execution script

Bewährte Methoden für die KI-gestützte Testerstellung

Beachten Sie die folgenden Abschnitte, um das Beste aus GitHub Copilot für die Erstellung von Test Engine-Tests herauszuholen.

Stellen Sie in Ihren Eingabeaufforderungen einen klaren Kontext bereit

Geben Sie genau an, was Sie testen möchten, und geben Sie Verweise auf Folgendes an:

  • Die genauen Dateien, die getestet werden sollen
  • Beispieltests, die als Vorlagen verwendet werden können
  • Spezifische Testszenarien, die Sie abdecken möchten
  • Alle Authentifizierungs- oder Umgebungsanforderungen

Verwenden von Test Engine-Beispielen für den Kontext

Die samples.md-Dokumentation verwaltet alle verfügbaren Beispiele aus dem Test Engine-Repository, die eine hervorragende Referenz für die Erstellung von Eingabeaufforderungen für GitHub Copilot darstellen. Wenn Sie z. B. eine Canvas-App mit Schaltflächen testen, können Sie auf das Button Clicker-Beispiel verweisen:

Eingabeaufforderung:
Generiere einen Test für meine Canvas-App unter ./SolutionPackage/src/CanvasApps/src/MyApp/Src/App.fx.yaml unter Verwendung des ButtonClicker-Beispiels aus https://github.com/microsoft/PowerApps-TestEngine/tree/main/samples/buttonclicker. Der Test sollte:
1. überprüfen, dass meine Zählerschaltfläche einen Wert auf dem Bildschirm erhöht
2. Grenzbedingungen testen (z. B. Maximalwert)
3. Lebenszyklus-Hooks zu OnTestCaseStart und OnTestCaseComplete enthalten
4. die config.json mit entsprechenden Umgebungsvariablen generieren

Dieser Ansatz hilft Copilot, die Teststruktur zu verstehen und generiert genauere, kontextuell relevante Tests auf der Grundlage bewährter Beispiele.

Quellcodegesteuerte Lösungen als Kontext verwenden

Copilot funktioniert am besten, wenn es Ihre Lösungsstruktur analysieren kann. Verwenden Sie die Quellcodeverwaltung für Power Platform-Lösungen, um diesen Kontext bereitzustellen. Dieser Kontext ermöglicht es Copilot:

  • die Struktur Ihrer App zu verstehen
  • Identifizieren von Steuerelementnamen und -eigenschaften
  • Generieren Sie genauere Testschritte
  • Auf die richtigen Dateipfade verweisen

Generierte Tests überprüfen und verfeinern

KI-generierte Tests bieten zwar einen hervorragenden Ausgangspunkt, dennoch sollten Sie immer:

  • Überprüfen, ob die Steuerelementverweise mit Ihrer Anwendung übereinstimmen
  • Assertionen für geschäftskritische Funktionen hinzufügen
  • Stellen Sie sicher, dass Grenzfälle ordnungsgemäß behandelt werden
  • die Authentifizierungskonfiguration überprüfen

manuelles Fachwissen einbinden

Verwenden Sie GitHub Copilot für komplexe Testszenarien, um:

  • Generieren des Testframeworks und der Teststruktur
  • Standardvalidierungsmuster erstellen
  • Schlagen Sie Grenzfälle vor, die Sie in Betracht ziehen sollten

Dann ergänzen Sie Ihre Fachkenntnisse für:

  • Geschäftsspezifische Validierungsregeln
  • Umgebungsüberlegungen
  • Spezialisierte Testdaten

Gängige Muster für die Testgenerierung

Dieser Abschnitt enthält einige gängige Muster für die Testgenerierung:

Testen von Canvas-Apps

Verwenden Sie für Canvas-Apps Eingabeaufforderungen, die auf die App.fx.yaml-Datei in Ihrer quellcodegesteuerten Lösung verweisen:

Eingabeaufforderung:
Generieren Sie einen Test für meine Canvas-App unter ./SolutionPackage/src/CanvasApps/src/MyExpenseApp/Src/App.fx.yaml, der den Ausgabenübermittlungsprozess validiert. Der Test sollte die Ausgabenfelder ausfüllen, das Formular absenden und überprüfen, ob die Bestätigungsmeldung angezeigt wird.

Testen von modellgesteuerten Apps

Konzentrieren Sie sich bei modellgesteuerten Apps auf Entitätsnavigation, Formularinteraktionen und Geschäftsregeln:

Eingabeaufforderung:
Erstelle einen Test für meine modellgesteuerte App, der das Kontoentitätsformular testet. Der Test sollte einen neuen Kontodatensatz erstellen, erforderliche Felder validieren und überprüfen, ob die Geschäftsregeln für die Berechnung des Kreditlimits ordnungsgemäß funktionieren.

Testen von Dataverse-Erweiterungen

Legen Sie bei Dataverse-Tests den Schwerpunkt auf die Validierung von Datenvorgängen und der Geschäftslogik:

Eingabeaufforderung:
Generiere einen Dataverse-Test, der die benutzerdefinierten Plugins in meiner Lösung validiert. Der Test sollte Testdatensätze erstellen, die Ausführung des Plug-Ins auslösen und die erwarteten Datentransformationen überprüfen.

Beispielspezifische Testaufforderungen

Um einen möglichst genauen Test zu erhalten, verweisen Sie auf spezifische Beispiele aus dem Test Engine-Beispielkatalog, die Ihren Testanforderungen entsprechen. Hier sind maßgeschneiderte Eingabeaufforderungen für gängige Testszenarien:

ButtonClicker-Beispiel-Eingabeaufforderungen

Das ButtonClicker-Beispiel veranschaulicht grundlegende Tests der Zählerfunktionalität. Verwenden Sie diese Eingabeaufforderungen:

Eingabeaufforderung:
Generieren Sie einen Test für meine Zähler-App mit einer ähnlichen Struktur wie das ButtonClicker-Beispiel. Meine App verfügt über Schaltflächen mit den Namen „IncrementBtn“ und „ResetBtn“ mit einem „CounterLabel“, das die aktuelle Anzahl anzeigt. Erstellen Sie einen Test, der überprüft, ob beide Schaltflächen ordnungsgemäß funktionieren und ob die maximale Anzahl 10 beträgt.

Eingabeaufforderung:
Erstellen Sie einen Test für meine Schaltflächen-Interaktions-App mit dem ButtonClicker-Beispiel als Referenz. Meine App verfügt über einen „SubmitButton“, der nur aktiviert werden sollte, wenn die Felder „NameInput“ und „EmailInput“ ausgefüllt sind. Generiere einen Testplan mit Power Fx-Schritten zur Validierung dieses Verhaltens.

Die Beispiele BasicGallery und NestedGallery zeigen, wie Katalog-Interaktionen getestet werden:

Eingabeaufforderung:
Generiere einen Test für meine Katalogapp, in der ich einen „Products“-Katalog mit Produktelementen mit den Steuerelementen „TitleLabel“, „PriceLabel“ und „SelectButton“ habe. Verwenden Sie die BasicGallery-Beispielstruktur, um zu überprüfen, ob Elemente ausgewählt werden können und ob die richtigen Details in einem „DetailPanel“ angezeigt werden.

Eingabeaufforderungen für Datenvorgänge

Das Dataverse-Beispiel veranschaulicht das Testen von Datenvorgängen:

Eingabeaufforderung:
Erstelle anhand des Dataverse-Beispielmusters einen Test für meine CRM-App. Teste, ob ich einen neuen Kontaktdatensatz erstellen kann, aktualisiere ihn und überprüfe dann, ob die Änderungen beibehalten werden. Beziehe sowohl UI-Tests als auch direkte Dataverse-Vorgänge ein.

Eingabeaufforderungen für KI-Tests

Zum Testen KI-gestützter Funktionen verweisen Sie auf das KI-Eingabeaufforderungsbeispiel:

Eingabeaufforderung:
Generiere einen Test für meine Stimmungsanalyse-App basierend auf dem KI-Eingabeaufforderungsbeispiel. Meine App verfügt über ein „FeedbackInput“-Textfeld und verwendet AI Builder, um es als positiv, negativ oder neutral einzustufen. Erstelle einen Test, der verschiedene Eingaben validiert und erwartete Ergebnisse innerhalb akzeptabler Schwellenwerte erzeugt.

Erweiterte Techniken

Dieser Abschnitt enthält Beispiele für erweiterte Eingabeaufforderungsfunktionen.

Erstellen von Testsammlungen für mehrere Umgebungen

Sie können Copilot auffordern, Tests zu generieren, die in mehreren Umgebungen funktionieren:

Eingabeaufforderung:
Generiere eine Testsammlung für meine App, die in DEV-, TEST- und PROD-Umgebungen ausgeführt werden kann mit entsprechenden Konfigurationsvariablen für jede Umgebung.

Generieren von Daten-Mocking-Szenarien

Für isoliertes Testen mit Konnektor-Simulation:

Eingabeaufforderung:
Erstelle einen Test mit simulierter Konnektorantwort für meine App, die den Office 365 Outlook-Konnektor verwendet. Der Test sollte den Empfang von E-Mails simulieren und die Verarbeitungslogik der App validieren.

Testen von KI-Funktionen und Verarbeiten von nicht deterministischen Ergebnissen

Wenn Sie mit KI-gestützten Anwendungen arbeiten, bringt das Testen besondere Herausforderungen mit sich, da die KI-Ausgaben zwischen den Ausführungen leicht variieren können, selbst bei identischen Eingaben. Dieses nichtdeterministische Verhalten erfordert spezielle Testansätze.

Nicht deterministische Tests verstehen

Bei nicht deterministischen Tests werden Ausgaben validiert, die zwischen den Testläufen zulässigerweise variieren können:

  • KI-Modellausgaben: Antworten von KI-Modellen wie GPT oder benutzerdefinierten AI Builder-Komponenten
  • Konfidenzbewertungen: Numerische Bewertungen, die innerhalb akzeptabler Bereiche schwanken können
  • Generierte Inhalte: Text oder Empfehlungen, die von KI-Systemen erstellt werden

Verwenden von Preview.AIExecutePrompt zum deterministischen Testen von KI-Funktionen

Die Test Engine stellt den Preview.AIExecutePrompt bereit, der eine deterministische Validierung von KI-Antworten ermöglicht. Dieser Ansatz ermöglicht Ihnen Folgendes:

  • Ausführen von KI-Eingabeaufforderungen in Testszenarien
  • Analysieren und validieren Sie die strukturierten Antworten
  • Überprüfen, ob kritische Ergebnisse trotz möglicher Abweichungen den Erwartungen entsprechen

Beispiel: Auswertung mit AI Builder bewerten

Das folgende Beispiel veranschaulicht die Verwendung der Funktion Preview.AIExecutePrompt zum Testen eines KI-gestützten Bewertungssystems:

EvaluateTestQuestionPrompt(Prompt: TestQuestion): TestResult =
  With({
    Response: ParseJSON(
      Preview.AIExecutePrompt("PromptEvaluator",
      {
        Context: "You are a helpful agent asking about external customer service questions.",
        Question: Prompt.Question
      }).Text)
  },If(
    IsError(AssertNotError(Prompt.ExpectedRating=Response.Rating, Prompt.Question & ", Expected " & Prompt.ExpectedRating & ", Actual " & Response.Rating)),
    {PassFail: 1, Summary: Prompt.Question & ", Expected " & Prompt.ExpectedRating & ", Actual " & Response.Rating}, {PassFail: 0, Summary: "Pass " & Prompt.Question}
  ))

In diesem Beispiel:

  • Der Test führt eine KI-Eingabeaufforderung für das „PromptEvaluator“-Modell aus
  • Er übergibt einen Kontext und eine Frage zur Bewertung
  • Es wird überprüft, ob die zurückgegebene Bewertung mit dem erwarteten Wert übereinstimmt
  • Es gibt ein klares Feedback über den Erfolg oder Misserfolg des Tests

Sie können die vollständige Implementierung im KI-Eingabeaufforderungsbeispiel aus dem PowerApps TestEngine-Repository erkunden.

Einbinden von KI-fähigen Tests

Bei der Verwendung von GitHub Copilot zum Generieren von Tests für KI-gestützte Anwendungen:

Eingabeaufforderung:
Generiere einen Test für meine KI-gestützte App, die AI Builder-Formularverarbeitung verwendet. Fügen Sie Testschritte hinzu, die die KI-Ergebnisse mit angemessener Toleranz für nicht deterministische Ausgaben validieren.

Fehlerbehebung und Verfeinerung

Wenn GitHub Copilot Tests generiert, die nicht Ihren Anforderungen entsprechen:

  • Verfeinern Sie Ihre Eingabeaufforderung: Geben Sie genauer an, was Sie testen möchten
  • Geben Sie Beispiele an: Verlinken Sie zu bestimmten Testbeispielen, die Ihrem gewünschten Stil entsprechen
  • Brechen Sie komplexe Tests auf: Fordern Sie die Generierung kleinerer, fokussierter Testkomponenten an
  • Iterieren: Verwenden Sie die Antworten von Copilot für die Verfeinerung Ihrer nächsten Eingabeaufforderung

Test Engine Funktionen erkunden
Den Test Engine-Beispielkatalog durchsuchen
Weitere Informationen zu Power Fx-Funktionen
Das YAML-Testformat verstehen
Authentifizierungsoptionen erkunden
Training: Anwendungen mit GitHub Copilot im Agentenmodus entwickeln