Udostępnij przez


Tworzenie testów wspomagane przez sztuczną inteligencję za pomocą GitHub Copilot (wersja zapoznawcza)

Notatka

Funkcje w wersji zapoznawczej nie są przeznaczone do użytku w środowiskach produkcyjnych i mogą mieć ograniczoną funkcjonalność. Te funkcje są udostępniane przed oficjalnym wydaniem, dzięki czemu klienci mogą szybciej uzyskać do nich dostęp i przekazać opinie na ich temat.

Tworzenie kompleksowych planów testów dla Power Platform aplikacji może być czasochłonne, szczególnie w przypadku złożonych scenariuszy. Narzędzia do tworzenia wspomagane sztuczną inteligencją, takie jak GitHub Copilot te mogą znacznie przyspieszyć ten proces, generując szablony testowe, sugerując przypadki testowe i automatyzując tworzenie kodu standardowego.

W tym przewodniku wyjaśniono, jak używać GitHub Copilot rozwiązań Power Platform kontroli źródła w celu wydajnego tworzenia planów testów aparatu testowego.

Wymagania wstępne

Zanim zaczniesz, upewnij się, że masz:

Konfigurowanie testowego środowiska tworzenia

Aby zmaksymalizować skuteczność tworzenia testów wspomaganych przez sztuczną inteligencję, połącz te narzędzia w ustrukturyzowany przepływ pracy:

  1. Pobieranie plików źródłowych
  2. Zainicjuj repozytorium git na potrzeby kontroli wersji (jeśli jeszcze tego nie zrobiono)
  3. Utwórz dedykowany folder testowy w repozytorium rozwiązania
  4. Otwieranie folderu rozwiązania w Visual Studio kodzie

Używanie GitHub Copilot do tworzenia testów

GitHub Copilot może pomóc w generowaniu różnych składników testowych na podstawie rozwiązania kontrolowanego przez źródło. Oto jak efektywnie wykorzystać jego możliwości:

Używanie przykładowej dokumentacji jako kontekstu

Katalog próbek Test Engine stanowi bogate źródło materiałów GitHub Copilot referencyjnych. Możesz pomóc Copilot w generowaniu testów o wyższej jakości poprzez:

  • Dołączanie pliku samples.md w obszarze roboczym
  • Odwoływanie się do określonych próbek w podpowiedziach
  • Udostępnianie linków do przykładowych repozytoriów GitHub

Można na przykład:

  • Otwórz zarówno kod aplikacji, jak i plik samples.md w programie VS Code
  • Poproś Copilota o utworzenie testów "podobnych do przykładu ButtonClicker" lub "przy użyciu wzorców z Dataverse próbki"
  • Odwoływanie się do konkretnych możliwości na podstawie próbek, które odpowiadają Twoim potrzebom w zakresie testowania

Takie podejście pomaga Copilot zrozumieć Power Platform wzorce silnika testowego i generować dokładniejsze testy.

Praca z GitHub Copilot w trybie agenta

Visual Studio Czat kodu GitHub Copilot oferuje tryb agenta , który może pomóc w generowaniu testów na podstawie plików rozwiązania. Ten tryb umożliwia Copilot dostęp do kontekstu projektu i głębsze zrozumienie go.

Aby użyć trybu agenta do generowania testów:

  1. W VS Code otwórz GitHub Copilot czat (Ctrl+Shift+I)
  2. Wybierz Agent z selektora trybu Copilot
  3. Utwórz szczegółowy monit o teście, który chcesz utworzyć

Przykładowe monity dotyczące generowania testów

Spróbuj użyć monitów takich jak te do generowania testu:

Cel:
Wygeneruj kompleksowy zestaw testów dla aplikacji kanwy przy użyciu aparatu Power Apps testowego, wzorowany na przykładzie ButtonClicker.

Monit:
Wygeneruj test dla ./SolutionPackage/src/CanvasApps/src/MyApp/Src/App.fx.yaml przy użyciu przykładu jako https://github.com/microsoft/PowerApps-TestEngine/tree/main/samples/buttonclicker odwołania. Tworzenie oczekiwanych przypadków, przypadków brzegowych i wyjątków. Test powinien utworzyć testowy plik YAML i Power Fx kroki testu, config.json i RunTest.ps1 na podstawie przykładu, aby umożliwić mi uruchomienie testu.

Cel:
Utwórz szczegółowy plan testów dla aplikacji opartej na modelu, aby upewnić się, że podstawowe funkcje i logika biznesowa działają zgodnie z oczekiwaniami.

