Nota
Las características en vista previa no se han diseñado para un uso de producción y pueden tener una funcionalidad restringida. Estas características están disponibles antes del lanzamiento oficial para que los clientes puedan tener un acceso anticipado y proporcionar comentarios.
La administración del ciclo de vida de las aplicaciones (ALM) es un enfoque completo para administrar el ciclo de vida de las aplicaciones, desde el concepto inicial hasta el desarrollo, las pruebas, la implementación y el mantenimiento continuo. En el contexto de Power Platform, la incorporación de pruebas automatizadas con Test Engine en su proceso ALM garantiza que las aplicaciones se prueben exhaustivamente en cada etapa del desarrollo, lo que da como resultado lanzamientos de mayor calidad.
Comprender la automatización de pruebas en ALM
La automatización de pruebas desempeña un papel fundamental en el proceso ALM al:
-
Garantizar la calidad: comprobar que las aplicaciones funcionen de la manera prevista antes de la implementación
-
Reducir los riesgos: detección temprana de problemas antes de que lleguen a los entornos de producción
-
Habilitar la integración continua: soporte para pruebas de verificación de compilación automatizadas
-
Facilitación de implementaciones controladas: incorporación de controles de calidad a las canalizaciones de lanzamiento
Con Power Apps motor de pruebas, puede integrar pruebas automatizadas en los flujos de trabajo existentes de Power Platform ALM, independientemente de las herramientas de CI/CD que use.
Ciclo de vida de la automatización de pruebas
Test Engine admite un ciclo de vida de pruebas completo que se integra con sus procesos ALM:
-
Desarrollo: crear y ejecutar pruebas localmente durante el desarrollo de la aplicación
-
Validación de compilación: ejecutar pruebas como parte de la verificación de compilación automatizada
-
Puertas de lanzamiento: utilice los resultados de las pruebas como puertas de calidad para implementaciones controladas
-
Verificación de producción: validar funcionalidades críticas en entornos de producción
Introducción a la automatización de pruebas en ALM
Para comenzar a incorporar Test Engine en sus procesos ALM:
-
Cree su plan de pruebas: diseñe planes de pruebas YAML para sus soluciones Power Platform.
-
Ejecutar pruebas localmente: verificar que las pruebas funcionen en su entorno de desarrollo
-
Configurar la autenticación: configurar la autenticación adecuada para sus entornos de ejecución y canalización locales.
-
Integre con su canalización: conectar Test Engine a su canalización de ALM existente
-
Implementar puertas de calidad: utilizar los resultados de las pruebas para controlar la promoción de soluciones
Sugerencia
Comience con recorridos de usuario críticos y amplíe gradualmente su cobertura de pruebas automatizadas a medida que se familiarice más con Test Engine.
Versión del código fuente de Test Engine (opcional)
Si está utilizando la versión de código fuente de Test Engine, también necesitará:
- SDK de .NET 8.0: si planea compilar el Test Engine desde el código fuente
-
Git : para extraer cambios del repositorio del motor de pruebas de Power Apps
- Complete los pasos de configuración del código fuente para ejecutar pruebas utilizando la versión compilada local de Test Engine
Opciones de integración
Test Engine se integra perfectamente con varias herramientas y procesos de ALM
Puede integrar fácilmente Test Engine con las canalizaciones integradas de Power Platform para obtener una experiencia integrada nativa:
Puede desencadenar la ejecución de pruebas automatizadas al utilizar un host de canalizaciones personalizadas:
- Crear un flujo en la nube de Power Automate que se desencadene en función de eventos de proceso
- Conéctese a su sistema CI/CD para ejecutar las pruebas
- Procesar los resultados de las pruebas y actualizar el estado de la canalización
El siguiente diagrama muestra un ejemplo de este patrón de integración:
Este flujo usa:
Integración personalizada de CI/CD con Power Automate
Para las organizaciones con herramientas de CI/CD existentes, Test Engine se integra con canalizaciones personalizadas a través de Power Automate mediante la característica Power Platform Custom Host. Con el enfoque de host personalizado, puede:
- Defina un host de canalización personalizado que ejecuta sus pruebas automatizadas
- Crear flujos de Power Automate en la nube que se desencadenan automáticamente desde eventos de implementación
- Ejecute comandos
pac test run directamente desde los flujos de nube para ejecutar pruebas almacenadas en el control de código fuente
- Conéctese a su sistema de CI/CD preferido (Azure DevOps, GitHub Actions, etc.)
- Implementar flujos de trabajo de aprobación basados en los resultados de las pruebas
- Actualizar el estado de la implementación según los resultados de la prueba
Esta integración le permite mantener sus inversiones existentes en CI/CD mientras agrega las capacidades de Test Engine a su proceso ALM. El host personalizado actúa como un puente entre las características de ALM nativas de Power Platform y su infraestructura de pruebas externa.
Puede ampliar su Power Platform Pipeline usando un host personalizado o integrar directamente el comando pac test run para ejecutar sus scripts de compilación.
Este es un ejemplo de un archivo YAML de canalización de Azure DevOps que muestra cómo configurar y ejecutar pruebas del Motor de Pruebas de 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()
Componentes de referencia
Los siguientes componentes de referencia pueden resultar útiles a medida que crea su canalización de pruebas de automatización.
Este es un ejemplo de un flujo de trabajo de GitHub Actions que realiza el mismo proceso de ejecución de prueba:
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
Artículos relacionados
Obtenga más información sobre la sintaxis YAML de Test Engine
Configurar la autenticación para sus pruebas
Aplicaciones de lienzo de prueba, aplicaciones basadas en modelos o extensiones de Dataverse
Descripción de Power Platform de ALM