Azure DevOps
이 가이드에서는 자동화된 성능 테스트를 위해 LoadFocus JMeter API Client를 Azure DevOps와 통합하는 방법을 설명합니다.
설정 단계
1. Azure Key Vault에 자격 증명 저장
안전한 자격 증명 관리를 위해 LoadFocus API 자격 증명을 Azure Key Vault에 저장합니다:
- Azure에 Key Vault가 없다면 생성합니다
- 다음 시크릿을 추가합니다:
loadfocus-api-key: LoadFocus API 키loadfocus-team-id: LoadFocus 팀 ID
- 파이프라인에서 Key Vault에 접근하기 위한 서비스 연결을 설정합니다
2. Azure Pipeline 생성
리포지토리에 azure-pipelines.yml이라는 새 파일을 생성합니다:
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. Key Vault 통합으로 변수 그룹 설정
- Go to Pipelines > Library > Variable Groups
- Create a new Variable Group named "loadfocus-variables"
- Link it to your Azure Key Vault
- Add the following variables, linking them to your Key Vault secrets:
LOADFOCUS_API_KEY: Link toloadfocus-api-keysecretLOADFOCUS_TEAM_ID: Link toloadfocus-team-idsecret
고급 구성
YAML 템플릿 사용
재사용 가능한 성능 테스트 단계를 위해 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
그런 다음 메인 파이프라인에서:
- template: performance-test-template.ymlparameters:testName: 'AzureDevOps_$(Build.Repository.Name)_$(Build.SourceBranchName)'thresholds: 'avgresponse<=150,errors==0,p95<=200'waitTimeout: 2400
여러 테스트 실행
여러 성능 테스트를 순차적으로 실행하려면:
- 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'
Azure Test Plans와의 통합
성능 테스트 결과를 Azure Test Plans와 통합하려면:
- task: PublishTestResults@2inputs:testResultsFormat: 'JUnit'testResultsFiles: '$(Build.ArtifactStagingDirectory)/test-results.xml'testRunTitle: 'Performance Tests'displayName: 'Publish Test Results'condition: succeededOrFailed()
JSON 출력을 JUnit 형식으로 변환해야 합니다:
- 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'
Azure DevOps 통합 팁
Parallel Jobs: If you have multiple performance tests, consider using parallel jobs:
jobs:- job: API_Performance_Teststeps:# Run API performance test- job: UI_Performance_Teststeps:# Run UI performance testDeployment Gates: Use performance test results as a 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;]"fiCustom Dashboard: Create a custom dashboard to visualize performance test results over time.
Notifications: Set up notifications for performance test failures:
- 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()
자세한 내용은 Azure DevOps 문서와 LoadFocus API Client 문서를 참조하세요.