GitHub Copilot 사용하여 AI 지원 테스트 작성(사용되지 않음)

참고

테스트 엔진은 더 이상 사용되지 않으며 향후 릴리스에서 제거될 예정입니다. Power Platform 및 Dynamics 365 서비스의 테스트 자동화 기능에는 Power Platform Playwright 샘플을 사용합니다.

애플리케이션에 대한 포괄적인 테스트 계획을 만드는 일은 시간이 많이 걸릴 수 있으며, 특히 복잡한 시나리오의 경우 더욱 그렇습니다. Power Platform GitHub Copilot 같은 AI 지원 제작 도구는 테스트 템플릿을 생성하고, 테스트 사례를 제안하고, 상용구 코드 생성을 자동화하여 이 프로세스를 크게 가속화할 수 있습니다.

이 가이드에서는 Power Platform 소스 제어 솔루션에서 GitHub Copilot 사용하여 테스트 엔진 테스트 계획을 효율적으로 만드는 방법을 설명합니다.

사전 요구 사항

시작하기 전에 다음 사항을 확인하세요.

테스트 작성 환경 설정

AI 지원 테스트 작성의 효율성을 극대화하려면 다음 도구를 구조화된 워크플로에 결합하세요.

  1. 소스 파일을 받으세요
    • Power Platform 환경 또는 솔루션을 소스 제어에서 복제합니다.
    • Power Platform의 pac solution exportpac solution unpack을 사용하여 파일로부터 솔루션을 내보내고 압축을 풉니다.
  2. 버전 제어를 위해 git 저장소를 초기화합니다(아직 완료되지 않은 경우)
  3. 솔루션 저장소에 전용 테스트 폴더를 만듭니다.
  4. Visual Studio Code 솔루션 폴더 열기

테스트 만들기에 GitHub Copilot 사용

GitHub Copilot 소스 제어 솔루션을 기반으로 다양한 테스트 구성 요소를 생성하는 데 도움이 될 수 있습니다. 이 기능을 효과적으로 사용하는 방법은 다음과 같습니다.

샘플 문서를 컨텍스트로 사용

Test Engine 샘플 카탈로그는 GitHub Copilot 대한 풍부한 참조 자료 소스를 제공합니다. Copilot가 더 높은 품질의 테스트를 생성하도록 돕기 위해 다음을 실천할 수 있습니다.

  • 작업 공간에 samples.md 파일 포함하기
  • 특정 샘플을 프롬프트에서 참조하세요.
  • 샘플 GitHub 리포지토리에 대한 링크 제공

예를 들어, 다음과 같은 작업을 할 수 있습니다.

  • VS Code에서 애플리케이션 코드와 samples.md 파일을 모두 엽니다.
  • Copilot에게 "ButtonClicker 샘플과 유사하게" 또는 "Dataverse 샘플의 패턴을 사용하여" 테스트를 생성하도록 요청합니다.
  • 테스트 요구 사항과 일치하는 샘플의 특정 기능을 참조하세요.

이 방법을 사용하면 Copilot Power Platform 테스트 엔진 패턴을 이해하고 보다 정확한 테스트를 생성할 수 있습니다.

GitHub Copilot와 에이전트 모드에서 작업

Visual Studio Code GitHub Copilot Chat 솔루션 파일을 기반으로 테스트를 생성하는 데 도움이 되는 Agent 모드 제공합니다. 이 모드를 사용하면 Copilot 프로젝트 컨텍스트에 더 깊이 액세스하고 이해할 수 있습니다.

테스트 생성을 위해 에이전트 모드를 사용하려면:

  1. VS Code에서 GitHub Copilot Chat(Ctrl+Shift+I)를 엽니다.
  2. Copilot 모드 선택기에서 Agent를 선택합니다.
  3. 만들고 싶은 테스트에 대한 자세한 프롬프트를 작성하세요.

테스트 생성을 위한 예시 프롬프트

테스트 생성을 위해 다음과 같은 프롬프트를 사용해 보세요.

목표:
Power Apps 테스트 엔진을 사용하여 ButtonClicker 샘플을 모델로 한 캔버스 앱용 포괄적인 테스트 제품군을 생성합니다.

프롬프트:
https://github.com/microsoft/PowerApps-TestEngine/tree/main/samples/buttonclicker 참조로 샘플을 사용하여 ./SolutionPackage/src/CanvasApps/src/MyApp/Src/App.fx.yaml에 대한 테스트를 생성합니다. 예상되는 사례, 경계 사례, 예외 사례를 만듭니다. 테스트에서는 테스트 YAML 파일을 만들고 Power Fx 샘플을 기반으로 테스트 단계, config.json, RunTest.ps1을 만들어서 테스트를 실행할 수 있어야 합니다.

