Azure DevOps

Šī pamācība izskaidro, kā integrēt LoadFocus JMeter API klientu ar Azure DevOps automatizētai veiktspējas testēšanai.

Iestatīšanas soļi

1. Saglabājiet akreditācijas datus Azure Key Vault

Drošai akreditācijas datu pārvaldībai saglabājiet savus LoadFocus API akreditācijas datus Azure Key Vault:

  1. Izveidojiet Key Vault Azure, ja jums tāda vēl nav
  2. Pievienojiet šādus noslēpumus:
    • loadfocus-api-key: Jūsu LoadFocus API atslēga
    • loadfocus-team-id: Jūsu LoadFocus komandas ID
  3. Iestatiet pakalpojuma savienojumu, lai piekļūtu Key Vault no sava cauruļvada

2. Izveidojiet Azure cauruļvadu

Izveidojiet jaunu failu ar nosaukumu azure-pipelines.yml savā repozitorijā:

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. Iestatiet mainīgo grupu ar Key Vault integrāciju

  1. Dodieties uz Pipelines > Library > Variable Groups
  2. Izveidojiet jaunu mainīgo grupu ar nosaukumu "loadfocus-variables"
  3. Saistiet to ar savu Azure Key Vault
  4. Pievienojiet šādus mainīgos, saistot tos ar Key Vault noslēpumiem:
    • LOADFOCUS_API_KEY: Saistīt ar loadfocus-api-key noslēpumu
    • LOADFOCUS_TEAM_ID: Saistīt ar loadfocus-team-id noslēpumu

Papildu konfigurācija

YAML veidņu izmantošana

Atkārtoti izmantojamiem veiktspējas testēšanas soļiem izveidojiet veidnes failu 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

Pēc tam savā galvenajā cauruļvadā:

- template: performance-test-template.yml
parameters:
testName: 'AzureDevOps_$(Build.Repository.Name)_$(Build.SourceBranchName)'
thresholds: 'avgresponse<=150,errors==0,p95<=200'
waitTimeout: 2400

Vairāku testu izpilde

Lai izpildītu vairākus veiktspējas testus secīgi:

- 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'

Integrācija ar Azure Test Plans

Lai integrētu veiktspējas testu rezultātus ar Azure Test Plans:

- task: PublishTestResults@2
inputs:
testResultsFormat: 'JUnit'
testResultsFiles: '$(Build.ArtifactStagingDirectory)/test-results.xml'
testRunTitle: 'Performance Tests'
displayName: 'Publish Test Results'
condition: succeededOrFailed()

Jums būs nepieciešams konvertēt JSON izvadi JUnit formātā:

- 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'

Padomi Azure DevOps integrācijai

  1. Paralēlie darbi: Ja jums ir vairāki veiktspējas testi, apsveriet paralēlo darbu izmantošanu:

    jobs:
    - job: API_Performance_Test
    steps:
    # Run API performance test
    - job: UI_Performance_Test
    steps:
    # Run UI performance test
  2. Izvietošanas vārti: Izmantojiet veiktspējas testu rezultātus kā izvietošanas vārtus:

    - 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. Pielāgots informācijas panelis: Izveidojiet pielāgotu informācijas paneli, lai vizualizētu veiktspējas testu rezultātus laika gaitā.

  4. Paziņojumi: Iestatiet paziņojumus veiktspējas testu kļūmju gadījumā:

    - 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()

Papildu informācijai skatiet Azure DevOps dokumentāciju un LoadFocus API klienta dokumentāciju.