Delen via


AI-ondersteunde testontwikkeling met GitHub Copilot (preview)

Notitie

Preview-functies zijn niet bedoeld voor productiegebruik en bieden mogelijk beperkte functionaliteit. Deze functies zijn beschikbaar voorafgaand aan een officiële release, zodat klanten vroeg toegang kunnen krijgen en feedback kunnen geven.

Het maken van uitgebreide testplannen voor Power Platform applicaties kan tijdrovend zijn, vooral bij complexe scenario's. Met behulp van AI-ondersteunde authoringtools zoals GitHub Copilot kunnen we dit proces aanzienlijk versnellen door testsjablonen te genereren, testcases voor te stellen en de aanmaak van boilerplatecode te automatiseren.

In deze handleiding wordt uitgelegd hoe u GitHub Copilot met Power Platform broncodebeheeroplossingen kunt gebruiken om op efficiënte wijze Test Engine-testplannen te maken.

Voorwaarden

Voordat u begint, moet u ervoor zorgen dat u het volgende heeft:

Het instellen van uw testomgeving

Om de effectiviteit van AI-ondersteunde testontwikkeling te maximaliseren, combineert u deze tools in een gestructureerde workflow:

  1. Haal uw bronbestanden op
    • Kloon uw Power Platform omgeving of oplossing vanuit bronbeheer
    • Exporteer en pak uw oplossing uit met bestanden met behulp van Pac Solution Export en Pac Solution Unpack. Power Platform...
  2. Initialiseer een Git-repository voor versiebeheer (indien dit nog niet is gebeurd)
  3. Maak een speciale testmap in uw oplossingsrepository
  4. Open de oplossingsmap in Visual Studio Code

Gebruiken voor het maken van tests GitHub Copilot

GitHub Copilot kan u helpen bij het genereren van verschillende testcomponenten op basis van uw brongestuurde oplossing. Zo maakt u effectief gebruik van de mogelijkheden:

Voorbeelddocumentatie gebruiken als context

De Test Engine-voorbeeldencatalogus biedt een rijke bron aan referentiemateriaal voor GitHub Copilot. U kunt Copilot helpen tests van hogere kwaliteit te genereren door:

  • Het bestand samples.md opnemen in uw werkruimte
  • Verwijzen naar specifieke voorbeelden in uw prompts
  • Het aanbieden van links naar voorbeeld-GitHub-repositories

U kunt bijvoorbeeld:

  • Open zowel uw applicatiecode als het samples.md-bestand in VS Code
  • Vraag Copilot om tests te maken die "vergelijkbaar zijn met het voorbeeld van ButtonClicker" of "met patronen uit het voorbeeld" Dataverse
  • Verwijs naar specifieke mogelijkheden van monsters die aansluiten bij uw testbehoeften

Deze aanpak helpt Copilot Test Engine-patronen te begrijpen en nauwkeurigere tests te genereren. Power Platform

Werken met GitHub Copilot in Agent-modus

Visual Studio De GitHub Copilot Chat van Code biedt een Agent-modus die u kan helpen bij het genereren van tests op basis van uw oplossingsbestanden. Met deze modus krijgt Copilot meer inzicht in de context van uw project.

Om de Agent-modus te gebruiken voor testgeneratie:

  1. Open in VS Code Chat (Ctrl+Shift+I) GitHub Copilot
  2. Selecteer Agent in de Copilot-modusselector
  3. Maak een gedetailleerde opdracht voor de test die u wilt maken

Voorbeeldprompts voor testgeneratie

Probeer prompts als deze te gebruiken voor het genereren van tests:

Doel:
Genereer een uitgebreide testsuite voor een canvas-app met behulp van de Power Apps Test Engine, gemodelleerd naar het ButtonClicker-voorbeeld.

Snel:
Genereer een test voor ./SolutionPackage/src/CanvasApps/src/MyApp/Src/App.fx.yaml met het voorbeeld op https://github.com/microsoft/PowerApps-TestEngine/tree/main/samples/buttonclicker als referentie. Maak verwachte gevallen, randgevallen en uitzonderingsgevallen. De test moet een YAML-testbestand en teststappen, config.json en RunTest.ps1 aanmaken op basis van het voorbeeld, zodat ik de test kan uitvoeren. Power Fx

