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 obtener acceso anticipado y proporcionar comentarios.
La gestión del ciclo de vida de las aplicaciones (ALM) es un enfoque integral para gestionar 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: verificar que las aplicaciones funcionen como se espera antes de la implementación
-
Reducción de riesgos: detección temprana de problemas antes de que lleguen a los entornos de producción
-
Habilitación de 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 los procesos de lanzamiento
Con Test Engine, puede integrar pruebas automatizadas en sus flujos de trabajo ALM existentes, independientemente de la herramienta CI/CD que utilice. Power Apps Power Platform
Ciclo de vida de la automatización de pruebas
El motor de pruebas 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: configure la autenticación adecuada para sus entornos de ejecución y canalización locales....
-
Integración con su pipeline: conecte Test Engine a su pipeline ALM existente
-
Implementar controles de calidad - Utilizar los resultados de las pruebas para controlar la promoción de soluciones
Propina
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á:
Opciones de integración
Test Engine se integra perfectamente con varias herramientas y procesos de ALM
Puede utilizar un editor local como Visual Studio Code para editar los archivos YAML para crear las pruebas del motor de pruebas. Para ejecutar las pruebas localmente:
- Asegúrese de tener instalada la CLI Microsoft Power Platform
- Si está utilizando la integración de control de código fuente, clone su proyecto en su máquina local. ...
- Utilice la ejecución de prueba pac para ejecutar su prueba
- Revisar los resultados de aprobado/reprobado de la prueba
La CLI de Azure es esencial para obtener tokens de acceso para conectarse Dataverse. Localmente, puedes utilizar:
az login --allow-no-subscriptions
Puede integrar fácilmente Test Engine con las canalizaciones integradas para obtener una experiencia integrada nativa: Power Platform
-
Pipelines de soluciones: agregue pruebas automatizadas a sus pipelines de soluciones para garantizar la calidad en cada etapa....
-
Estrategia ambiental: Probar en entornos de desarrollo y prueba antes de pasar a producción
-
Plantillas de pipeline: utilice plantillas de pipeline para estandarizar las pruebas en toda su organización....
Puede activar la ejecución de pruebas automatizadas al utilizar un host de canalizaciones personalizadas: ...
- Cree un flujo en la nube que se active en función de eventos de canalización Power Automate
- Conéctese a su sistema CI/CD para ejecutar las pruebas
- Procesar los resultados de las pruebas y actualizar el estado de la tubería
El siguiente diagrama muestra un ejemplo de este patrón de integración:
Este flujo utiliza:
Integración CI/CD personalizada con Power Automate
Para las organizaciones que ya cuentan con herramientas de CI/CD, Test Engine se integra con pipelines personalizados mediante la función de Host personalizado. Power Automate Power Platform Con el enfoque de Host personalizado, puedes:
- Define un host de canalización personalizado que ejecute tus pruebas automatizadas
- Cree flujos de nube que se activen automáticamente a partir de eventos de implementación Power Automate
- Ejecute comandos directamente desde los flujos de la nube para ejecutar pruebas almacenadas en el control de origen
pac test run
- Conéctese a su sistema 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 funciones ALM nativas y su infraestructura de prueba externa. Power Platform
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.
A continuación, se muestra un ejemplo de un archivo YAML de canalización que demuestra cómo configurar y ejecutar pruebas del motor de pruebas: Azure DevOps 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 canal de pruebas de automatización.
A continuación se muestra un ejemplo de un flujo de trabajo de GitHub Actions que realiza el mismo proceso de ejecución de pruebas:
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....Dataverse
Entender ALM Power Platform