Pruebas de performance

Para la implementación de pruebas de performance, se utiliza la herramienta Grafana k6, el proceso de instalación, ejecución y estructura del proyecto se describen a continuación.

Instalando el entorno para k6

Ejecutando el proyecto

  • Descargar de GitHub el proyecto spin-api-performance-test.

  • Para instalar las dependencias, ejecutar en la raíz del proyecto:
    npm install

  • Para ejecutar con k6 cada uno de los tests, utilizar el siguiente comando:
    k6 run .\\TEST_PATH\\accountDetailsSuccessGrpcTask

  • Para generar un archivo csv con los resultados de la ejecución, utilizar el siguiente comando:
    k6 run .\\TEST_PATH\\accountSyncSuccessRestTask --out csv=test_results.csv

Estructura del código fuente

La carpeta padre MirrorStrategy incluye a los 3 aggregations en los que se ejecutan las pruebas:

  • Account Aggregation

  • Card Aggregation

  • Customer Aggregation

Cada uno, con su respectiva lista de servicios REST / gRPC y un test integrado con todos los escenarios.

Para los servicios gRPC se tiene una carpeta proto que incluye los archivos protobuffer requeridos.

Imagen con el árbol de directorios


Imagen con el árbol de directorios y archivos

El archivo config

El archivo config.js centraliza la configuración para la ejecución de pruebas, permitiendo cambiar urls, puertos, contexto, nombres de servicios, api key y parámetros de prueba, sin tener que hacerlo en cada test.

La variable ENV, permite seleccionar el ambiente en el que se está trabajando (local, dev, qa, etc.) cargando las configuraciones predefinidas para estos ambientes como URIs y ApiKey; éste último es necesario especificarlo en el archivo config, por seguridad no se incluye en el repositorio.

REST test

En la siguiente imagen se muestra un escenario para la obtención de Account Details del servicio Account Aggregation.

Detalle

  1. Se importa la librería k6/http para realizar las peticiones vía REST (POST, PUT, PATCH...).

  2. Posteriormente se importa la configuración requerida por el aggregation y se arma la url a consultar.

  3. Se definen los parámetros de ejecución del test y se invoca al servicio con el request correspondiente, finalmente se valida la respuesta.

  4. Algunos campos del request son generados de forma aleatoria, otros se obtienen de un csv para probar con distintos datos.

gRPC test

En la siguiente imagen se muestra un escenario para la obtención de Balance Details del servicio Account Aggregation.

Detalle

  1. Se importa la librería k6/net/grpc para realizar las peticiones vía gRPC.

  2. Posteriormente se importa la configuración requerida por el aggregation y se arma la url a consultar.

  3. Se carga el archivo proto requerido para la prueba.

  4. Se definen los parámetros de ejecución del test y se invoca al servicio con el request correspondiente, finalmente se valida la respuesta.

  5. Algunos campos del request son generados de forma aleatoria, otros se obtienen de un csv para probar con distintos datos.

Se deberá establecer en true la propiedad plaintext en la conexión cuando se requiera utilizar TLS

Integration test

En la siguiente imagen se muestran los test del servicio Account Aggregation integrados.

Detalle

  1. Se importan los test a ser considerados en la ejecución.

  2. Se definen los parámetros de ejecución del test integrado y se invoca cada escenario.

Las modificaciones realizadas en cualquier escenario, se reflejarán en el test integrado que lo contenga, permitiendo la reutilización del código.

Ejemplo de ejecución

test en ambiente local

test integrado en ambiente local