Performance Rest - Mirror Strategy

Diseño de pruebas de performance en K6 para Rest

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.

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.

 

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.

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, }); }); };