Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Diseño de pruebas de performance en K6 para Rest

Asimismo, encontrarás el diseño de las pruebas de performance de los siguientes componentes

...

Account

...

Card

...

Importaciones

  • group y check de k6 son funciones que permiten estructurar las pruebas y validar respuestas respectivamente.

  • http de k6 se utiliza para realizar peticiones HTTP.

  • Configuraciones específicas de ACCOUNT_AGGREGATION_REST son importadas desde un archivo de configuración config.js.

  • papaparse biblioteca importada para analizar archivos CSV.

  • SharedArray de k6/data permite compartir datos entre diferentes VUs (Unidades Virtuales) durante una prueba.

Code Block
languagejs
import { group, check } from 'k6';
import http from 'k6/http';
import { ACCOUNT_AGGREGATION_REST } from '../../../../config.js';
import papaparse from '../../../../../../../../../modules/papaparse.js';
import { SharedArray } from 'k6/data';

Configuración y Datos

  • La constante url se construye combinando dos propiedades del objeto ACCOUNT_AGGREGATION_REST.

  • Las params se extraen directamente de ACCOUNT_AGGREGATION_REST.

  • Se definen las options para la ejecución de las pruebas basándose en ACCOUNT_AGGREGATION_REST.testOptions.

  • Se utiliza papaparse para analizar un archivo CSV que contiene datos de prueba y se almacena en una estructura de datos SharedArray.

Code Block
const url = `${ACCOUNT_AGGREGATION_REST.uri}${ACCOUNT_AGGREGATION_REST.account.details}`;

const params = ACCOUNT_AGGREGATION_REST.params;

export const options = {
    rps: ACCOUNT_AGGREGATION_REST.testOptions.rps,
    //discardResponseBodies: TEST_OPTIONS_INTEGRATION.discardResponseBodies,
    scenarios: {
        Scenario_AccountDetails: {
            exec: 'accountDetailsSuccessRestTask',
            executor: ACCOUNT_AGGREGATION_REST.testOptions.executor,
            vus: ACCOUNT_AGGREGATION_REST.testOptions.vus,
            iterations: ACCOUNT_AGGREGATION_REST.testOptions.iterations,
            maxDuration: ACCOUNT_AGGREGATION_REST.testOptions.maxDuration,
        }
    }
};
const csvData = new SharedArray('accountsTestData', function () {
    return papaparse.parse(open(`${ACCOUNT_AGGREGATION_REST.testDataPath}/accountsTestData.csv`), { header: true }).data;
});

Función de Prueba

  • La función accountDetailsSuccessRestTask() define un escenario de prueba:

    • Selecciona aleatoriamente una cuenta del archivo CSV para posteriormente setearla como número de cuenta.

    • Se utiliza la función group para agrupar las acciones dentro de una etiqueta llamada 'AccountDetails'.

    • Dentro de este grupo, se crea una carga útil (payload) con un número de cuenta aleatoria tomada del csv y se realiza una solicitud HTTP POST a la URL definida anteriormente con dicha carga útil y los parámetros especificados.

    • Utiliza la función check para verificar si la respuesta HTTP tiene un estado de 200.

Code Block

export function accountDetailsSuccessRestTask() {

    const randomAccount = csvData[Math.floor(Math.random() * csvData.length)];
    group('AccountDetails', function () {

        const payload = JSON.stringify({
            "accountNumber": randomAccount.account
        });

        const response = http.post(url, payload, params);

        check(response, {
            'status is 200': r => r.status === 200,
        });
    });
};