Monit:
Utwórz kompleksowy plan testów dla mojej aplikacji opartej na modelu znajdującej się pod adresem ./SolutionPackage/src/Other/Solution.xml. Test powinien zweryfikować obciążenie formularza, tworzenie rekordów i wykonywanie reguł biznesowych. Wygeneruj testowy kod YAML, Power Fx kroki i skrypt programu PowerShell, aby uruchomić test.

Cel:
Skonstruuj plan testów dla Dataverse jednostek, aby zweryfikować operacje CRUD za pomocą Power Fx akcji.

Monit:
Stwórz kompleksowy plan testów dla moich Dataverse entów. Test powinien wykonywać akcje tworzenia, aktualizowania i usuwania Power Fx . Wygeneruj testowy kod YAML, Power Fx kroki i skrypt programu PowerShell, aby uruchomić test.

Opis wygenerowanych składników testowych

Podczas GitHub Copilot generowania testu zazwyczaj tworzone są następujące składniki:

  • Plan testu YAML: definiuje strukturę testu, adres URL aplikacji i kroki testu
  • Power Fx kroki testu: zawiera logikę testu przy użyciu Power Fx wyrażeń
  • config.json: Konfiguracja parametrów wykonywania testów
  • RunTest.ps1: skrypt programu PowerShell do wykonywania testu

Przykład: Wygenerowana struktura testowa

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

Najlepsze rozwiązania dotyczące tworzenia testów wspomaganych przez sztuczną inteligencję

Zapoznaj się z poniższymi sekcjami, aby w pełni wykorzystać GitHub Copilot możliwości tworzenia testów aparatu testowego.

Podaj jasny kontekst w swoich podpowiedziach

Określ konkretnie, co chcesz przetestować, i dołącz odniesienia do:

  • Dokładne pliki do przetestowania
  • Przykładowe testy do użycia jako szablony
  • Konkretne scenariusze testowe, które chcesz objąć
  • Wszelkie wymagania dotyczące uwierzytelniania lub środowiska

Używanie przykładów aparatu testowego dla kontekstu

Dokumentacja samples.md kataloguje wszystkie dostępne próbki z repozytorium Test Engine, które mogą być doskonałym punktem odniesienia podczas GitHub Copilot tworzenia podpowiedzi. Na przykład podczas testowania aplikacji kanwy z przyciskami możesz odwołać się do przykładu Button Clicker:

Monit:
Wygeneruj test dla mojej aplikacji kanwy pod adresem ./SolutionPackage/src/CanvasApps/src/MyApp/Src/App.fx.yaml przy użyciu przykładu ButtonClicker z https://github.com/microsoft/PowerApps-TestEngine/tree/main/samples/buttonclicker. Test powinien:
1. Sprawdź, czy mój przycisk licznika zwiększa wartość na ekranie
2. Testowe warunki brzegowe (np. wartość maksymalna)
3. Uwzględnij punkty zaczepienia cyklu życia OnTestCaseStart i OnTestCaseComplete
4. Wygeneruj config.json z odpowiednimi zmiennymi środowiskowymi

Takie podejście pomaga Copilot zrozumieć strukturę testu i generuje dokładniejsze, kontekstowo istotne testy na podstawie sprawdzonych przykładów.

Używanie rozwiązań kontrolowanych przez źródło jako kontekstu

Copilot działa najlepiej, gdy może analizować strukturę rozwiązania. Użyj kontroli źródła dla Power Platform rozwiązań , aby zapewnić ten kontekst. Ten kontekst umożliwia Copilotowi:

  • Omówienie struktury aplikacji
  • Identyfikowanie nazw i właściwości formantów
  • Generowanie dokładniejszych kroków testowych
  • Odwoływanie się do poprawnych ścieżek plików

Przeglądanie i uściślanie wygenerowanych testów

Chociaż testy generowane przez sztuczną inteligencję stanowią doskonały punkt wyjścia, zawsze:

  • Sprawdzanie, czy odwołania do formantu są zgodne z aplikacją
  • Dodawanie potwierdzeń dla funkcji krytycznych dla działania firmy
  • Upewnij się, że przypadki brzegowe są odpowiednio obsługiwane
  • Weryfikowanie konfiguracji uwierzytelniania

Połącz z ręczną wiedzą specjalistyczną

W przypadku złożonych scenariuszy testowych użyj GitHub Copilot , aby:

  • Generowanie struktury i struktury testowej
  • Tworzenie standardowych wzorców walidacji
  • Zaproponuj skrajne przypadki do rozważenia

