Azure DevOps

คู่มือนี้อธิบายวิธีผสาน LoadFocus JMeter API Client กับ Azure DevOps สำหรับการทดสอบประสิทธิภาพอัตโนมัติ

ขั้นตอนการตั้งค่า

1. จัดเก็บ Credentials ใน Azure Key Vault

สำหรับการจัดการ credentials อย่างปลอดภัย จัดเก็บ LoadFocus API credentials ใน Azure Key Vault:

  1. สร้าง Key Vault ใน Azure หากยังไม่มี
  2. เพิ่ม secrets ต่อไปนี้:
    • loadfocus-api-key: API key ของ LoadFocus
    • loadfocus-team-id: Team ID ของ LoadFocus
  3. ตั้งค่า service connection เพื่อเข้าถึง Key Vault จาก pipeline

2. สร้าง Azure Pipeline

สร้างไฟล์ใหม่ชื่อ azure-pipelines.yml ใน 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 พร้อมการผสาน Key Vault

  1. ไปที่ Pipelines > Library > Variable Groups
  2. สร้าง Variable Group ใหม่ชื่อ "loadfocus-variables"
  3. เชื่อมโยงกับ Azure Key Vault
  4. เพิ่ม variables ต่อไปนี้ เชื่อมโยงกับ Key Vault secrets:
    • LOADFOCUS_API_KEY: เชื่อมโยงกับ secret loadfocus-api-key
    • LOADFOCUS_TEAM_ID: เชื่อมโยงกับ secret loadfocus-team-id

การกำหนดค่าขั้นสูง

การใช้ YAML Templates

สำหรับขั้นตอนทดสอบประสิทธิภาพที่ใช้ซ้ำได้ สร้างไฟล์ template 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

จากนั้นใน pipeline หลักของคุณ:

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

การรันหลายทดสอบ

เพื่อรันทดสอบประสิทธิภาพหลายรายการตามลำดับ:

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

เคล็ดลับสำหรับการผสาน Azure DevOps

  1. Parallel Jobs: หากมีทดสอบประสิทธิภาพหลายรายการ พิจารณาใช้ parallel jobs
  2. Deployment Gates: ใช้ผลทดสอบประสิทธิภาพเป็น deployment gate
  3. Custom Dashboard: สร้าง custom dashboard เพื่อแสดงผลทดสอบประสิทธิภาพเมื่อเวลาผ่านไป
  4. Notifications: ตั้งค่าการแจ้งเตือนสำหรับความล้มเหลวของทดสอบประสิทธิภาพ

สำหรับข้อมูลเพิ่มเติม ดู เอกสาร Azure DevOps และ เอกสาร LoadFocus API Client