Doel:
Maak een gedetailleerd testplan voor een modelgestuurde app om ervoor te zorgen dat de kernfunctionaliteit en bedrijfslogica werken zoals verwacht.

Snel:
Maak een uitgebreid testplan voor mijn modelgestuurde app op ./SolutionPackage/src/Other/Solution.xml. De test moet het laden van formulieren, het aanmaken van records en de uitvoering van bedrijfsregels valideren. Genereer de test-YAML, Power Fx stappen en een PowerShell-script om de test uit te voeren.

Doel:
Maak een testplan voor Dataverse entiteiten om CRUD-bewerkingen te verifiëren door middel van Power Fx acties.

Snel:
Maak een uitgebreid testplan voor mijn Dataverse entiteiten. De test moet de acties 'maken', 'bijwerken' en 'verwijderen' uitvoeren. Power Fx Genereer de test-YAML, Power Fx stappen en een PowerShell-script om de test uit te voeren.

Inzicht in de gegenereerde testcomponenten

Wanneer een test wordt gegenereerd, worden doorgaans de volgende componenten gemaakt: GitHub Copilot

  • YAML-testplan: Definieert de teststructuur, app-URL en teststappen
  • Power Fx teststappen: Bevat de testlogica met behulp van Power Fx expressies
  • config.json: Configuratie voor testuitvoeringsparameters
  • RunTest.ps1: PowerShell-script om de test uit te voeren

Voorbeeld: gegenereerde teststructuur

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

Best practices voor AI-ondersteunde testontwikkeling

Bekijk de volgende secties om het maximale uit GitHub Copilot het maken van Test Engine-tests te halen.

Zorg voor duidelijke context in uw prompts

Wees specifiek over wat u wilt testen en neem verwijzingen op naar:

  • De exacte bestanden om te testen
  • Voorbeeldtests om als sjablonen te gebruiken
  • Specifieke testscenario's die u wilt bestrijken
  • Eventuele authenticatie- of omgevingsvereisten

Test Engine-samples gebruiken voor context

De samples.md documentatie catalogiseert alle beschikbare voorbeelden uit de Test Engine-repository, die een uitstekende referentie kunnen zijn bij het opstellen van prompts voor GitHub Copilot. Wanneer u bijvoorbeeld een canvas-app met knoppen test, kunt u verwijzen naar het Button Clicker-voorbeeld:

Snel:
Genereer een test voor mijn Canvas-app op ./SolutionPackage/src/CanvasApps/src/MyApp/Src/App.fx.yaml met behulp van het ButtonClicker-voorbeeld van https://github.com/microsoft/PowerApps-TestEngine/tree/main/samples/buttonclicker. De test moet:
1. Controleer of mijn tellerknop een waarde op het scherm verhoogt
2. Test randvoorwaarden (bijv. maximale waarde)
3. Voeg OnTestCaseStart en OnTestCaseComplete levenscyclushooks toe
4. Genereer de config.json met de juiste omgevingsvariabelen

Dankzij deze aanpak begrijpt Copilot de teststructuur en worden nauwkeurigere, contextueel relevante tests gegenereerd op basis van bewezen voorbeelden.

Gebruik brongestuurde oplossingen als context

Copilot presteert optimaal wanneer het uw oplossingsstructuur kan analyseren. Gebruik bronbeheer voor Power Platform oplossingen om deze context te bieden. Deze context maakt het mogelijk voor Copilot om:

  • Begrijp de structuur van uw app
  • Identificeer besturingselementnamen en eigenschappen
  • Genereer nauwkeurigere teststappen
  • Verwijs naar de juiste bestandspaden

Gegenereerde tests beoordelen en verfijnen

Hoewel door AI gegenereerde tests een uitstekend startpunt vormen, geldt altijd het volgende:

  • Controleer of de controlereferenties overeenkomen met uw toepassing
  • Voeg beweringen toe voor bedrijfskritische functionaliteit
  • Zorg ervoor dat randgevallen op de juiste manier worden afgehandeld
  • Valideer authenticatieconfiguratie

Combineer met handmatige expertise

Voor complexe testscenario's gebruikt u GitHub Copilot om:

  • Genereer het testframework en de structuur
  • Standaardvalidatiepatronen maken
  • Stel randgevallen voor om te overwegen

