Azure DevOps
Este guia explica como integrar o Cliente API JMeter do LoadFocus com o Azure DevOps para testes de desempenho automatizados.
Passos de Configuracao
1. Armazenar Credenciais no Azure Key Vault
Para uma gestao segura de credenciais, armazene as suas credenciais da API do LoadFocus no Azure Key Vault:
- Crie um Key Vault no Azure se ainda nao tiver um
- Adicione os seguintes segredos:
loadfocus-api-key: A sua API key do LoadFocusloadfocus-team-id: O seu team ID do LoadFocus
- Configure uma ligacao de servico para aceder ao Key Vault a partir do seu pipeline
2. Criar um Pipeline Azure
Crie um novo ficheiro chamado azure-pipelines.yml no seu repositorio:
trigger:- main- developpool:vmImage: 'ubuntu-latest'variables:- group: loadfocus-variables # Variable group containing Key Vault referencesstages:- stage: Buildjobs:- job: BuildAndTeststeps:# Your existing build and test steps...- stage: PerformanceTestdependsOn: Buildcondition: succeeded()jobs:- job: RunPerformanceTestssteps:- task: NodeTool@0inputs:versionSpec: '16.x'displayName: 'Install Node.js'- script: |npm install -g @loadfocus/loadfocus-api-clientdisplayName: 'Install LoadFocus JMeter API Client'- script: |loadfocus-api config set apikey $(LOADFOCUS_API_KEY)loadfocus-api config set teamid $(LOADFOCUS_TEAM_ID)displayName: 'Configure LoadFocus API Client'- script: |loadfocus-api jmeter run-test \--name "AzureDevOps_$(Build.Repository.Name)_$(Build.SourceBranchName)" \--thresholds "avgresponse<=200,errors==0,p95<=250" \--format json > $(Build.ArtifactStagingDirectory)/performance_results.jsondisplayName: 'Run Performance Tests'continueOnError: false- task: PublishBuildArtifacts@1inputs:pathtoPublish: '$(Build.ArtifactStagingDirectory)'artifactName: 'performance-test-results'displayName: 'Publish Performance Test Results'- stage: DeploydependsOn: PerformanceTestcondition: succeeded()jobs:- job: DeployApplicationsteps:# Your deployment steps...
3. Configurar Grupo de Variaveis com Integracao Key Vault
- Va a Pipelines > Library > Variable Groups
- Crie um novo Variable Group chamado "loadfocus-variables"
- Ligue-o ao seu Azure Key Vault
- Adicione as seguintes variaveis, ligando-as aos seus segredos do Key Vault:
LOADFOCUS_API_KEY: Ligar ao segredoloadfocus-api-keyLOADFOCUS_TEAM_ID: Ligar ao segredoloadfocus-team-id
Configuracao Avancada
Utilizar Templates YAML
Para passos de teste de desempenho reutilizaveis, crie um ficheiro de template performance-test-template.yml:
parameters:testName: 'Default_Test'thresholds: 'avgresponse<=200,errors==0,p95<=250'waitTimeout: 1800steps:- script: |loadfocus-api jmeter run-test \--name "${{ parameters.testName }}" \--thresholds "${{ parameters.thresholds }}" \--waitTimeout ${{ parameters.waitTimeout }} \--format json > $(Build.ArtifactStagingDirectory)/performance_results.jsondisplayName: 'Run Performance Tests'continueOnError: false
Depois, no seu pipeline principal:
- template: performance-test-template.ymlparameters:testName: 'AzureDevOps_$(Build.Repository.Name)_$(Build.SourceBranchName)'thresholds: 'avgresponse<=150,errors==0,p95<=200'waitTimeout: 2400
Executar Multiplos Testes
Para executar multiplos testes de desempenho em sequencia:
- script: |# Run API testloadfocus-api jmeter run-test \--name "API_Test" \--thresholds "avgresponse<=200,errors==0" \--format json > $(Build.ArtifactStagingDirectory)/api_test_results.json# Run UI testloadfocus-api jmeter run-test \--name "UI_Test" \--thresholds "avgresponse<=500,errors==0" \--format json > $(Build.ArtifactStagingDirectory)/ui_test_results.jsondisplayName: 'Run Multiple Performance Tests'
Integracao com Azure Test Plans
Para integrar os resultados dos testes de desempenho com o Azure Test Plans:
- task: PublishTestResults@2inputs:testResultsFormat: 'JUnit'testResultsFiles: '$(Build.ArtifactStagingDirectory)/test-results.xml'testRunTitle: 'Performance Tests'displayName: 'Publish Test Results'condition: succeededOrFailed()
Tera de converter a saida JSON para o formato JUnit:
- script: |# Run performance testloadfocus-api jmeter run-test \--name "AzureDevOps_Test" \--thresholds "avgresponse<=200,errors==0" \--format json > $(Build.ArtifactStagingDirectory)/performance_results.json# Convert JSON to JUnit format (using a custom script)node convert-to-junit.js \$(Build.ArtifactStagingDirectory)/performance_results.json \$(Build.ArtifactStagingDirectory)/test-results.xmldisplayName: 'Run Performance Tests and Convert Results'
Dicas para Integracao com Azure DevOps
Jobs Paralelos: Se tiver multiplos testes de desempenho, considere utilizar jobs paralelos:
jobs:- job: API_Performance_Teststeps:# Run API performance test- job: UI_Performance_Teststeps:# Run UI performance testPortas de Implementacao: Utilize os resultados dos testes de desempenho como porta de implementacao:
- job: DeploymentGatesteps:- script: |# Check if performance tests passedif grep -q '"overallResult": "FAILED"' $(Build.ArtifactStagingDirectory)/performance_results.json; thenecho "##vso[task.logissue type=error]Performance tests failed"echo "##vso[task.complete result=Failed;]"fiPainel Personalizado: Crie um painel personalizado para visualizar os resultados dos testes de desempenho ao longo do tempo.
Notificacoes: Configure notificacoes para falhas nos testes de desempenho:
- task: SendEmail@1inputs:to: 'team@example.com'subject: 'Performance Test Failed'body: 'Performance tests failed to meet thresholds. See attached results.'addAttachment: trueattachmentPath: '$(Build.ArtifactStagingDirectory)/performance_results.json'condition: failed()
Para mais informacoes, consulte a documentacao do Azure DevOps e a documentacao do Cliente API do LoadFocus.