Azure DevOps
Ce guide explique comment integrer le client API JMeter de LoadFocus avec Azure DevOps pour les tests de performance automatises.
Etapes de configuration
1. Stocker les identifiants dans Azure Key Vault
Pour une gestion securisee des identifiants, stockez vos identifiants API LoadFocus dans Azure Key Vault :
- Creez un Key Vault dans Azure si vous n'en avez pas
- Ajoutez les secrets suivants :
loadfocus-api-key: Votre cle API LoadFocusloadfocus-team-id: Votre ID d'equipe LoadFocus
- Configurez une connexion de service pour acceder au Key Vault depuis votre pipeline
2. Creer un pipeline Azure
Creez un nouveau fichier nomme azure-pipelines.yml dans votre depot :
trigger:- main- developpool:vmImage: 'ubuntu-latest'variables:- group: loadfocus-variables # Groupe de variables contenant les references Key Vaultstages:- stage: Buildjobs:- job: BuildAndTeststeps:# Vos etapes de build et de test existantes...- 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:# Vos etapes de deploiement...
3. Configurer un groupe de variables avec l'integration Key Vault
- Allez dans Pipelines > Library > Variable Groups
- Creez un nouveau groupe de variables nomme "loadfocus-variables"
- Liez-le a votre Azure Key Vault
- Ajoutez les variables suivantes en les liant a vos secrets Key Vault :
LOADFOCUS_API_KEY: Liee au secretloadfocus-api-keyLOADFOCUS_TEAM_ID: Liee au secretloadfocus-team-id
Configuration avancee
Utilisation de modeles YAML
Pour des etapes de test de performance reutilisables, creez un fichier modele 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
Puis dans votre pipeline principal :
- template: performance-test-template.ymlparameters:testName: 'AzureDevOps_$(Build.Repository.Name)_$(Build.SourceBranchName)'thresholds: 'avgresponse<=150,errors==0,p95<=200'waitTimeout: 2400
Executer plusieurs tests
Pour executer plusieurs tests de performance en sequence :
- script: |# Executer le test APIloadfocus-api jmeter run-test \--name "API_Test" \--thresholds "avgresponse<=200,errors==0" \--format json > $(Build.ArtifactStagingDirectory)/api_test_results.json# Executer le test UIloadfocus-api jmeter run-test \--name "UI_Test" \--thresholds "avgresponse<=500,errors==0" \--format json > $(Build.ArtifactStagingDirectory)/ui_test_results.jsondisplayName: 'Run Multiple Performance Tests'
Integration avec Azure Test Plans
Pour integrer les resultats de tests de performance avec Azure Test Plans :
- task: PublishTestResults@2inputs:testResultsFormat: 'JUnit'testResultsFiles: '$(Build.ArtifactStagingDirectory)/test-results.xml'testRunTitle: 'Performance Tests'displayName: 'Publish Test Results'condition: succeededOrFailed()
Vous devrez convertir la sortie JSON au format JUnit :
- script: |# Executer le test de performanceloadfocus-api jmeter run-test \--name "AzureDevOps_Test" \--thresholds "avgresponse<=200,errors==0" \--format json > $(Build.ArtifactStagingDirectory)/performance_results.json# Convertir JSON en format JUnit (en utilisant un script personnalise)node convert-to-junit.js \$(Build.ArtifactStagingDirectory)/performance_results.json \$(Build.ArtifactStagingDirectory)/test-results.xmldisplayName: 'Run Performance Tests and Convert Results'
Conseils pour l'integration Azure DevOps
Jobs paralleles : Si vous avez plusieurs tests de performance, envisagez d'utiliser des jobs paralleles :
jobs:- job: API_Performance_Teststeps:# Executer le test de performance API- job: UI_Performance_Teststeps:# Executer le test de performance UIPortes de deploiement : Utilisez les resultats des tests de performance comme porte de deploiement :
- job: DeploymentGatesteps:- script: |# Verifier si les tests de performance ont reussiif grep -q '"overallResult": "FAILED"' $(Build.ArtifactStagingDirectory)/performance_results.json; thenecho "##vso[task.logissue type=error]Performance tests failed"echo "##vso[task.complete result=Failed;]"fiTableau de bord personnalise : Creez un tableau de bord personnalise pour visualiser les resultats des tests de performance au fil du temps.
Notifications : Configurez des notifications pour les echecs de tests de performance :
- 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()
Pour plus d'informations, consultez la documentation Azure DevOps et la documentation du client API LoadFocus.