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:

  1. Erstellen Sie einen Key Vault in Azure, falls Sie noch keinen haben
  2. Fuegen Sie folgende Secrets hinzu:
    • loadfocus-api-key: Ihr LoadFocus API-Schluessel
    • loadfocus-team-id: Ihre LoadFocus Team-ID
  3. 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
- develop
pool:
vmImage: 'ubuntu-latest'
variables:
- group: loadfocus-variables # Variable group containing Key Vault references
stages:
- stage: Build
jobs:
- job: BuildAndTest
steps:
# Your existing build and test steps...
- stage: PerformanceTest
dependsOn: Build
condition: succeeded()
jobs:
- job: RunPerformanceTests
steps:
- task: NodeTool@0
inputs:
versionSpec: '16.x'
displayName: 'Install Node.js'
- script: |
npm install -g @loadfocus/loadfocus-api-client
displayName: '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.json
displayName: 'Run Performance Tests'
continueOnError: false
- task: PublishBuildArtifacts@1
inputs:
pathtoPublish: '$(Build.ArtifactStagingDirectory)'
artifactName: 'performance-test-results'
displayName: 'Publish Performance Test Results'
- stage: Deploy
dependsOn: PerformanceTest
condition: succeeded()
jobs:
- job: DeployApplication
steps:
# Your deployment steps...

3. Variable Group mit Key Vault-Integration einrichten

  1. Gehen Sie zu Pipelines > Library > Variable Groups
  2. Erstellen Sie eine neue Variable Group namens "loadfocus-variables"
  3. Verknuepfen Sie sie mit Ihrem Azure Key Vault
  4. Fuegen Sie folgende Variablen hinzu und verknuepfen Sie sie mit Ihren Key Vault-Secrets:
    • LOADFOCUS_API_KEY: Verknuepfung mit dem Secret loadfocus-api-key
    • LOADFOCUS_TEAM_ID: Verknuepfung mit dem Secret loadfocus-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: 1800
steps:
- script: |
loadfocus-api jmeter run-test \
--name "${{ parameters.testName }}" \
--thresholds "${{ parameters.thresholds }}" \
--waitTimeout ${{ parameters.waitTimeout }} \
--format json > $(Build.ArtifactStagingDirectory)/performance_results.json
displayName: 'Run Performance Tests'
continueOnError: false

Dann in Ihrer Hauptpipeline:

- template: performance-test-template.yml
parameters:
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 test
loadfocus-api jmeter run-test \
--name "API_Test" \
--thresholds "avgresponse<=200,errors==0" \
--format json > $(Build.ArtifactStagingDirectory)/api_test_results.json
# Run UI test
loadfocus-api jmeter run-test \
--name "UI_Test" \
--thresholds "avgresponse<=500,errors==0" \
--format json > $(Build.ArtifactStagingDirectory)/ui_test_results.json
displayName: 'Run Multiple Performance Tests'

Integration mit Azure Test Plans

Um Leistungstestergebnisse mit Azure Test Plans zu integrieren:

- task: PublishTestResults@2
inputs:
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 test
loadfocus-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.xml
displayName: 'Run Performance Tests and Convert Results'

Tipps fuer die Azure DevOps-Integration

  1. Parallele Jobs: Wenn Sie mehrere Leistungstests haben, erwaegen Sie parallele Jobs:

    jobs:
    - job: API_Performance_Test
    steps:
    # Run API performance test
    - job: UI_Performance_Test
    steps:
    # Run UI performance test
  2. Deployment Gates: Verwenden Sie Leistungstestergebnisse als Deployment-Gate:

    - job: DeploymentGate
    steps:
    - script: |
    # Check if performance tests passed
    if grep -q '"overallResult": "FAILED"' $(Build.ArtifactStagingDirectory)/performance_results.json; then
    echo "##vso[task.logissue type=error]Performance tests failed"
    echo "##vso[task.complete result=Failed;]"
    fi
  3. Benutzerdefiniertes Dashboard: Erstellen Sie ein benutzerdefiniertes Dashboard zur Visualisierung von Leistungstestergebnissen im Zeitverlauf.

  4. Benachrichtigungen: Richten Sie Benachrichtigungen fuer Leistungstestfehler ein:

    - task: SendEmail@1
    inputs:
    to: 'team@example.com'
    subject: 'Performance Test Failed'
    body: 'Performance tests failed to meet thresholds. See attached results.'
    addAttachment: true
    attachmentPath: '$(Build.ArtifactStagingDirectory)/performance_results.json'
    condition: failed()

Weitere Informationen finden Sie in der Azure DevOps-Dokumentation und der LoadFocus API Client-Dokumentation.