목표:
모델 기반 앱에 대한 자세한 테스트 계획을 수립하여 핵심 기능과 비즈니스 로직이 예상대로 작동하는지 확인하세요.

프롬프트:
./SolutionPackage/src/Other/Solution.xml에 있는 모델 기반 앱에 대한 포괄적인 테스트 계획을 만듭니다. 테스트에서는 양식 로드, 레코드 생성, 비즈니스 규칙 실행을 검증해야 합니다. 테스트 YAML, Power Fx 단계 및 PowerShell 스크립트를 생성하여 테스트를 실행합니다.

목표:
Dataverse 엔터티의 CRUD 작업을 Power Fx 작업을 통해 검증하기 위한 테스트 계획을 작성합니다.

프롬프트:
내 Dataverse 엔티티에 대한 포괄적인 테스트 계획을 만듭니다. 테스트는 생성, 업데이트, 삭제 Power Fx 작업을 수행해야 합니다. 테스트 YAML, Power Fx 단계 및 PowerShell 스크립트를 생성하여 테스트를 실행합니다.

생성된 테스트 구성 요소 이해

GitHub Copilot 테스트를 생성하는 경우 일반적으로 다음 구성 요소를 만듭니다.

  • YAML 테스트 계획: 테스트 구조, 앱 URL 및 테스트 단계를 정의합니다.
  • Power Fx 테스트 단계: 표현식을 사용하여 테스트 논리를 포함합니다. Power Fx
  • config.json: 테스트 실행 매개변수에 대한 구성
  • RunTest.ps1: 테스트를 실행하는 PowerShell 스크립트

예: 생성된 테스트 구조

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

AI 지원 테스트 작성을 위한 모범 사례

테스트 엔진 테스트 만들기에 대한 GitHub Copilot 최대한 활용하려면 다음 섹션을 고려하세요.

프롬프트에서 명확한 맥락을 제공하세요

테스트하고 싶은 내용을 구체적으로 밝히고 다음에 대한 참조를 포함하세요.

  • 테스트할 정확한 파일
  • 템플릿으로 사용할 샘플 테스트
  • 다루고 싶은 특정 테스트 시나리오
  • 인증 또는 환경 요구 사항

컨텍스트를 위한 테스트 엔진 샘플 사용

samples.md 설명서는 테스트 엔진 리포지토리에서 사용 가능한 모든 샘플을 카탈로그로 작성합니다. 이 샘플은 GitHub Copilot 대한 프롬프트를 작성할 때 훌륭한 참조가 될 수 있습니다. 예를 들어, 버튼이 있는 캔버스 앱을 테스트할 때 버튼 클리커 샘플을 참조할 수 있습니다.

프롬프트:
https://github.com/microsoft/PowerApps-TestEngine/tree/main/samples/buttonclicker의 ButtonClicker 샘플을 사용하여 ./SolutionPackage/src/CanvasApps/src/MyApp/Src/App.fx.yaml에서 Canvas 앱에 대한 테스트를 생성합니다. 테스트는 다음과 같아야 합니다.
1. 카운터 버튼이 화면에서 값을 증가시키는지 확인하세요.
2. 테스트 경계 조건(예: 최대값)
3. OnTestCaseStart 및 OnTestCaseComplete 라이프사이클 후크 포함
4. 적절한 환경 변수를 사용하여 config.json을 생성합니다.

이 방법은 Copilot 테스트 구조를 이해하는 데 도움이 되며 입증된 예제를 기반으로 보다 정확하고 상황에 맞는 테스트를 생성합니다.

소스 제어 솔루션을 컨텍스트로 사용

Copilot 솔루션 구조를 분석할 수 있을 때 가장 잘 수행됩니다. 이러한 맥락을 제공하기 위해 솔루션에 대한 소스 제어를 사용하세요. Power Platform 이 컨텍스트를 사용하면 Copilot 다음을 수행할 수 있습니다.

  • 앱의 구조를 이해하세요
  • 컨트롤 이름과 속성 식별
  • 더 정확한 테스트 단계 생성
  • 올바른 파일 경로를 참조하세요

생성된 테스트를 검토하고 개선합니다.

AI가 생성한 테스트는 훌륭한 시작점을 제공하지만 항상 다음을 염두에 두십시오.

  • 제어 참조가 애플리케이션과 일치하는지 확인하세요.
  • 비즈니스에 중요한 기능에 대한 어설션 추가
  • 예외 상황이 적절하게 처리되는지 확인하세요.
  • 인증 구성 검증

