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.

1import { group, check } from 'k6'; 2import http from 'k6/http'; 3import { ACCOUNT_AGGREGATION_REST } from '../../../../config.js'; 4import papaparse from '../../../../../../../../../modules/papaparse.js'; 5import { 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.


1const url = `${ACCOUNT_AGGREGATION_REST.uri}${ACCOUNT_AGGREGATION_REST.account.details}`; 2 3const params = ACCOUNT_AGGREGATION_REST.params; 4 5export const options = { 6 rps: ACCOUNT_AGGREGATION_REST.testOptions.rps, 7 //discardResponseBodies: TEST_OPTIONS_INTEGRATION.discardResponseBodies, 8 scenarios: { 9 Scenario_AccountDetails: { 10 exec: 'accountDetailsSuccessRestTask', 11 executor: ACCOUNT_AGGREGATION_REST.testOptions.executor, 12 vus: ACCOUNT_AGGREGATION_REST.testOptions.vus, 13 iterations: ACCOUNT_AGGREGATION_REST.testOptions.iterations, 14 maxDuration: ACCOUNT_AGGREGATION_REST.testOptions.maxDuration, 15 } 16 } 17}; 18const csvData = new SharedArray('accountsTestData', function () { 19 return papaparse.parse(open(`${ACCOUNT_AGGREGATION_REST.testDataPath}/accountsTestData.csv`), { header: true }).data; 20});

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.

1 2export function accountDetailsSuccessRestTask() { 3 4 const randomAccount = csvData[Math.floor(Math.random() * csvData.length)]; 5 group('AccountDetails', function () { 6 7 const payload = JSON.stringify({ 8 "accountNumber": randomAccount.account 9 }); 10 11 const response = http.post(url, payload, params); 12 13 check(response, { 14 'status is 200': r => r.status === 200, 15 }); 16 }); 17};