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:
- Utworz Key Vault w Azure, jesli jeszcze go nie masz
- Dodaj nastepujace sekrety:
loadfocus-api-key: Twoj klucz API LoadFocusloadfocus-team-id: ID Twojego zespolu LoadFocus
- 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- developpool:vmImage: 'ubuntu-latest'variables:- group: loadfocus-variables # Grupa zmiennych zawierajaca odwolania do Key Vaultstages:- stage: Buildjobs:- job: BuildAndTeststeps:# Twoje istniejace kroki budowania i testowania...- 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:# Twoje kroki wdrozenia...
3. Konfiguracja grupy zmiennych z integracja Key Vault
- Przejdz do Pipelines > Library > Variable Groups
- Utworz nowa grupe zmiennych o nazwie "loadfocus-variables"
- Polacz ja z Azure Key Vault
- Dodaj nastepujace zmienne, laczac je z sekretami Key Vault:
LOADFOCUS_API_KEY: Polacz z sekretemloadfocus-api-keyLOADFOCUS_TEAM_ID: Polacz z sekretemloadfocus-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: 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
Nastepnie w glownym potoku:
- template: performance-test-template.ymlparameters: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 APIloadfocus-api jmeter run-test \--name "API_Test" \--thresholds "avgresponse<=200,errors==0" \--format json > $(Build.ArtifactStagingDirectory)/api_test_results.json# Uruchom test UIloadfocus-api jmeter run-test \--name "UI_Test" \--thresholds "avgresponse<=500,errors==0" \--format json > $(Build.ArtifactStagingDirectory)/ui_test_results.jsondisplayName: 'Run Multiple Performance Tests'
Integracja z Azure Test Plans
Aby zintegrowac wyniki testow wydajnosci z Azure Test Plans:
- task: PublishTestResults@2inputs: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 wydajnosciloadfocus-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.xmldisplayName: 'Run Performance Tests and Convert Results'
Wskazowki dotyczace integracji z Azure DevOps
Rownolegle zadania: Jesli masz wiele testow wydajnosci, rozwaลผ uzycie rownolegnych zadan:
jobs:- job: API_Performance_Teststeps:# Uruchom test wydajnosci API- job: UI_Performance_Teststeps:# Uruchom test wydajnosci UIBramki wdrozeniowe: Uzyj wynikow testow wydajnosci jako bramki wdrozeniowej:
- job: DeploymentGatesteps:- script: |# Sprawdz, czy testy wydajnosci przeszlyif grep -q '"overallResult": "FAILED"' $(Build.ArtifactStagingDirectory)/performance_results.json; thenecho "##vso[task.logissue type=error]Performance tests failed"echo "##vso[task.complete result=Failed;]"fiNiestandardowy dashboard: Utworz niestandardowy dashboard do wizualizacji wynikow testow wydajnosci w czasie.
Powiadomienia: Skonfiguruj powiadomienia o niepowodzeniach testow wydajnosci:
- 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()
Aby uzyskac wiecej informacji, zapoznaj sie z dokumentacja Azure DevOps i dokumentacja klienta API LoadFocus.