Este repositorio contiene scripts de pruebas de rendimiento desarrollados con K6 y una GitHub Actions para la ejecución continua de las pruebas en CI/CD.
Antes de ejecutar las pruebas, asegúrate de tener K6 instalado en tu sistema. Sigue las instrucciones en la documentación oficial.
- Clone este repositorio en su máquina local:
git clone https://github.com/charlyautomatiza/k6-performance-360.git
- Navega hasta el directorio del proyecto:
cd k6-performance-360
Para realizar una ejecución local:
k6 run ./src/script.js
Para usar K6 WebDashboard:
K6_WEB_DASHBOARD=true k6 run ./src/script.js
Para guardar el reporte como un archivo HTML, podemos ejecutar el siguiente comando
K6_WEB_DASHBOARD=true K6_WEB_DASHBOARD_EXPORT=html-report.html k6 run ./src/script.js
Para ejecutar un test de browser, podemos ejecutar el siguiente comando:
K6_BROWSER_HEADLESS=true k6 run ./src/browser.js
Observe que la variable de ambiente K6_BROWSER_HEADLESS
debe ser definida como true
para ser ejecutada en herramientas de integración contínua. Para ejecución y depuración en local, es útil usar la variable con el valor definido como false
para ejecutar el browser en primer plano.
K6_BROWSER_HEADLESS=false k6 run ./src/browser.js
Para probar los ejemplos de ejecución externa deberás tener instalado un cliente http como por ejemplo Postman o Insomnia.
Importante: todos los cURLs
utilizados pueden ejecutarse desde la línea de comandos o también pueden importarse desde tu cliente de preferencia.
Puedes utilizar una request de tipo GET mediante la API de K6
curl --request GET \
--url http://localhost:6565/v1/status \
--header 'Content-Type: application/json'
Puedes utilizar una request de tipo PATCH a la API de K6, similar a la siguiente
curl --request PATCH \
--url http://localhost:6565/v1/status \
--header 'Content-Type: application/json' \
--data '{
"data": {
"attributes": {
"paused": true
},
"id": "default",
"type": "status"
}
}'
Se destaca lo siguiente del paso anterior:
paused: true
-> pausa la ejecución.
Puedes utilizar una request de tipo PATCH a la API de K6, similar a la siguiente
curl --request PATCH \
--url http://localhost:6565/v1/status \
--header 'Content-Type: application/json' \
--data '{
"data": {
"attributes": {
"paused": false,
"vus": 40
},
"id": "default",
"type": "status"
}
}'
Se destaca lo siguiente del paso anterior:
paused: false
-> Reanuda la ejecución.vus: 40
-> tiene que ser un valor mayor a la cantidad de VUs actual y menor o igual a la cantidad máxima de VUs definida en el script.
Este tipo de ejecución es una opción para simular carga distribuida desde múltiples generadores de , la API de K6 no proporcionará versatilidad para gestionar este tipo de ejecución desde una máquina host.
Para el caso de que se cuente con infra propia puede ser una opción a ser considerada en combinación, por ejemplo, con el uso e implementación de herramientas como NGROK
Este repositorio incluye una GitHub Actions configurada para ejecutar pruebas continuamente en el branch principal. La acción está definida en el archivo k6-runner.yml.
Este proyecto está bajo la licencia Creative Commons CC0 1.0 Universal.