Azure DevOps

Siame vadove paaiskiname, kaip integruoti LoadFocus JMeter API klienta su Azure DevOps automatizuotam nasumui testuoti.

Nustatymo zingsniai

1. Saugokite kredencialus Azure Key Vault

Saugiam kredencialu valdymui saugokite savo LoadFocus API kredencialus Azure Key Vault:

  1. Sukurkite Key Vault Azure, jei jo dar neturite
  2. Pridekite siuos slaptazodzius:
    • loadfocus-api-key: jusu LoadFocus API raktas
    • loadfocus-team-id: jusu LoadFocus komandos ID
  3. Nustatykite paslaugos rysio jungtis, kad galetumete pasiekti Key Vault is savo konvejerio

2. Sukurkite Azure konvejeri

Sukurkite nauja faila pavadinimu azure-pipelines.yml savo saugykloje:

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. Nustatykite kintamuju grupe su Key Vault integracija

  1. Eikite i Pipelines > Library > Variable Groups
  2. Sukurkite nauja kintamuju grupe pavadinimu "loadfocus-variables"
  3. Susiekite ja su savo Azure Key Vault
  4. Pridekite siuos kintamuosius, susiedami juos su Key Vault slaptazodziais:
    • LOADFOCUS_API_KEY: susiekite su loadfocus-api-key slaptazodziu
    • LOADFOCUS_TEAM_ID: susiekite su loadfocus-team-id slaptazodziu

Isplestine konfiguracija

YAML sablonu naudojimas

Pakartotinai naudojamiems nasumo testavimo zingsniams sukurkite sablono faila 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

Tada pagrindiniame konvejeryje:

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

Keliu testu vykdymas

Norint vykdyti kelis nasumo testus nuosekliai:

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

Integracija su Azure Test Plans

Norint integruoti nasumo testu rezultatus su 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 reikes konvertuoti JSON isvestis i JUnit formata:

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

Patarimai Azure DevOps integracijai

  1. Lygiagrecios uzduotys: jei turite kelis nasumo testus, apsvarstykite galimybe naudoti lygiagrecias uzduotis:

    jobs:
    - job: API_Performance_Test
    steps:
    # Run API performance test
    - job: UI_Performance_Test
    steps:
    # Run UI performance test
  2. Diegimo vartai: naudokite nasumo testu rezultatus kaip diegimo vartus:

    - 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. Pasirinktine informacine suvestine: sukurkite pasirinktine informacine suvestine nasumo testu rezultatams vizualizuoti laiko begiu.

  4. Pranesimai: nustatykite pranesimus apie nasumo testu nesekmes:

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

Daugiau informacijos rasite Azure DevOps dokumentacijoje ir LoadFocus API kliento dokumentacijoje.