CircleCI

Šī pamācība izskaidro, kā integrēt LoadFocus JMeter API klientu ar CircleCI automatizētai veiktspējas testēšanai.

Iestatīšanas soļi

1. Pievienojiet vides mainīgos

Saglabājiet savus LoadFocus API akreditācijas datus kā vides mainīgos CircleCI:

  1. Pārejiet uz savu projektu CircleCI
  2. Dodieties uz Project Settings > Environment Variables
  3. Pievienojiet šādus mainīgos:
    • LOADFOCUS_API_KEY: Jūsu LoadFocus API atslēga
    • LOADFOCUS_TEAM_ID: Jūsu LoadFocus komandas ID

2. Konfigurējiet CircleCI darbplūsmu

Izveidojiet vai atjauniniet savu .circleci/config.yml failu, lai iekļautu veiktspējas testēšanu:

version: 2.1
jobs:
performance_test:
docker:
- image: cimg/node:16.13
steps:
- checkout
- run:
name: Install LoadFocus JMeter API Client
command: npm install -g @loadfocus/loadfocus-api-client
- run:
name: Configure LoadFocus API Client
command: |
loadfocus-api config set apikey $LOADFOCUS_API_KEY
loadfocus-api config set teamid $LOADFOCUS_TEAM_ID
- run:
name: Run Performance Tests
command: |
loadfocus-api jmeter run-test \
--name "CircleCI_${CIRCLE_PROJECT_REPONAME}_${CIRCLE_BRANCH}" \
--thresholds "avgresponse<=200,errors==0,p95<=250" \
--format json > performance_results.json
- store_artifacts:
path: performance_results.json
destination: performance-test-results
workflows:
version: 2
build_test_deploy:
jobs:
- build_and_test
- performance_test:
requires:
- build_and_test
- deploy:
requires:
- performance_test
filters:
branches:
only: main

3. Būvējuma pārtraukšana veiktspējas problēmu gadījumā

Lai jūsu cauruļvads tiktu pārtraukts, kad veiktspējas sliekšņi netiek sasniegti, modificējiet soli "Run Performance Tests":

- run:
name: Run Performance Tests
command: |
loadfocus-api jmeter run-test \
--name "CircleCI_${CIRCLE_PROJECT_REPONAME}_${CIRCLE_BRANCH}" \
--thresholds "avgresponse<=200,errors==0,p95<=250" \
--format json > performance_results.json
# Check exit code - the command will exit with code 1 if thresholds are not met
if [ $? -ne 0 ]; then
echo "Performance test failed to meet thresholds"
exit 1
fi

Papildu konfigurācija

Paralēlā testēšana

Lai palaistu vairākus veiktspējas testus paralēli:

performance_tests:
docker:
- image: cimg/node:16.13
parallelism: 3
steps:
- checkout
- run:
name: Install LoadFocus JMeter API Client
command: npm install -g @loadfocus/loadfocus-api-client
- run:
name: Configure LoadFocus API Client
command: |
loadfocus-api config set apikey $LOADFOCUS_API_KEY
loadfocus-api config set teamid $LOADFOCUS_TEAM_ID
- run:
name: Run Performance Tests
command: |
# Get test name based on index
TESTS=("API_Test" "Frontend_Test" "Database_Test")
INDEX=$(( $CIRCLE_NODE_INDEX % 3 ))
TEST_NAME=${TESTS[$INDEX]}
echo "Running test: $TEST_NAME"
loadfocus-api jmeter run-test \
--name "$TEST_NAME" \
--thresholds "avgresponse<=200,errors==0,p95<=250" \
--format json > "performance_results_${TEST_NAME}.json"
- store_artifacts:
path: performance_results_*.json
destination: performance-test-results

Padomi CircleCI integrācijai

  1. Resursu piešķiršana: Pārliecinieties, ka jūsu CircleCI plānā ir pietiekami resursi veiktspējas testu izpildei, īpaši ja tie ir ilgstoši.

  2. Taimauta iestatījumi: Garākiem testiem pielāgojiet darba taimautu CircleCI:

    - run:
    name: Run Performance Tests
    command: loadfocus-api jmeter run-test --name "Test_Name" --waitTimeout 3600
    no_output_timeout: 60m
  3. Nosacījuma testēšana: Izpildiet veiktspējas testus tikai noteiktos zaros vai konkrētiem commitiem:

    performance_test:
    # Only run if commit message contains [PERF-TEST]
    when:
    condition:
    or:
    - equal: [ main, << pipeline.git.branch >> ]
    - matches:
    pattern: ".*\\[PERF-TEST\\].*"
    value: << pipeline.git.commit.message >>
  4. Paziņojumi: Iestatiet paziņojumus veiktspējas testu kļūmju gadījumā:

    - run:
    name: Notify on Performance Test Failure
    command: |
    if [ $? -ne 0 ]; then
    curl -X POST -H "Content-Type: application/json" \
    -d '{"text":"Performance test failed for $CIRCLE_PROJECT_REPONAME"}' \
    $SLACK_WEBHOOK_URL
    fi
    when: on_fail

Papildu informācijai skatiet CircleCI dokumentāciju un LoadFocus API klienta dokumentāciju.