Note
Mesin Uji tidak digunakan lagi dan akan dihapus dalam rilis mendatang. Gunakan sampel Power Platform Playwright untuk kemampuan otomatisasi pengujian di Power Platform dan layanan Dynamics 365.
Manajemen Siklus Hidup Aplikasi (ALM) adalah pendekatan komprehensif untuk mengelola siklus hidup aplikasi dari konsep awal hingga pengembangan, pengujian, penerapan, dan pemeliharaan berkelanjutan. Dalam konteks Power Platform, menggabungkan pengujian otomatis dengan Test Engine ke dalam proses ALM Anda memastikan bahwa aplikasi diuji secara menyeluruh di setiap tahap pengembangan, menghasilkan rilis berkualitas lebih tinggi.
Memahami otomatisasi pengujian di ALM
Otomatisasi pengujian memainkan peran penting dalam proses ALM dengan:
-
Memastikan kualitas - Memverifikasi bahwa aplikasi berfungsi seperti yang diharapkan sebelum penerapan
-
Mengurangi risiko - Menangkap masalah lebih awal sebelum mencapai lingkungan produksi
-
Mengaktifkan integrasi berkelanjutan- Mendukung pengujian verifikasi build otomatis
-
Memfasilitasi penyebaran yang dikendalikan - Menambahkan gerbang kualitas untuk alur rilis
Dengan Power Apps Test Engine, Anda dapat mengintegrasikan pengujian otomatis ke dalam alur kerja Power Platform ALM yang ada, terlepas dari alat CI/CD mana yang Anda gunakan.
Siklus hidup otomatisasi pengujian
Test Engine mendukung siklus hidup pengujian lengkap yang terintegrasi dengan proses ALM Anda:
-
Pengembangan - Membuat dan menjalankan pengujian secara lokal selama pengembangan aplikasi
-
Validasi build - Jalankan pengujian sebagai bagian dari verifikasi build otomatis
-
Gerbang pengiriman - Gunakan hasil pengujian sebagai batasan kualitas untuk penyebaran terkontrol
-
Verifikasi produksi- Memvalidasi fungsionalitas penting di lingkungan produksi
Memulai otomatisasi pengujian di ALM
Untuk mulai memasukkan Test Engine ke dalam proses ALM Anda:
-
Buat rencana pengujian Anda- Rancang rencana pengujian YAML untuk solusi Anda Power Platform
-
Jalankan pengujian secara lokal- Verifikasi pengujian berfungsi di lingkungan pengembangan Anda
-
Menyiapkan autentikasi - Mengonfigurasi autentikasi yang sesuai untuk lingkungan eksekusi dan alur lokal Anda
-
Integrasikan dengan pipeline Anda, Hubungkan Test Engine ke jalur kerja ALM yang ada
-
Terapkan tolok ukur kualitas - Gunakan hasil pengujian untuk mengontrol pengembangan solusi
Tip
Mulailah dengan perjalanan pengguna yang penting dan perluas cakupan pengujian otomatis Anda secara bertahap saat Anda semakin terbiasa dengan Test Engine.
Versi kode sumber Test Engine (opsional)
Jika Anda menggunakan versi kode sumber Test Engine, Anda juga memerlukan:
-
.NET 8.0 SDK - Jika Anda berencana untuk membangun Test Engine dari sumber
-
Git - Untuk menarik perubahan dari repositori Power Apps Test Engine
- Selesaikan Langkah-langkah Penyiapan kode sumber untuk menjalankan pengujian menggunakan versi kompilasi lokal Test Engine
Pilihan integrasi
Test Engine terintegrasi secara mulus dengan berbagai alat dan proses ALM
Anda dapat menggunakan editor lokal seperti Visual Studio Code untuk mengedit file YAML untuk menulis pengujian Test Engine. Untuk menjalankan pengujian secara lokal:
- Pastikan Anda telah menginstal Microsoft Power Platform CLI
- Jika Anda menggunakan integrasi kontrol sumber, kloning proyek Anda ke komputer lokal Anda
- Gunakan pac test run untuk mengeksekusi pengujian Anda
- Tinjau hasil lulus / gagal tes
Azure CLI sangat penting untuk mendapatkan token akses untuk terhubung ke Dataverse. Secara lokal, Anda dapat menggunakan:
az login --allow-no-subscriptions
Anda dapat dengan mudah mengintegrasikan Test Engine dengan alur kerja bawaan dari Power Platform untuk pengalaman integrasi yang alami.
-
Alur Solusi - Tambahkan pengujian otomatis ke alur solusi Anda untuk memastikan kualitas di setiap tahap
-
Strategi Lingkungan — Uji di lingkungan pengembangan dan pengujian sebelum dipindahkan ke produksi
-
Templat Alur - Gunakan templat alur untuk menstandarkan pengujian di seluruh organisasi Anda
Anda dapat memicu pelaksanaan uji otomatis saat menggunakan host pipeline kustom:
- Buat alur cloud Power Automate yang dipicu berdasarkan kejadian alur
- Hubungkan ke sistem CI/CD Anda untuk menjalankan pengujian
- Memproses hasil pengujian dan memperbarui status alur
Diagram berikut menunjukkan contoh pola integrasi ini:
Alur ini menggunakan:
Integrasi CI/CD kustom dengan Power Automate
Untuk organisasi dengan alat CI/CD yang ada, Test Engine terintegrasi dengan alur kustom melalui Power Automate menggunakan fitur Power Platform Custom Host. Dengan pendekatan Host Kustom, Anda dapat:
- Tentukan host alur kerja kustom yang menjalankan pengujian otomatis Anda
- Buat alur cloud Power Automate yang memicu secara otomatis dari peristiwa penyebaran
- Jalankan
pac test run perintah langsung dari alur cloud untuk menjalankan pengujian yang disimpan dalam kontrol sumber
- Sambungkan ke sistem CI/CD pilihan Anda (Azure DevOps, GitHub Actions, dll.)
- Terapkan alur kerja persetujuan berdasarkan hasil pengujian
- Perbarui status penyebaran berdasarkan hasil pengujian
Integrasi ini memungkinkan Anda untuk mempertahankan investasi CI/CD yang ada sambil menambahkan kemampuan Test Engine ke proses ALM Anda. Host Kustom bertindak sebagai jembatan antara Power Platform fitur ALM asli dan infrastruktur pengujian eksternal Anda.
Anda dapat memperluas Power Platform Pipeline menggunakan host kustom atau langsung mengintegrasikan perintah pac test run ke dalam eksekusi skrip build Anda.
Berikut adalah contoh file YAML alur Azure DevOps yang menunjukkan cara menyiapkan dan menjalankan pengujian Power Apps Test Engine:
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 referensi
Komponen referensi berikut mungkin berguna saat Anda membangun alur pengujian otomatisasi Anda.
Berikut adalah contoh alur kerja GitHub Actions yang melakukan proses eksekusi pengujian 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 terkait
Pelajari tentang sintaks YAML Test Engine
Menyiapkan autentikasi untuk pengujian Anda
Uji aplikasi kanvas, aplikasi yang diarahkan model, atau ekstensi Dataverse
Memahami Power Platform ALM