Ir al contenido

Esta guía explica cómo integrar el Cliente API de JMeter de LoadFocus con CircleCI para pruebas de rendimiento automatizadas. --name es siempre el nombre exacto de una prueba JMeter que ya guardaste en LoadFocus.

Almacena tus credenciales de API de LoadFocus como variables de entorno en CircleCI:

  1. Navega a tu proyecto en CircleCI
  2. Ve a Project Settings > Environment Variables
  3. Agrega las siguientes variables:
    • LOADFOCUS_API_KEY: Tu clave API de LoadFocus
    • LOADFOCUS_TEAM_ID: Tu ID de equipo de LoadFocus

2. Configurar el Flujo de Trabajo de CircleCI

Sección titulada «2. Configurar el Flujo de Trabajo de CircleCI»

Crea o actualiza tu archivo .circleci/config.yml para incluir pruebas de rendimiento:

version: 2.1
jobs:
performance_test:
docker:
- image: cimg/node:24.22
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 --teamid $LOADFOCUS_TEAM_ID
- run:
name: Run Performance Tests
command: |
# --name is the exact name of a test you saved in LoadFocus
loadfocus-api jmeter run-test \
--name "My_JMeter_Test" \
--thresholds "avgresponse<=200,errors==0,p95<=250" \
--format json > performance_results.json
- store_artifacts:
path: performance_results.json
destination: performance-test-results
# run-test exits with code 1 when a threshold is missed, which fails this job.
# performance_results.json starts with a few progress lines before the JSON object:
# keep only the JSON with: sed -n '/^{$/,$p' performance_results.json > results.json
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. Fallar la Compilación por Problemas de Rendimiento

Sección titulada «3. Fallar la Compilación por Problemas de Rendimiento»

El paso "Run Performance Tests" anterior ya hace fallar la compilación cuando no se cumple un umbral, porque run-test termina con el código de salida 1 y CircleCI detiene el job ante un código distinto de cero. Para mostrar antes tu propio mensaje, gestiona el fallo en la misma línea:

- run:
name: Run Performance Tests
command: |
loadfocus-api jmeter run-test \
--name "My_JMeter_Test" \
--thresholds "avgresponse<=200,errors==0,p95<=250" \
--format json > performance_results.json || {
echo "Performance test failed to meet thresholds"
exit 1
}

Para ejecutar múltiples pruebas de rendimiento en paralelo:

performance_tests:
docker:
- image: cimg/node:24.22
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 --teamid $LOADFOCUS_TEAM_ID
- run:
name: Run Performance Tests
command: |
# Obtener nombre de prueba basado en el índice
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
  1. Asignación de Recursos: Asegúrate de que tu plan de CircleCI tenga suficientes recursos para ejecutar pruebas de rendimiento, especialmente si son de larga duración.

  2. Configuración de Tiempo de Espera: Para pruebas más largas, ajusta el tiempo de espera del job en CircleCI:

    - run:
    name: Run Performance Tests
    command: loadfocus-api jmeter run-test --name "Test_Name" --wait-timeout 3600
    no_output_timeout: 60m
  3. Pruebas Condicionales: Ejecuta pruebas de rendimiento solo en ramas específicas o para commits específicos:

    performance_test:
    # Solo ejecutar si el mensaje del commit contiene [PERF-TEST]
    when:
    condition:
    or:
    - equal: [ main, << pipeline.git.branch >> ]
    - matches:
    pattern: ".*\\[PERF-TEST\\].*"
    value: << pipeline.git.commit.message >>
  4. Notificaciones: Configura notificaciones para fallos en pruebas de rendimiento:

    - run:
    name: Notify on Performance Test Failure
    command: |
    curl -X POST -H "Content-Type: application/json" \
    -d "{\"text\":\"Performance test failed for $CIRCLE_PROJECT_REPONAME\"}" \
    $SLACK_WEBHOOK_URL
    when: on_fail

Para más información, consulta la documentación de CircleCI y la documentación del Cliente API de LoadFocus.