Azure DevOps

Ten przewodnik wyjasnia, jak zintegrowac klienta API JMeter LoadFocus z Azure DevOps w celu automatycznego testowania wydajnosci.

Kroki konfiguracji

1. Przechowywanie danych uwierzytelniajacych w Azure Key Vault

Aby bezpiecznie zarzadzac danymi uwierzytelniajacymi, przechowuj dane API LoadFocus w Azure Key Vault:

  1. Utworz Key Vault w Azure, jesli jeszcze go nie masz
  2. Dodaj nastepujace sekrety:
    • loadfocus-api-key: Twoj klucz API LoadFocus
    • loadfocus-team-id: ID Twojego zespolu LoadFocus
  3. Skonfiguruj polaczenie serwisowe, aby uzyskac dostep do Key Vault z potoku

2. Utworz potok Azure

Utworz nowy plik o nazwie azure-pipelines.yml w swoim repozytorium:

trigger:
- main
- develop
pool:
vmImage: 'ubuntu-latest'
variables:
- group: loadfocus-variables # Grupa zmiennych zawierajaca odwolania do Key Vault
stages:
- stage: Build
jobs:
- job: BuildAndTest
steps:
# Twoje istniejace kroki budowania i testowania...
- 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:
# Twoje kroki wdrozenia...

3. Konfiguracja grupy zmiennych z integracja Key Vault

  1. Przejdz do Pipelines > Library > Variable Groups
  2. Utworz nowa grupe zmiennych o nazwie "loadfocus-variables"
  3. Polacz ja z Azure Key Vault
  4. Dodaj nastepujace zmienne, laczac je z sekretami Key Vault:
    • LOADFOCUS_API_KEY: Polacz z sekretem loadfocus-api-key
    • LOADFOCUS_TEAM_ID: Polacz z sekretem loadfocus-team-id

Zaawansowana konfiguracja

Uzywanie szablonow YAML

Aby utworzyc wielokrotnie uzywane kroki testow wydajnosci, utworz plik szablonu 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

Nastepnie w glownym potoku:

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

Uruchamianie wielu testow

Aby uruchomic wiele testow wydajnosci sekwencyjnie:

- script: |
# Uruchom test API
loadfocus-api jmeter run-test \
--name "API_Test" \
--thresholds "avgresponse<=200,errors==0" \
--format json > $(Build.ArtifactStagingDirectory)/api_test_results.json
# Uruchom test UI
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'

Integracja z Azure Test Plans

Aby zintegrowac wyniki testow wydajnosci z Azure Test Plans:

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

Musisz przekonwertowac wyjscie JSON na format JUnit:

- script: |
# Uruchom test wydajnosci
loadfocus-api jmeter run-test \
--name "AzureDevOps_Test" \
--thresholds "avgresponse<=200,errors==0" \
--format json > $(Build.ArtifactStagingDirectory)/performance_results.json
# Konwertuj JSON na format JUnit (uzywajac niestandardowego skryptu)
node convert-to-junit.js \
$(Build.ArtifactStagingDirectory)/performance_results.json \
$(Build.ArtifactStagingDirectory)/test-results.xml
displayName: 'Run Performance Tests and Convert Results'

Wskazowki dotyczace integracji z Azure DevOps

  1. Rownolegle zadania: Jesli masz wiele testow wydajnosci, rozwaลผ uzycie rownolegnych zadan:

    jobs:
    - job: API_Performance_Test
    steps:
    # Uruchom test wydajnosci API
    - job: UI_Performance_Test
    steps:
    # Uruchom test wydajnosci UI
  2. Bramki wdrozeniowe: Uzyj wynikow testow wydajnosci jako bramki wdrozeniowej:

    - job: DeploymentGate
    steps:
    - script: |
    # Sprawdz, czy testy wydajnosci przeszly
    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. Niestandardowy dashboard: Utworz niestandardowy dashboard do wizualizacji wynikow testow wydajnosci w czasie.

  4. Powiadomienia: Skonfiguruj powiadomienia o niepowodzeniach testow wydajnosci:

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

Aby uzyskac wiecej informacji, zapoznaj sie z dokumentacja Azure DevOps i dokumentacja klienta API LoadFocus.