Jenkins

Siame vadove paaiskiname, kaip integruoti LoadFocus JMeter API klienta su Jenkins automatizuotam nasumo testavimui.

Nustatymo zingsniai

1. Saugokite kredencialus Jenkins

Pirmiausia saugiai issaugokite savo LoadFocus API kredencialus Jenkins:

  1. Naviguokite i Jenkins Dashboard > Manage Jenkins > Manage Credentials
  2. Pasirinkite atitinkama kredencialu domena (pvz., global)
  3. Spauskite "Add Credentials"
  4. Pridekite siuos kredencialus:
    • Kind: Secret text
    • Scope: Global
    • Secret: jusu LoadFocus API raktas
    • ID: loadfocus-api-key
    • Description: LoadFocus API Key
  5. Pakartokite savo komandos ID su ID: loadfocus-team-id

2. Sukurkite Jenkins konvejeri

Sukurkite Jenkinsfile savo saugykloje:

pipeline {
agent {
docker {
image 'node:16-alpine'
}
}
environment {
LOADFOCUS_API_KEY = credentials('loadfocus-api-key')
LOADFOCUS_TEAM_ID = credentials('loadfocus-team-id')
}
stages {
stage('Build') {
steps {
sh 'npm install'
sh 'npm run build'
}
}
stage('Test') {
steps {
sh 'npm test'
}
}
stage('Performance Test') {
steps {
sh 'npm install -g @loadfocus/loadfocus-api-client'
sh 'loadfocus-api config set apikey $LOADFOCUS_API_KEY'
sh 'loadfocus-api config set teamid $LOADFOCUS_TEAM_ID'
sh '''
loadfocus-api jmeter run-test \
--name "Jenkins_${JOB_NAME}_${BUILD_NUMBER}" \
--thresholds "avgresponse<=200,errors==0,p95<=250" \
--format json > performance_results.json
'''
archiveArtifacts artifacts: 'performance_results.json', fingerprint: true
}
}
stage('Deploy') {
when {
expression {
return currentBuild.resultIsBetterOrEqualTo('SUCCESS')
}
}
steps {
echo 'Deploying...'
}
}
}
post {
always {
cleanWs()
}
}
}

3. Sukonfiguruokite Jenkins uzduoti

  1. Sukurkite nauja Pipeline uzduoti Jenkins
  2. Sukonfiguruokite konvejeri naudoti jusu Jenkinsfile
  3. Nustatykite atitinkama SCM konfiguracija jusu saugyklai gauti

Isplestine konfiguracija

Deklaratyvinis konvejeris su lygiagrecziu testavimu

Vykdykite kelis nasumo testus lygiagrecziai:

pipeline {
agent any
environment {
LOADFOCUS_API_KEY = credentials('loadfocus-api-key')
LOADFOCUS_TEAM_ID = credentials('loadfocus-team-id')
}
stages {
stage('Performance Tests') {
parallel {
stage('API Performance') {
agent {
docker {
image 'node:16-alpine'
}
}
steps {
sh 'npm install -g @loadfocus/loadfocus-api-client'
sh 'loadfocus-api config set apikey $LOADFOCUS_API_KEY'
sh 'loadfocus-api config set teamid $LOADFOCUS_TEAM_ID'
sh '''
loadfocus-api jmeter run-test \
--name "API_Performance_Test" \
--thresholds "avgresponse<=150,errors==0" \
--format json > api_performance_results.json
'''
archiveArtifacts artifacts: 'api_performance_results.json', fingerprint: true
}
}
stage('UI Performance') {
agent {
docker {
image 'node:16-alpine'
}
}
steps {
sh 'npm install -g @loadfocus/loadfocus-api-client'
sh 'loadfocus-api config set apikey $LOADFOCUS_API_KEY'
sh 'loadfocus-api config set teamid $LOADFOCUS_TEAM_ID'
sh '''
loadfocus-api jmeter run-test \
--name "UI_Performance_Test" \
--thresholds "avgresponse<=300,errors==0" \
--format json > ui_performance_results.json
'''
archiveArtifacts artifacts: 'ui_performance_results.json', fingerprint: true
}
}
}
}
}
}

Patarimai Jenkins integracijai

  1. Laiko limito apdorojimas: Nustatykite laiko limitus ilgai trunkancziems nasumo testams:

    stage('Performance Test') {
    options {
    timeout(time: 60, unit: 'MINUTES')
    }
    steps {
    // Nasumo testo zingsniai
    }
    }
  2. Salyginis vykdymas: Vykdykite nasumo testus tik tam tikrose sakose:

    stage('Performance Test') {
    when {
    anyOf {
    branch 'main'
    branch 'develop'
    tag pattern: "v\\d+\\.\\d+\\.\\d+", comparator: "REGEXP"
    }
    }
    steps {
    // Nasumo testo zingsniai
    }
    }
  3. Suplanuotas testavimas: Vykdykite nasumo testus pagal grafika:

    pipeline {
    agent any
    triggers {
    cron('0 0 * * *') // Kiekviena diena vidurnakti
    }
    stages {
    // Konvejerio etapai
    }
    }
  4. Parametrizuoti testai: Leiskite pritaikyti testo parametrus:

    pipeline {
    agent any
    parameters {
    string(name: 'TEST_NAME', defaultValue: 'API_Performance_Test', description: 'LoadFocus testo pavadinimas')
    string(name: 'THRESHOLDS', defaultValue: 'avgresponse<=200,errors==0', description: 'Nasumo ribines vertes')
    string(name: 'WAIT_TIMEOUT', defaultValue: '1800', description: 'Maksimalus laukimo laikas sekundemis')
    }
    stages {
    stage('Performance Test') {
    steps {
    sh """
    loadfocus-api jmeter run-test \\
    --name "${params.TEST_NAME}" \\
    --thresholds "${params.THRESHOLDS}" \\
    --waitTimeout ${params.WAIT_TIMEOUT} \\
    --format json > performance_results.json
    """
    }
    }
    }
    }

Daugiau informacijos rasite Jenkins dokumentacijoje ir LoadFocus API kliento dokumentacijoje.