Nota
As funcionalidades de pré-visualização não se destinam à produção e poderão ter caraterísticas restritas. Estas caraterísticas estão disponíveis antes do lançamento oficial, para que os clientes possam ter acesso antecipado e enviar 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 exaustivamente testados em cada estágio de desenvolvimento, resultando em versões de maior qualidade.
Entendendo a automação de testes no ALM
A automação de testes desempenha um papel crítico no processo de ALM ao:
-
Garantindo a qualidade - Verificando se os aplicativos funcionam conforme o esperado antes da implantação
-
Reduzir o risco - Detetar problemas com antecedência antes que eles cheguem aos ambientes de produção
-
Permitindo a integração contínua - Suporte a testes automatizados de verificação de construção
-
Facilitando implantações controladas - Adicionando portas de qualidade para liberar pipelines
Com Power Apps o Test Engine, você pode integrar testes automatizados em seus fluxos de trabalho de ALM existentes Power Platform , independentemente de quais ferramentas de CI/CD você usa.
Ciclo de vida da automação de testes
O mecanismo de teste suporta um ciclo de vida de teste completo que se integra aos seus processos de ALM:
-
Desenvolvimento - Crie e execute testes localmente durante o desenvolvimento de aplicativos
-
Validação de compilação - Execute testes como parte da verificação de compilação automatizada
-
Portões de liberação- Use os resultados do teste como portas 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 - Projete planos de teste YAML para suas Power Platform soluções
-
Executar testes localmente - Verifique se os testes funcionam em seu ambiente de desenvolvimento
-
Configurar autenticação - Configure a autenticação apropriada para seus ambientes locais de execução e pipeline
-
Integre com seu pipeline - Conecte o Test Engine ao seu pipeline ALM existente
-
Implementar portas de qualidade - Utilizar resultados de testes para controlar a promoção de soluções
Sugestão
Comece com jornadas críticas do utilizador e expanda gradualmente sua cobertura de teste automatizado à medida que você se familiariza com o Test Engine.
Versão do código-fonte do Test Engine (opcional)
Se você estiver a usar a versão do código-fonte do Test Engine, também precisará:
Opções de geração
O Test Engine integra-se perfeitamente com várias ferramentas e processos de ALM
Você pode usar um editor local como Visual Studio Code para editar os arquivos YAML para criar os testes do Test Engine. Para executar os testes localmente:
- Certifique-se de ter a Microsoft Power Platform CLI instalada
- Se você estiver a usar a integração de controle do código-fonte, clone seu projeto para sua máquina local
- Use a execução do teste pac para executar o teste
- Rever os resultados de aprovação/reprovação do teste
A CLI do Azure é essencial para obter tokens de acesso aos quais se conectar Dataverse. Localmente, você pode usar:
az login --allow-no-subscriptions
Você pode integrar facilmente o Test Engine com Power Platform os pipelines integrados para uma experiência integrada nativa:
-
Pipelines de solução- Adicione testes automatizados aos seus pipelines de solução para garantir a qualidade em cada estágio
-
Estratégia Ambiental - Teste em ambientes de desenvolvimento e teste antes de promover a produção
-
Modelos de pipeline - Use modelos de pipeline para padronizar testes em toda a organização
Você pode acionar a execução de testes automatizados ao usar um host de pipelines personalizados:
- Criar um Power Automate fluxo de nuvem que é acionado com base em eventos de pipeline
- Conecte-se ao seu sistema CI/CD para executar os testes
- Processar resultados de teste e atualizar o estatuto do pipeline
O diagrama a seguir mostra um exemplo desse padrão de integração:
Este fluxo utiliza:
Integração personalizada de CI/CD com Power Automate
Para organizações com ferramentas de CI/CD existentes, o Test Engine integra-se a pipelines personalizados usando Power Automate o Power Platform recurso Host personalizado. 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 do código-fonte
- Conecte-se ao seu sistema de CI/CD preferido (Azure DevOps, Ações do GitHub, etc.)
- Implementar fluxos de trabalho de aprovação com base nos resultados dos testes
- Atualizar o estatuto da implantação com base nos resultados do teste
Essa integração permite que você mantenha seus investimentos existentes em CI/CD enquanto adiciona os recursos do Test Engine ao seu processo de ALM. O Host Personalizado atua como uma ponte entre Power Platform os recursos nativos de ALM e sua infraestrutura de teste externa.
Você pode estender seu Power Platform Pipeline usando host personalizado ou integrar diretamente o comando pac test run para executar seus scripts de compilação.
Aqui está um exemplo de um Azure DevOps arquivo YAML de pipeline que demonstra como configurar e executar Power Apps testes do 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()
Componentes de referência
Os seguintes componentes de referência podem ser úteis à medida que você cria seu pipeline de teste de automação.
Aqui está um exemplo de um fluxo de trabalho de Ações do GitHub 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
Saiba mais sobre a sintaxe YAML do Test Engine
Configurar a autenticação para seus testes
Aplicativos de tela de teste, aplicativos orientados a modelos ou Dataverse extensões
Entenda o Power Platform ALM