Następnie poszerz swoją wiedzę specjalistyczną w dziedzinie, aby:

  • Reguły walidacji specyficzne dla firmy
  • Względy środowiskowe
  • Specjalistyczne dane testowe

Typowe wzorce generowania testów

Ta sekcja zawiera kilka typowych wzorców generowania testów:

Testowanie aplikacji kanwy

W przypadku aplikacji kanwy użyj monitów odwołujących się do App.fx.yaml pliku w rozwiązaniu kontrolowanym przez źródło:

Monit:
Wygeneruj test dla mojej aplikacji Canvas pod adresem ./SolutionPackage/src/CanvasApps/src/MyExpenseApp/Src/App.fx.yaml, który weryfikuje proces przesyłania wydatków. Test powinien wypełnić pola wydatków, przesłać formularz i sprawdzić, czy pojawia się komunikat z potwierdzeniem.

Testowanie aplikacji opartych na modelu

W przypadku aplikacji opartych na modelu skoncentruj się na nawigacji po encjach, interakcjach z formularzami i regułach biznesowych:

Monit:
Utwórz test dla mojej aplikacji opartej na modelu, który testuje formularz encji Konto. Test powinien utworzyć nowy rekord konta, zweryfikować wymagane pola i sprawdzić, czy reguły biznesowe dotyczące obliczania limitu kredytowego działają poprawnie.

Testowanie Dataverse rozszerzeń

W przypadku Dataverse testów podkreśl operacje na danych i walidację logiki biznesowej:

Monit:
Wygeneruj test, Dataverse który weryfikuje niestandardowe wtyczki w moim rozwiązaniu. Test powinien utworzyć rekordy testowe, wyzwolić wykonanie wtyczki i zweryfikować, czy wystąpiły oczekiwane transformacje danych.

Podpowiedzi testowe specyficzne dla próbki

Aby uzyskać najdokładniejsze generowanie testów, odwołaj się do określonych przykładów z katalogu przykładów aparatu testowego, które odpowiadają Twoim potrzebom testowym. Oto dostosowane podpowiedzi dla typowych scenariuszy testowych:

Przykładowe podpowiedzi ButtonClicker

Przykład ButtonClicker demonstruje podstawowe testowanie funkcji licznika. Skorzystaj z tych monitów:

Monit:
Wygeneruj test dla mojej aplikacji licznika o strukturze podobnej do przykładu ButtonClicker. Moja aplikacja ma przyciski o nazwach "IncrementBtn" i "ResetBtn" z "CounterLabel", który wyświetla bieżącą liczbę. Utwórz test, który sprawdza, czy oba przyciski działają poprawnie i czy maksymalna liczba wynosi 10.

Monit:
Utwórz test dla mojej aplikacji do interakcji z przyciskami, używając przykładu ButtonClicker jako odwołania. Moja aplikacja ma element "SubmitButton", który powinien być włączony tylko wtedy, gdy pola "NameInput" i "EmailInput" są ukończone. Wygeneruj plan testu z krokami Power Fx w celu zweryfikowania tego zachowania.

Przykłady BasicGallery i NestedGallery pokazują, jak testować interakcje galerii:

Monit:
Wygeneruj test dla mojej aplikacji galerii, w której mam galerię "Produkty" z elementami produktu zawierającymi kontrolki "TitleLabel", "PriceLabel" i "SelectButton". Użyj przykładowej struktury BasicGallery, aby sprawdzić, czy mogę wybrać elementy i czy poprawne szczegóły są wyświetlane w panelu "DetailPanel".

Monity o operacje na danych

W Dataverse przykładzie przedstawiono testowanie operacji na danych:

Monit:
Utwórz test dla mojej aplikacji CRM, korzystając z przykładowego wzorca Dataverse . Sprawdź, czy mogę utworzyć nowy rekord Kontakt, zaktualizuj go, a następnie sprawdź, czy zmiany są trwałe. Uwzględnij zarówno testy interfejsu użytkownika, jak i operacje bezpośrednie Dataverse .

Podpowiedzi do testowania AI

Aby przetestować funkcje oparte na sztucznej inteligencji, zapoznaj się z przykładem monitu AI:

Monit:
Wygeneruj test dla mojej aplikacji do analizy tonacji na podstawie przykładu AI Prompt. Moja aplikacja ma pole tekstowe "FeedbackInput" i służy AI Builder do klasyfikowania jej jako pozytywnej, negatywnej lub neutralnej. Utwórz test, który weryfikuje różne dane wejściowe, generuje oczekiwane dane wyjściowe w akceptowalnych progach.