수작업 전문 지식과 결합

복잡한 테스트 시나리오의 경우 GitHub Copilot 사용하여 다음을 수행합니다.

  • 테스트 프레임워크와 구조 생성
  • 표준 검증 패턴 생성
  • 고려해야 할 예외 사례를 제안합니다.

그런 다음 도메인 전문 지식을 추가하여 다음을 수행합니다.

  • 비즈니스별 검증 규칙
  • 환경적 고려 사항
  • 특수 테스트 데이터

일반적인 테스트 생성 패턴

이 섹션에는 몇 가지 일반적인 테스트 생성 패턴이 포함되어 있습니다.

캔버스 앱 테스트

캔버스 앱의 경우 소스 제어 솔루션의 App.fx.yaml 파일을 참조하는 프롬프트를 사용하세요.

프롬프트:
./SolutionPackage/src/CanvasApps/src/MyExpenseApp/Src/App.fx.yaml에서 Canvas 앱에 대한 테스트를 생성하여 비용 제출 프로세스를 검증합니다. 테스트에서는 비용 필드를 채우고, 양식을 제출하고, 확인 메시지가 나타나는지 확인해야 합니다.

모델 기반 앱 테스트

모델 기반 앱의 경우 엔터티 탐색, 양식 상호 작용 및 비즈니스 규칙에 중점을 둡니다.

프롬프트:
모델 기반 앱의 계정 엔터티 양식을 테스트하는 테스트를 만듭니다. 테스트에서는 새로운 계좌 레코드를 생성하고, 필수 필드의 유효성을 검사하고, 신용 한도 계산을 위한 비즈니스 규칙이 올바르게 작동하는지 확인해야 합니다.

Dataverse 확장 테스트

Dataverse 테스트의 경우, 데이터 작업과 비즈니스 로직 검증을 강조합니다.

프롬프트:
내 솔루션의 사용자 정의 플러그인을 검증하는 테스트를 생성합니다. Dataverse 테스트에서는 테스트 레코드를 생성하고, 플러그인 실행을 트리거하고, 예상한 데이터 변환이 발생했는지 확인해야 합니다.

샘플별 테스트 프롬프트

가장 정확한 테스트 생성을 얻으려면 테스트 요구 사항과 일치하는 테스트 엔진 샘플 카탈로그 에서 특정 샘플을 참조하세요. 일반적인 테스트 시나리오에 대한 맞춤형 프롬프트는 다음과 같습니다.

ButtonClicker 샘플 프롬프트

ButtonClicker 샘플 은 기본적인 카운터 기능 테스트를 보여줍니다. 다음 프롬프트를 사용하세요.

프롬프트:
ButtonClicker 샘플과 비슷한 구조로 카운터 앱에 대한 테스트를 생성합니다. 내 앱에는 "IncrementBtn"과 "ResetBtn"이라는 버튼이 있고, 이 버튼에는 현재 카운트를 표시하는 "CounterLabel"이 있습니다. 두 버튼이 모두 제대로 작동하는지, 최대 개수가 10인지 확인하는 테스트를 만듭니다.

프롬프트:
ButtonClicker 샘플을 참조하여 버튼 상호작용 앱에 대한 테스트를 만듭니다. 내 앱에는 "NameInput"과 "EmailInput" 필드가 완료되었을 때만 활성화되어야 하는 "SubmitButton"이 있습니다. 이 동작을 검증하기 위한 단계를 담은 테스트 계획을 생성하세요. Power Fx

BasicGalleryNestedGallery 샘플은 갤러리 상호작용을 테스트하는 방법을 보여줍니다.

프롬프트:
"TitleLabel", "PriceLabel", "SelectButton" 컨트롤이 포함된 제품 항목을 포함하는 "Products" 갤러리가 있는 저의 갤러리 앱에 대한 테스트를 생성하세요. BasicGallery 샘플 구조를 사용하여 항목을 선택할 수 있는지, 그리고 "DetailPanel"에 올바른 세부 정보가 표시되는지 확인합니다.

데이터 작업 프롬프트

Dataverse 샘플 은 데이터 작업 테스트를 보여줍니다.

프롬프트:
Dataverse 샘플 패턴을 사용하여 CRM 앱에 대한 테스트를 만듭니다. 새로운 연락처 레코드를 만들고 업데이트한 다음 변경 사항이 지속되는지 테스트합니다. UI 테스트와 Dataverse의 직접 운영을 모두 포함합니다.

AI 테스트 프롬프트

AI 기반 기능을 테스트하려면 AI 프롬프트 샘플을 참조하세요.

