Azure DevOps
Diese Anleitung erklärt, wie Sie den LoadFocus JMeter API Client mit Azure DevOps für automatisierte Leistungstests integrieren.
Einrichtungsschritte
1. Anmeldedaten in Azure Key Vault speichern
Für 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
- Fügen Sie folgende Secrets hinzu:
loadfocus-api-key: Ihr LoadFocus API-Schlüsselloadfocus-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"
- Verknüpfen Sie sie mit Ihrem Azure Key Vault
- Fügen Sie folgende Variablen hinzu und verknüpfen Sie sie mit Ihren Key Vault-Secrets:
LOADFOCUS_API_KEY: Verknüpfung mit dem Secretloadfocus-api-keyLOADFOCUS_TEAM_ID: Verknüpfung mit dem Secretloadfocus-team-id
Erweiterte Konfiguration
YAML-Templates verwenden
Für 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 ausführen
Um mehrere Leistungstests nacheinander auszuführen:
- 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 müssen 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 für die Azure DevOps-Integration
Parallele Jobs: Wenn Sie mehrere Leistungstests haben, erwägen 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 für 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.