Azure DevOps
Diese Anleitung erklaert, wie Sie den LoadFocus JMeter API Client mit Azure DevOps fuer automatisierte Leistungstests integrieren.
Einrichtungsschritte
1. Anmeldedaten in Azure Key Vault speichern
Fuer eine sichere Verwaltung der Anmeldedaten speichern Sie Ihre LoadFocus API-Zugangsdaten in Azure Key Vault:
- Erstellen Sie einen Key Vault in Azure, falls Sie noch keinen haben
- Fuegen Sie folgende Secrets hinzu:
loadfocus-api-key: Ihr LoadFocus API-Schluesselloadfocus-team-id: Ihre LoadFocus Team-ID
- Richten Sie eine Service-Verbindung ein, um von Ihrer Pipeline auf den Key Vault zuzugreifen
2. Azure Pipeline erstellen
Erstellen Sie eine neue Datei namens azure-pipelines.yml in Ihrem Repository:
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. Variable Group mit Key Vault-Integration einrichten
- Gehen Sie zu Pipelines > Library > Variable Groups
- Erstellen Sie eine neue Variable Group namens "loadfocus-variables"
- Verknuepfen Sie sie mit Ihrem Azure Key Vault
- Fuegen Sie folgende Variablen hinzu und verknuepfen Sie sie mit Ihren Key Vault-Secrets:
LOADFOCUS_API_KEY: Verknuepfung mit dem Secretloadfocus-api-keyLOADFOCUS_TEAM_ID: Verknuepfung mit dem Secretloadfocus-team-id
Erweiterte Konfiguration
YAML-Templates verwenden
Fuer wiederverwendbare Leistungstestschritte erstellen Sie eine Template-Datei 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
Dann in Ihrer Hauptpipeline:
- template: performance-test-template.ymlparameters:testName: 'AzureDevOps_$(Build.Repository.Name)_$(Build.SourceBranchName)'thresholds: 'avgresponse<=150,errors==0,p95<=200'waitTimeout: 2400
Mehrere Tests ausfuehren
Um mehrere Leistungstests nacheinander auszufuehren:
- 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'
Integration mit Azure Test Plans
Um Leistungstestergebnisse mit Azure Test Plans zu integrieren:
- task: PublishTestResults@2inputs:testResultsFormat: 'JUnit'testResultsFiles: '$(Build.ArtifactStagingDirectory)/test-results.xml'testRunTitle: 'Performance Tests'displayName: 'Publish Test Results'condition: succeededOrFailed()
Sie muessen die JSON-Ausgabe in das JUnit-Format konvertieren:
- 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'
Tipps fuer die Azure DevOps-Integration
Parallele Jobs: Wenn Sie mehrere Leistungstests haben, erwaegen Sie parallele Jobs:
jobs:- job: API_Performance_Teststeps:# Run API performance test- job: UI_Performance_Teststeps:# Run UI performance testDeployment Gates: Verwenden Sie Leistungstestergebnisse als Deployment-Gate:
- 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;]"fiBenutzerdefiniertes Dashboard: Erstellen Sie ein benutzerdefiniertes Dashboard zur Visualisierung von Leistungstestergebnissen im Zeitverlauf.
Benachrichtigungen: Richten Sie Benachrichtigungen fuer Leistungstestfehler ein:
- 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()
Weitere Informationen finden Sie in der Azure DevOps-Dokumentation und der LoadFocus API Client-Dokumentation.