프롬프트:
AI 프롬프트 샘플을 기반으로 감정 분석 앱에 대한 테스트를 생성합니다. 내 앱에는 "FeedbackInput" 텍스트 상자가 있으며 AI Builder 사용하여 긍정, 부정 또는 중립으로 분류합니다. 허용 가능한 임계값 내에서 다양한 입력이 예상 출력을 생성하는지 검증하는 테스트를 만듭니다.

고급 기술

이 섹션에서는 고급 프롬프트 기능의 예를 제공합니다.

다중 환경 테스트 모음 만들기

Copilot 여러 환경에서 작동하는 테스트를 생성하라는 메시지를 표시할 수 있습니다.

프롬프트:
각 환경에 적합한 구성 변수를 사용하여 DEV, TEST, PROD 환경에서 실행할 수 있는 앱에 대한 테스트 모음을 생성합니다.

데이터 모의 시나리오 생성

커넥터 모킹을 사용한 격리된 테스트의 경우:

프롬프트:
Office 365 Outlook 커넥터를 사용하는 내 앱에 대한 모의 커넥터 응답을 사용하여 테스트를 만듭니다. 테스트에서는 이메일 수신을 시뮬레이션하고 앱의 처리 논리를 검증해야 합니다.

AI 기능 테스트 및 비결정적 결과 처리

AI 기반 애플리케이션을 사용하는 경우 테스트 과정에서 고유한 과제가 발생합니다. 입력이 동일하더라도 실행 간에 AI 출력이 약간씩 다를 수 있기 때문입니다. 이러한 비결정적 동작에는 특별한 테스트 접근 방식이 필요합니다.

비결정적 테스트 이해

비결정적 테스트에는 테스트 실행에 따라 합법적으로 달라질 수 있는 출력의 검증이 포함됩니다.

  • AI 모델 출력: GPT 또는 사용자 지정 AI Builder 구성 요소와 같은 AI 모델의 응답
  • 신뢰 점수: 허용 범위 내에서 변동될 수 있는 수치적 평가
  • 생성된 콘텐츠: AI 시스템이 생성한 텍스트 또는 추천

AI 기능의 결정론적 테스트를 위해 Preview.AIExecutePrompt 사용

테스트 엔진은 AI 응답의 결정론적 검증을 가능하게 하는 Preview.AIExecutePrompt 를 제공합니다. 이 접근 방식을 사용하면 다음이 가능합니다.

  • 테스트 시나리오 내에서 AI 프롬프트 실행
  • 구조화된 응답을 구문 분석하고 검증합니다.
  • 잠재적인 변화에도 불구하고 중요한 출력이 기대치를 충족하는지 확인하십시오.

예: AI Builder로 등급 평가

다음 예제에서는 Preview.AIExecutePrompt 함수를 사용하여 AI 기반 평가 시스템을 테스트하는 방법을 보여줍니다.

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

이 예에서는 다음이 적용됩니다.

  • 테스트는 "PromptEvaluator" 모델에 대해 AI 프롬프트를 실행합니다.
  • 평가를 위한 맥락과 질문을 전달합니다.
  • 반환된 평가가 예상 값과 일치하는지 확인합니다.
  • 테스트 성공 또는 실패에 대한 명확한 피드백을 제공합니다.

-TestEngine 저장소의 PowerAppsAI Prompt 샘플 에서 전체 구현을 살펴볼 수 있습니다.

AI 기반 테스트 통합

GitHub Copilot 사용하여 AI 기반 애플리케이션에 대한 테스트를 생성하는 경우:

프롬프트:
AI Builder 양식 처리를 사용하는 AI 기반 앱에 대한 테스트를 생성합니다. 비결정적 출력에 대한 적절한 허용 범위를 두고 AI 결과를 검증하는 테스트 단계를 포함합니다.

문제 해결 및 개선

GitHub Copilot 요구 사항을 충족하지 않는 테스트를 생성하는 경우:

  • 프롬프트를 더욱 구체적으로 정의하세요.: 테스트하려는 내용을 더욱 구체적으로 지정하세요.
  • 예시 제공: 원하는 스타일과 일치하는 특정 테스트 샘플에 대한 링크
  • 복잡한 테스트 분해: 더 작고 집중적인 테스트 구성 요소 생성 요청
  • 반복: Copilot의 응답을 활용하여 다음 프롬프트를 더욱 구체화해보세요.

테스트 엔진 기능 탐색
테스트 엔진 샘플 카탈로그를 탐색하세요
테스트 함수에 대해 알아보세요. Power Fx
YAML 테스트 형식 이해
인증 옵션 살펴보기
학습: GitHub Copilot 에이전트 모드로 애플리케이션 빌드