Nota
Test Engine ditamatkan dan akan dialih keluar dalam keluaran akan datang. Gunakan Sampel Penulis Drama Power Platform untuk keupayaan automasi ujian dalam Power Platform dan perkhidmatan Dynamics 365.
Pengurusan Kitaran Hayat Aplikasi (ALM) ialah pendekatan komprehensif untuk mengurus kitaran hayat aplikasi daripada konsep awal melalui pembangunan, ujian, penggunaan dan penyelenggaraan berterusan. Dalam konteks Power Platform, menggabungkan ujian automatik dengan Test Engine ke dalam proses ALM anda memastikan aplikasi diuji secara menyeluruh pada setiap peringkat pembangunan, menghasilkan keluaran berkualiti tinggi.
Memahami automasi ujian dalam ALM
Automasi ujian memainkan peranan penting dalam proses ALM dengan:
-
Memastikan kualiti - Mengesahkan bahawa aplikasi berfungsi seperti yang diharapkan sebelum penggunaan
-
Mengurangkan risiko - Menangkap isu lebih awal sebelum ia mencapai persekitaran pengeluaran
-
Mendayakan penyepaduan berterusan- Menyokong ujian pengesahan binaan automatik
-
Memudahkan penggunaan terkawal- Menambah pintu berkualiti untuk mengeluarkan saluran paip
Dengan Power Apps Test Engine, anda boleh menyepadukan ujian automatik ke dalam aliran kerja ALM Power Platform sedia ada anda, tanpa mengira alat CI/CD yang anda gunakan.
Kitaran hayat automasi ujian
Enjin Ujian menyokong kitaran hayat ujian lengkap yang disepadukan dengan proses ALM anda:
-
Pembangunan - Cipta dan jalankan ujian secara tempatan semasa pembangunan apl
-
Pengesahan binaan- Laksanakan ujian sebagai sebahagian daripada pengesahan binaan automatik
-
Keluarkan gerbang - Gunakan keputusan ujian sebagai pintu kualiti untuk penggunaan terkawal
-
Pengesahan pengeluaran- Sahkan fungsi kritikal dalam persekitaran pengeluaran
Bermula dengan automasi ujian dalam ALM
Untuk bermula dengan memasukkan Test Engine ke dalam proses ALM anda:
-
Buat pelan ujian anda- Reka bentuk pelan ujian YAML untuk penyelesaian anda Power Platform
-
Jalankan ujian secara tempatan- Sahkan ujian berfungsi dalam persekitaran pembangunan anda
-
Sediakan pengesahan - Konfigurasikan pengesahan yang sesuai untuk persekitaran pelaksanaan dan saluran paip tempatan anda
-
Sepadukan dengan saluran paip anda- Sambungkan Enjin Ujian ke saluran paip ALM sedia ada anda
-
Laksanakan pintu kualiti - Gunakan keputusan ujian untuk mengawal promosi penyelesaian
Petua
Mulakan dengan perjalanan pengguna kritikal dan kembangkan liputan ujian automatik anda secara beransur-ansur apabila anda menjadi lebih biasa dengan Test Engine.
Versi kod sumber Enjin Ujian (pilihan)
Jika anda menggunakan versi kod sumber Test Engine, anda juga memerlukan:
-
.NET 8.0 SDK - Jika anda bercadang untuk membina Test Engine daripada sumber
-
Git - Untuk menarik perubahan daripada repositori Enjin Ujian Power Apps
- Lengkapkan Langkah Persediaan kod sumber untuk menjalankan ujian menggunakan versi kompilasi tempatan Test Engine
Pilihan penyepaduan
Test Engine disepadukan dengan lancar dengan pelbagai alat dan proses ALM
Anda boleh menggunakan editor tempatan seperti Visual Studio Code untuk mengedit fail YAML untuk mengarang ujian Enjin Ujian. Untuk menjalankan ujian secara tempatan:
- Pastikan anda mempunyai Microsoft Power Platform CLI dipasang
- Jika anda menggunakan penyepaduan kawalan sumber, klon projek anda ke mesin tempatan anda
- Gunakan larian ujian pac untuk melaksanakan ujian anda
- Semak keputusan lulus / gagal ujian
Azure CLI adalah penting untuk mendapatkan token akses untuk menyambung ke Dataverse. Secara tempatan, anda boleh menggunakan:
az login --allow-no-subscriptions
Anda boleh menyepadukan Test Engine dengan mudah dengan Power Platform saluran paip terbina dalam untuk pengalaman bersepadu asli:
-
Saluran Paip Penyelesaian- Tambahkan ujian automatik pada saluran paip penyelesaian anda untuk memastikan kualiti pada setiap peringkat
-
Strategi Alam Sekitar- Uji dalam persekitaran pembangunan dan ujian sebelum mempromosikan kepada pengeluaran
-
Templat Saluran Paip - Gunakan templat saluran paip untuk menyeragamkan ujian di seluruh organisasi anda
Anda boleh mencetuskan pelaksanaan ujian automatik apabila menggunakan hos saluran paip tersuai:
- Cipta aliran awan Power Automate yang dicetuskan berdasarkan peristiwa saluran paip
- Sambungkan ke sistem CI/CD anda untuk menjalankan ujian
- Memproses keputusan ujian dan mengemas kini status saluran paip
Rajah berikut menunjukkan contoh corak penyepaduan ini:
Aliran ini menggunakan:
Penyepaduan CI/CD tersuai dengan Power Automate
Bagi organisasi yang mempunyai alat CI/CD sedia ada, Test Engine disepadukan dengan saluran paip tersuai melalui Power Automate menggunakan ciri Hos Tersuai Platform Power Platform. Dengan pendekatan Hos Tersuai, anda boleh:
- Tentukan hos saluran paip tersuai yang melaksanakan ujian automatik anda
- Cipta aliran awan Power Automate yang dicetuskan secara automatik daripada peristiwa penggunaan
- Laksanakan
pac test run arahan terus daripada aliran awan untuk menjalankan ujian yang disimpan dalam kawalan sumber
- Sambung ke sistem CI/CD pilihan anda (Azure DevOps, GitHub Actions, dsb.)
- Laksanakan aliran kerja kelulusan berdasarkan keputusan ujian
- Kemas kini status penggunaan berdasarkan keputusan ujian
Penyepaduan ini membolehkan anda mengekalkan pelaburan CI/CD sedia ada anda sambil menambah keupayaan Test Engine pada proses ALM anda. Hos Tersuai bertindak sebagai jambatan antara Power Platform ciri ALM asli dan infrastruktur ujian luaran anda.
Anda boleh memperluaskan Saluran Paip anda Power Platform menggunakan hos tersuai atau menyepadukan arahan larian ujian pac secara langsung untuk melaksanakan skrip binaan anda.
Berikut ialah contoh fail YAML saluran paip Azure DevOps yang menunjukkan cara menyediakan dan menjalankan ujian Enjin Ujian Power Apps:
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()
Komponen rujukan
Komponen rujukan berikut mungkin berguna semasa anda membina saluran paip ujian automasi anda.
Berikut ialah contoh aliran kerja GitHub Actions yang melaksanakan proses pelaksanaan ujian yang sama:
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
Artikel berkaitan
Ketahui tentang sintaks YAML Enjin Ujian
Sediakan pengesahan untuk ujian anda
Aplikasi kanvas uji, aplikasi dipacu model atau Dataverse sambungan
Fahami Power Platform ALM