Bemærk
Forhåndsversionsfunktionerne er ikke beregnet til produktionsformål og kan have begrænset funktionalitet. Disse funktioner er tilgængelige før en officiel udgivelse, så kunderne kan få tidlig adgang og give feedback.
Application Lifecycle Management (ALM) er en omfattende tilgang til styring af programmers livscyklus fra det første koncept til udvikling, test, implementering og løbende vedligeholdelse. I forbindelse med Power Platform inkorporering af automatiseret test med Test Engine i din ALM-proces sikrer det, at applikationer testes grundigt på hvert udviklingstrin, hvilket resulterer i udgivelser af højere kvalitet.
Forståelse af testautomatisering i ALM
Testautomatisering spiller en afgørende rolle i ALM-processen ved at:
-
Sikring af kvalitet – Bekræftelse af, at programmer fungerer som forventet før implementering
-
Reduktion af risici - Fang problemer tidligt, før de når produktionsmiljøer
-
Muliggør kontinuerlig integration – Understøttelse af automatiseret build-verifikationstest
-
Facilitering af kontrollerede udrulninger – tilføjelse af kvalitetsporte til frigivelsespipelines
Med Power Apps Test Engine kan du integrere automatiseret testning i dine eksisterende Power Platform ALM-arbejdsgange, uanset hvilket CI/CD-værktøj du bruger.
Livscyklus for testautomatisering
Testprogrammet understøtter en komplet testlivscyklus, der integreres med dine ALM-processer:
-
Udvikling – Opret og kør test lokalt under appudvikling
-
Buildvalidering – Udfør test som en del af automatiseret buildbekræftelse
-
Frigivelse af porte – Brug testresultater som kvalitetsporte til kontrollerede udrulninger
-
Produktionsbekræftelse – validering af kritisk funktionalitet i produktionsmiljøer
Kom godt i gang med testautomatisering i ALM
Sådan kommer du i gang med at inkorporere Test Engine i dine ALM-processer:
-
Opret din testplan – Design YAML-testplaner til dine Power Platform løsninger
-
Kør test lokalt – Kontrollér, at test fungerer i dit udviklingsmiljø
-
Konfigurer godkendelse – Konfigurer passende godkendelse til dine lokale udførelses- og pipelinemiljøer
-
Integrer med din pipeline – Tilslut testprogrammet til din eksisterende ALM-pipeline
-
Implementer kvalitetsporte - Brug testresultater til at kontrollere promoveringen af løsninger
Tip
Start med kritiske brugerrejser, og udvid gradvist din automatiserede testdækning, efterhånden som du bliver mere fortrolig med Test Engine.
Kildekodeversion af testprogrammet (valgfrit)
Hvis du bruger kildekodeversionen af Test Engine, skal du også:
Indstillinger for integration
Test Engine integreres problemfrit med forskellige ALM-værktøjer og -processer
Du kan bruge en lokal editor som Visual Studio Kode til at redigere YAML-filerne for at oprette testene i testprogrammet. Sådan kører du testene lokalt:
- Sørg for, at du har Microsoft Power Platform CLI installeret
- Hvis du bruger integration af kildekontrol, skal du klone dit projekt til din lokale maskine
- Brug pac-testkørslen til at udføre din test
- Gennemgå testens beståede/ikke beståede resultater
Azure CLI er afgørende for at få adgangstokens, som du kan oprette forbindelse til Dataverse. Lokalt kan du bruge:
az login --allow-no-subscriptions
Du kan nemt integrere Test Engine med Power Platform de indbyggede pipelines for at få en oprindelig integreret oplevelse:
Du kan udløse udførelse af automatiserede test, når du bruger en brugerdefineret pipelinevært:
- Opret et Power Automate cloudflow, der udløses baseret på pipelinehændelser
- Opret forbindelse til dit CI/CD-system for at køre testene
- Behandl testresultater, og opdater pipelinestatus
Følgende diagram viser et eksempel på dette integrationsmønster:
Dette flow bruger:
Brugerdefineret CI/CD-integration med Power Automate
For organisationer med eksisterende CI/CD-værktøjer integreres testprogrammet med brugerdefinerede pipelines ved Power Automate hjælp af Power Platform funktionen Custom Host . Med Custom Host-tilgangen kan du:
- Definer en brugerdefineret pipelinevært , der udfører dine automatiserede tests
- Opret Power Automate cloudflows, der udløses automatisk fra udrulningshændelser
- Udfør
pac test run kommandoer direkte fra cloudflow for at køre test, der er gemt i kildekontrolelementet
- Opret forbindelse til dit foretrukne CI/CD-system (Azure DevOpsGitHub Actions osv.)
- Implementere godkendelsesarbejdsgange baseret på testresultater
- Opdater installationsstatus baseret på testresultaterne
Denne integration giver dig mulighed for at vedligeholde dine eksisterende CI/CD-investeringer, samtidig med at du tilføjer Test Engine-funktionerne til din ALM-proces. Custom Host fungerer som en bro mellem Power Platform de oprindelige ALM-funktioner og din eksterne testinfrastruktur.
Du kan udvide din Power Platform pipeline ved hjælp af brugerdefineret vært eller integrere kommandoen pac test run direkte for at udføre dine buildscripts.
Her er et eksempel på en Azure DevOps YAML-pipelinefil, der viser, hvordan du konfigurerer og kører Power Apps test af testprogrammet
trigger:
- main
pool:
vmImage: 'windows-latest'
variables:
- group: PowerPlatformTestVariables # Create a variable group with these variables
# Required variables in the variable group:
# ClientId - Service Principal App ID
# ClientSecret - Service Principal Secret (mark as secret)
# TenantId - Microsoft Entra Tenant ID
# EnvironmentUrl - Power Platform Environment URL
# EnvironmentId - Power Platform Environment ID
steps:
# Download the test plan file from secure files
- task: DownloadSecureFile@1
name: testPlan
displayName: 'Download Test Plan File'
inputs:
secureFile: 'testplan.te.yaml' # Upload your test plan to Secure Files in Azure DevOps
# Install Power Platform CLI
- task: PowerShell@2
displayName: 'Install Power Platform CLI'
inputs:
targetType: 'inline'
script: |
Write-Host "Installing Power Platform CLI..."
$pacUrl = "https://aka.ms/PowerAppsCLI"
$pacZip = "$env:TEMP\pac.zip"
$pacDestination = "$env:TEMP\pac"
# Create the destination folder if it doesn't exist
if (-not (Test-Path $pacDestination)) {
New-Item -ItemType Directory -Path $pacDestination -Force | Out-Null
}
# Download PAC CLI
Invoke-WebRequest -Uri $pacUrl -OutFile $pacZip
# Extract PAC CLI
Expand-Archive -Path $pacZip -DestinationPath $pacDestination -Force
# Add PAC CLI to PATH
$env:PATH = "$pacDestination;$env:PATH"
# Verify installation
pac help
# Install Azure CLI and authenticate with service principal
- task: PowerShell@2
displayName: 'Install Azure CLI and Authenticate'
inputs:
targetType: 'inline'
script: |
Write-Host "Installing Azure CLI..."
$azureCliUrl = "https://aka.ms/installazurecliwindows"
$azureCliInstaller = "$env:TEMP\AzureCLI.msi"
# Download Azure CLI installer
Invoke-WebRequest -Uri $azureCliUrl -OutFile $azureCliInstaller
# Install Azure CLI silently
Start-Process -FilePath msiexec.exe -Args "/i $azureCliInstaller /quiet /norestart" -Wait
# Reload PATH to include Azure CLI
$env:PATH = [System.Environment]::GetEnvironmentVariable("PATH", "Machine") + ";" + [System.Environment]::GetEnvironmentVariable("PATH", "User")
# Authenticate with service principal
Write-Host "Authenticating with Azure CLI..."
az login --service-principal -u "$(ClientId)" -p "$(ClientSecret)" --tenant "$(TenantId)" --allow-no-subscriptions
# Authenticate PAC CLI with service principal
- task: PowerShell@2
displayName: 'Authenticate PAC CLI'
inputs:
targetType: 'inline'
script: |
Write-Host "Authenticating PAC CLI..."
# Create authentication profile
pac auth create --name TestEngineAuth --url "$(EnvironmentUrl)" --applicationId "$(ClientId)" --clientSecret "$(ClientSecret)" --tenant "$(TenantId)"
# Select the authentication profile
pac auth select --name TestEngineAuth
# Run the tests
- task: PowerShell@2
displayName: 'Execute Test Engine Tests'
inputs:
targetType: 'inline'
script: |
Write-Host "Running Test Engine tests..."
# Create output directory
$outputDir = "$(Build.ArtifactStagingDirectory)\TestResults"
New-Item -ItemType Directory -Path $outputDir -Force | Out-Null
# Run the tests
pac test run `
--test-plan-file "$(testPlan.secureFilePath)" `
--environment-id "$(EnvironmentId)" `
--tenant "$(TenantId)" `
--logConsole info `
--trx `
--outputDirectory $outputDir
if ($LASTEXITCODE -ne 0) {
Write-Error "Test execution failed with exit code $LASTEXITCODE"
exit $LASTEXITCODE
}
# Publish test results
- task: PublishTestResults@2
displayName: 'Publish Test Results'
inputs:
testResultsFormat: 'VSTest'
testResultsFiles: '$(Build.ArtifactStagingDirectory)\TestResults\*.trx'
mergeTestResults: true
testRunTitle: 'Power Apps Test Engine Results'
condition: always() # Ensure results are published even if tests fail
# Publish test artifacts
- task: PublishBuildArtifacts@1
displayName: 'Publish Test Artifacts'
inputs:
PathtoPublish: '$(Build.ArtifactStagingDirectory)\TestResults'
ArtifactName: 'TestArtifacts'
publishLocation: 'Container'
condition: always()
Referencekomponenter
Følgende referencekomponenter kan være nyttige, når du opretter din automatiseringstestpipeline.
Her er et eksempel på en GitHub Actions-arbejdsproces, der udfører den samme testudførelsesproces:
name: Test Engine Execution
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
workflow_dispatch: # Allow manual triggering
jobs:
test:
runs-on: windows-latest
env:
TENANT_ID: ${{ secrets.TENANT_ID }}
CLIENT_ID: ${{ secrets.CLIENT_ID }}
CLIENT_SECRET: ${{ secrets.CLIENT_SECRET }}
ENVIRONMENT_URL: ${{ secrets.ENVIRONMENT_URL }}
ENVIRONMENT_ID: ${{ secrets.ENVIRONMENT_ID }}
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Install Power Platform CLI
run: |
Write-Host "Installing Power Platform CLI..."
$pacUrl = "https://aka.ms/PowerAppsCLI"
$pacZip = "$env:TEMP\pac.zip"
$pacDestination = "$env:TEMP\pac"
# Create the destination folder if it doesn't exist
if (-not (Test-Path $pacDestination)) {
New-Item -ItemType Directory -Path $pacDestination -Force | Out-Null
}
# Download PAC CLI
Invoke-WebRequest -Uri $pacUrl -OutFile $pacZip
# Extract PAC CLI
Expand-Archive -Path $pacZip -DestinationPath $pacDestination -Force
# Add PAC CLI to PATH
$env:PATH = "$pacDestination;$env:PATH"
echo "$pacDestination" >> $env:GITHUB_PATH
# Verify installation
pac help
- name: Install Azure CLI
run: |
Write-Host "Installing Azure CLI..."
$ProgressPreference = 'SilentlyContinue'
Invoke-WebRequest -Uri https://aka.ms/installazurecliwindows -OutFile .\AzureCLI.msi
Start-Process msiexec.exe -Wait -ArgumentList '/I AzureCLI.msi /quiet'
rm .\AzureCLI.msi
- name: Azure CLI Authentication
run: |
Write-Host "Authenticating with Azure CLI..."
az login --service-principal -u "$env:CLIENT_ID" -p "$env:CLIENT_SECRET" --tenant "$env:TENANT_ID" --allow-no-subscriptions
- name: PAC CLI Authentication
run: |
Write-Host "Authenticating PAC CLI..."
# Create authentication profile
pac auth create --name TestEngineAuth --url "$env:ENVIRONMENT_URL" --applicationId "$env:CLIENT_ID" --clientSecret "$env:CLIENT_SECRET" --tenant "$env:TENANT_ID"
# Select the authentication profile
pac auth select --name TestEngineAuth
- name: Run Test Engine tests
run: |
Write-Host "Running Test Engine tests..."
# Create output directory
$outputDir = "./TestResults"
New-Item -ItemType Directory -Path $outputDir -Force | Out-Null
# Run the tests
pac test run `
--test-plan-file "./TestPlan/testplan.te.yaml" `
--environment-id "$env:ENVIRONMENT_ID" `
--tenant "$env:TENANT_ID" `
--logConsole info `
--trx `
--outputDirectory $outputDir
if ($LASTEXITCODE -ne 0) {
Write-Error "Test execution failed with exit code $LASTEXITCODE"
exit $LASTEXITCODE
}
- name: Upload test results
uses: actions/upload-artifact@v3
if: always()
with:
name: test-results
path: ./TestResults
- name: Publish Test Results
uses: EnricoMi/publish-unit-test-result-action@v2
if: always()
with:
files: ./TestResults/**/*.trx
Relaterede artikler
Få mere at vide om YAML-syntaks for testprogram
Konfigurer godkendelse til dine tests
Test lærredprogrammer, modelbaserede programmer eller Dataverse udvidelser
Forstå Power Platform ALM