Breid uw domeinexpertise vervolgens uit voor:

  • Bedrijfsspecifieke validatieregels
  • Milieuoverwegingen
  • Gespecialiseerde testgegevens

Veelvoorkomende testgeneratiepatronen

In deze sectie worden enkele veelvoorkomende testgeneratiepatronen beschreven:

Canvas-apps testen

Gebruik voor canvas-apps prompts die verwijzen naar het App.fx.yaml bestand in uw broncodegestuurde oplossing:

Snel:
Genereer een test voor mijn Canvas-app op ./SolutionPackage/src/CanvasApps/src/MyExpenseApp/Src/App.fx.yaml waarmee het proces voor het indienen van onkosten wordt gevalideerd. Tijdens de test moeten de kostenvelden worden ingevuld, moet het formulier worden verzonden en moet worden gecontroleerd of het bevestigingsbericht wordt weergegeven.

Modelgestuurde apps testen

Bij modelgestuurde apps ligt de nadruk op entiteitsnavigatie, formulierinteracties en bedrijfsregels:

Snel:
Maak een test voor mijn Modelgestuurde app die het formulier Account-entiteit test. De test moet een nieuw accountrecord aanmaken, vereiste velden valideren en verifiëren of de bedrijfsregels voor de berekening van de kredietlimiet correct werken.

Testen van extensies Dataverse

Bij tests ligt de nadruk op gegevensbewerkingen en validatie van bedrijfslogica: Dataverse

Snel:
Genereer een Dataverse test die de aangepaste plug-ins in mijn oplossing valideert. De test moet testrecords maken, de uitvoering van de plug-in activeren en verifiëren of de verwachte gegevenstransformaties hebben plaatsgevonden.

Voorbeeldspecifieke testprompts

Voor de meest nauwkeurige testgeneratie kunt u het beste specifieke voorbeelden uit de Test Engine-voorbeeldencatalogus raadplegen die aan uw testbehoeften voldoen. ... Hier volgen enkele op maat gemaakte prompts voor veelvoorkomende testscenario's:

Voorbeeldprompts voor ButtonClicker

Het ButtonClicker-voorbeeld demonstreert het testen van de basisfunctionaliteit van een teller. Gebruik deze prompts:

Snel:
Genereer een test voor mijn teller-app met een vergelijkbare structuur als het ButtonClicker-voorbeeld. In mijn app zitten knoppen met de namen "IncrementBtn" en "ResetBtn" en een "CounterLabel" die het huidige aantal weergeeft. Voer een test uit om te controleren of beide knoppen correct werken en of het maximumaantal 10 is.

Snel:
Maak een test voor mijn app voor knopinteractie, waarbij ik het voorbeeld ButtonClicker als referentie gebruik. Mijn app heeft een 'SubmitButton' die alleen ingeschakeld mag worden als de velden 'NameInput' en 'EmailInput' zijn ingevuld. Genereer een testplan met Power Fx stappen om dit gedrag te valideren.

De voorbeelden BasicGallery en NestedGallery laten zien hoe u galerijinteracties kunt testen:

Snel:
Genereer een test voor mijn galerij-app waarin ik een 'producten'-galerij heb met productartikelen die de besturingselementen 'TitleLabel', 'PriceLabel' en 'SelectButton' bevatten. Ik gebruik de voorbeeldstructuur BasicGallery om te controleren of ik items kan selecteren en of de juiste details in een "DetailPanel" worden weergegeven.

Gegevensbewerkingsprompts

Het Dataverse voorbeeld demonstreert het testen van gegevensbewerkingen:

Snel:
Maak een test voor mijn CRM-app met behulp van het Dataverse voorbeeldpatroon. Test of ik een nieuw contactpersoonrecord kan aanmaken, deze kan bijwerken en vervolgens kan controleren of de wijzigingen behouden blijven. Omvat zowel UI-tests als directe Dataverse bewerkingen.

AI-testprompts

Voor het testen van AI-gestuurde functionaliteit, raadpleeg het AI Prompt-voorbeeld:

Snel:
Genereer een test voor mijn sentimentanalyse-app op basis van het AI Prompt-voorbeeld. Mijn app heeft een tekstvak 'FeedbackInput' en gebruikt AI Builder om deze te classificeren als positief, negatief of neutraal. Maak een test die valideert dat verschillende invoer de verwachte uitvoer oplevert binnen acceptabele drempelwaarden.

Geavanceerde technieken

In dit gedeelte vindt u voorbeelden van geavanceerde promptmogelijkheden.

Het creëren van testsuites voor meerdere omgevingen

U kunt Copilot vragen om tests te genereren die in meerdere omgevingen werken:

Snel:
Genereer een testsuite voor mijn app die kan worden uitgevoerd in DEV-, TEST- en PROD-omgevingen met de juiste configuratievariabelen voor elke omgeving.

Het genereren van scenario's voor het simuleren van gegevens

Voor geïsoleerde tests met connector-mocking: ...

Snel:
Maak een test met nagebootste connectorreacties voor mijn app die de Office 365 Outlook-connector gebruikt. De test moet het ontvangen van e-mails simuleren en de verwerkingslogica van de app valideren.

Het testen van AI-mogelijkheden en het verwerken van niet-deterministische resultaten

Wanneer u met AI-gestuurde applicaties werkt, brengt testen unieke uitdagingen met zich mee, omdat de AI-uitvoer tussen runs enigszins kan variëren, zelfs bij identieke invoer. Dit niet-deterministische gedrag vereist speciale testbenaderingen.

Inzicht in niet-deterministisch testen

Bij niet-deterministisch testen worden uitkomsten gevalideerd die legitiem kunnen variëren tussen verschillende testruns:

  • Uitvoer van AI-modellen: reacties van AI-modellen zoals GPT of aangepaste AI Builder componenten
  • Vertrouwensscores: Numerieke evaluaties die binnen acceptabele grenzen kunnen fluctueren
  • Gegenereerde inhoud: Tekst of aanbevelingen geproduceerd door AI-systemen

Preview.AIExecutePrompt gebruiken voor deterministisch testen van AI-mogelijkheden

De testengine biedt de Preview.AIExecutePrompt die deterministische validatie van AI-reacties mogelijk maakt. Met deze aanpak kunt u:

  • AI-prompts uitvoeren binnen testscenario's
  • Parseer en valideer de gestructureerde antwoorden
  • Controleer of de kritische uitkomsten aan de verwachtingen voldoen, ondanks mogelijke variaties.

Voorbeeld: Beoordelingsevaluatie met AI Builder

Het volgende voorbeeld laat zien hoe u de functie Preview.AIExecutePrompt kunt gebruiken om een op AI gebaseerd beoordelingssysteem te testen:

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 dit voorbeeld:

  • De test voert een AI-prompt uit tegen het "PromptEvaluator"-model
  • Het geeft een context en een vraag voor evaluatie door
  • Het valideert dat de geretourneerde beoordeling overeenkomt met de verwachte waarde
  • Het biedt duidelijke feedback over het succes of falen van een test

U kunt de volledige implementatie bekijken in het AI Prompt-voorbeeld uit de PowerApps-TestEngine repository.

Integratie van AI-bewust testen

Bij gebruik van GitHub Copilot om tests te genereren voor AI-gestuurde applicaties:

Snel:
Genereer een test voor mijn AI-gestuurde app die gebruikmaakt van AI Builder formulierverwerking. Neem teststappen op die de AI-resultaten valideren met een passende tolerantie voor niet-deterministische uitkomsten.

Probleemoplossing en verfijning

Als GitHub Copilot tests genereert die niet aan uw behoeften voldoen:

  • Verfijn uw prompt: Wees specifieker over wat u wilt testen
  • Geef voorbeelden: Link naar specifieke testvoorbeelden die passen bij uw gewenste stijl
  • Complexe tests opsplitsen: Vraag om generatie van kleinere, gerichte testcomponenten
  • Itereren: Gebruik de antwoorden van Copilot om uw volgende prompt te verfijnen

Ontdek de functies van Test Engine
Blader door de catalogus met Test Engine-voorbeelden
Meer informatie over testfuncties Power Fx
Begrijp het YAML-testformaat
Verken authenticatieopties
Training: Applicaties bouwen met agentmodus GitHub Copilot