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
Para Windows se puede utilizar el siguiente Instalador para Windows
Ejecutando el proyecto
Descargar de GitHub el proyecto spin-api-performance-test.
Para instalar las dependencias, ejecutar en la raíz del proyecto:
npm installPara ejecutar con k6 cada uno de los tests, utilizar el siguiente comando:
k6 run .\\TEST_PATH\\accountDetailsSuccessGrpcTaskPara 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
Se importa la librería k6/http para realizar las peticiones vía REST (POST, PUT, PATCH...).
Posteriormente se importa la configuración requerida por el aggregation y se arma la url a consultar.
Se definen los parámetros de ejecución del test y se invoca al servicio con el request correspondiente, finalmente se valida la respuesta.
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
Se importa la librería k6/net/grpc para realizar las peticiones vía gRPC.
Posteriormente se importa la configuración requerida por el aggregation y se arma la url a consultar.
Se carga el archivo proto requerido para la prueba.
Se definen los parámetros de ejecución del test y se invoca al servicio con el request correspondiente, finalmente se valida la respuesta.
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
Se importan los test a ser considerados en la ejecución.
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.