Observação
Os recursos de versão preliminar não foram criados para uso em ambientes de produção e podem ter funcionalidade restrita. Esses recursos são disponibilizados antes de um lançamento oficial para que os clientes possam ter acesso antecipado e forneçam comentários.
O Application Lifecycle Management (ALM) é uma abordagem abrangente para gerenciar o ciclo de vida dos aplicativos, desde o conceito inicial até o desenvolvimento, teste, implantação e manutenção contínua. No contexto de Power Platform, incorporar testes automatizados com o Test Engine em seu processo de ALM garante que os aplicativos sejam testados minuciosamente em cada estágio de desenvolvimento, resultando em lançamentos de maior qualidade.
Compreendendo a automação de testes no ALM
A automação de testes desempenha um papel crítico no processo de ALM por:
-
Garantir a qualidade - Verificar se os aplicativos funcionam conforme o esperado antes da implantação
-
Redução de riscos - Detectar problemas antes que cheguem aos ambientes de produção
-
Habilitando integração contínua - Suporte a testes automatizados de verificação de construção
-
Facilitando implantações controladas - Adicionando portões de qualidade aos pipelines de lançamento
Com o Test Engine, você pode integrar testes automatizados aos seus fluxos de trabalho ALM existentes, independentemente de quais ferramentas de CI/CD você usa. Power Apps Power Platform
Ciclo de vida da automação de testes
O Test Engine oferece suporte a um ciclo de vida de testes completo que se integra aos seus processos de ALM:
-
Desenvolvimento - Crie e execute testes localmente durante o desenvolvimento do aplicativo
-
Validação de compilação - Executa testes como parte da verificação automatizada de compilação
-
Portões de liberação - Use os resultados dos testes como portões de qualidade para implantações controladas
-
Verificação de produção - Validar funcionalidades críticas em ambientes de produção
Introdução à automação de testes no ALM
Para começar a incorporar o Test Engine em seus processos de ALM:
-
Crie seu plano de teste - Crie planos de teste YAML para suas Power Platform soluções
-
Execute testes localmente - Verifique se os testes funcionam no seu ambiente de desenvolvimento
-
Configurar autenticação - Configurar a autenticação apropriada para seus ambientes de execução e pipeline locais
-
Integre com seu pipeline - Conecte o Test Engine ao seu pipeline ALM existente
-
Implementar portões de qualidade - Usar resultados de testes para controlar a promoção de soluções
Dica
Comece com jornadas críticas do usuário e expanda gradualmente sua cobertura de testes automatizados à medida que você se familiarizar mais com o Test Engine.
Versão do código-fonte do Test Engine (opcional)
Se estiver usando a versão do código-fonte do Test Engine, você também precisará de:
Opções de integração
O Test Engine integra-se perfeitamente com várias ferramentas e processos de ALM
Você pode usar um editor local como o Visual Studio Code para editar os arquivos YAML para criar os testes do Test Engine. Para executar os testes localmente:
- Certifique-se de ter instalado o Microsoft Power Platform CLI
- Se você estiver usando integração de controle de origem clone seu projeto para sua máquina local
- Use o teste de execução pac para executar seu teste
- Revise os resultados de aprovação/reprovação do teste
O Azure CLI é essencial para obter tokens de acesso para conexão Dataverse. Localmente, você pode usar:
az login --allow-no-subscriptions
Você pode integrar facilmente o Test Engine com os pipelines integrados do Power Platform para uma experiência nativa integrada:
Você pode acionar a execução de testes automatizados ao usar um host de pipelines personalizados:
- Crie um Power Automate fluxo de nuvem que seja acionado com base em eventos de pipeline
- Conecte-se ao seu sistema CI/CD para executar os testes
- Processar resultados de testes e atualizar o status do pipeline
O diagrama a seguir mostra um exemplo desse padrão de integração:
Este fluxo usa:
Integração CI/CD personalizada com Power Automate
Para organizações com ferramentas de CI/CD existentes, o Test Engine integra-se a pipelines personalizados por meio do recurso Power Automate Host personalizado Power Platform . Com a abordagem de Host Personalizado, você pode:
- Defina um host de pipeline personalizado que execute seus testes automatizados
- Crie Power Automate fluxos de nuvem que são acionados automaticamente a partir de eventos de implantação
- Execute
pac test run comandos diretamente de fluxos de nuvem para executar testes armazenados no controle de origem
- Conecte-se ao seu sistema CI/CD preferido (Azure DevOps, GitHub Actions, etc.)
- Implementar fluxos de trabalho de aprovação com base nos resultados dos testes
- Atualizar o status da implantação com base nos resultados do teste
Essa integração permite que você mantenha seus investimentos existentes em CI/CD enquanto adiciona recursos do Test Engine ao seu processo de ALM. O Host Personalizado atua como uma ponte entre os recursos nativos do ALM e sua infraestrutura de testes externa. Power Platform
Você pode estender seu Power Platform Pipeline usando um host personalizado ou integrar diretamente o comando pac test run para executar seus scripts de compilação.
Aqui está um exemplo de um arquivo YAML de pipeline que demonstra como configurar e executar testes do Test Engine: 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 referência
Os seguintes componentes de referência podem ser úteis ao criar seu pipeline de testes de automação.
Veja um exemplo de um fluxo de trabalho do GitHub Actions que executa o mesmo processo de execução de teste:
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
Artigos relacionados
Aprenda sobre a sintaxe YAML do Test Engine
Configure a autenticação para seus testes
Aplicativos de teste de tela, aplicativos orientados a modelos ou Dataverse extensões
Entenda o ALM Power Platform