Zaawansowane techniki

Ta sekcja zawiera przykłady zaawansowanych funkcji monitów.

Tworzenie zestawów testów dla wielu środowisk

Możesz monitować Copilot o wygenerowanie testów, które działają w wielu środowiskach:

Monit:
Wygeneruj zestaw testów dla mojej aplikacji, który może działać w środowiskach DEV, TEST i PROD z odpowiednimi zmiennymi konfiguracyjnymi dla każdego środowiska.

Generowanie scenariuszy mockowania danych

W przypadku izolowanych testów z makietowaniem łącznika:

Monit:
Utwórz test z pozorowanymi odpowiedziami łącznika dla mojej aplikacji, która korzysta z łącznika Office 365 programu Outlook. Test powinien symulować odbieranie wiadomości e-mail i weryfikować logikę przetwarzania aplikacji.

Testowanie możliwości sztucznej inteligencji i obsługa wyników niedeterministycznych

Podczas pracy z aplikacjami opartymi na sztucznej inteligencji testowanie wiąże się z wyjątkowymi wyzwaniami, ponieważ dane wyjściowe sztucznej inteligencji mogą się nieznacznie różnić między przebiegami, nawet przy identycznych danych wejściowych. To niedeterministyczne zachowanie wymaga specjalnych podejść do testowania.

Opis testowania niedeterministycznego

Testowanie niedeterministyczne obejmuje walidację danych wyjściowych, które mogą się legalnie różnić między przebiegami testów:

  • Dane wyjściowe modelu AI: odpowiedzi z modeli AI, takich jak GPT lub komponenty niestandardowe AI Builder
  • Wyniki ufności: oceny liczbowe, które mogą wahać się w akceptowalnych zakresach
  • Treści generowane: teksty lub rekomendacje generowane przez systemy sztucznej inteligencji

Używanie Preview.AIExecutePrompt do deterministycznego testowania możliwości sztucznej inteligencji

Aparat testowy udostępnia element Preview.AIExecutePrompt , który umożliwia deterministyczną walidację odpowiedzi sztucznej inteligencji. Takie podejście pozwala na:

  • Wykonywanie podpowiedzi AI w scenariuszach testowych
  • Analizowanie i weryfikowanie ustrukturyzowanych odpowiedzi
  • Sprawdź, czy krytyczne dane wyjściowe spełniają oczekiwania pomimo potencjalnych odchyleń

Przykład: ocena ratingu za pomocą AI Builder

W poniższym przykładzie pokazano użycie Preview.AIExecutePrompt tej funkcji do testowania systemu oceniania opartego na sztucznej inteligencji:

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}
  ))

W tym przykładzie:

  • Test wykonuje monit sztucznej inteligencji względem modelu "PromptEvaluator"
  • Przechodzi kontekst i pytanie do oceny
  • Sprawdza, czy zwrócona ocena jest zgodna z oczekiwaną wartością
  • Zapewnia jasną informację zwrotną o powodzeniu lub niepowodzeniu testu

Pełną implementację można zapoznać się z przykładem AI Prompt z repozytorium the-TestEnginePowerApps.

Wdrażanie testów uwzględniających sztuczną inteligencję

W przypadku używania GitHub Copilot do generowania testów dla aplikacji opartych na sztucznej inteligencji:

Monit:
Wygeneruj test dla mojej aplikacji opartej na sztucznej inteligencji, która korzysta z AI Builder przetwarzania formularzy. Uwzględnij kroki testu, które weryfikują wyniki sztucznej inteligencji z odpowiednią tolerancją dla niedeterministycznych danych wyjściowych.

Rozwiązywanie problemów i udoskonalanie

Jeśli GitHub Copilot generuje testy, które nie spełniają Twoich potrzeb:

  • Doprecyzowanie monitu: Określ dokładniej, co chcesz przetestować
  • Podaj przykłady: Podaj linki do konkretnych próbek testowych, które pasują do pożądanego stylu
  • Rozbijanie złożonych testów: generowanie mniejszych składników testowych o charakterze żądanym
  • Iteracja: Użyj odpowiedzi Copilot, aby uściślić następny monit

Zapoznaj się z funkcjami aparatu testowego
Przeglądaj katalog przykładów aparatu testowego
Dowiedz się więcej o Power Fx funkcjach testowych
Omówienie formatu testu YAML
Zapoznaj się z opcjami uwierzytelniania
Szkolenie: Tworzenie aplikacji w GitHub Copilot trybie agenta