En este artículo, demostraré una forma sencilla en la que podemos integrar k6 con XRAY/Jira.
Hace algún tiempo me asignaron la tarea de escribir una prueba de rendimiento para una API que se esperaba que manejara una gran cantidad de solicitudes. Por este motivo, necesitábamos una buena herramienta que fuera más rápida de utilizar y más fácil de contribuir para cualquier ingeniero de control de calidad.
Habiendo usado impacto de carga en el pasado, estaba bastante familiarizado con K6. Estas son las razones principales por las que elegimos k6 sobre otras herramientas de prueba de rendimiento:
Usa Javascript: La mayoría de los desarrolladores y controles de calidad de mi equipo estaban familiarizados con JavaScript, por lo que no era necesario aprender un nuevo idioma
Código abierto: Esto significa que no se requieren pagos para usar la herramienta y la comunidad está activa
CI/CD: integrar k6 con nuestros canales de CI/CD fue sencillo
Puedo seguir con las ventajas de elegir k6, pero escribiré un nuevo post para hablar de eso específicamente.
Después de completar nuestro marco de prueba, queríamos tener los resultados de nuestra prueba en Jira. Como ya estábamos usando XRAY, necesitábamos una solución para convertir el informe JSON de k6 al formato de rayos X. No pude encontrar ninguna solución que funcionara con nuestro caso.
K6 tiene una característica esencial que se puede utilizar para obtener todas las métricas. Estas opciones son stdout, XML y JSON.
Para esto, solo necesitábamos crear un script para tomar el objeto de datos de la función handleSummary.
A continuación se muestra el script para convertir el objeto de datos de k6 a un informe en formato XRAY simple:
k6-XRAY-script
Clone el repositorio en la ubicación deseada:
Preferiblemente, cree una carpeta dentro del proyecto principal.
Ejemplo:
ayudante, src, informe
Esto te ayudará a gestionar bien las importaciones sin problemas:
Antes de comenzar, asegúrese de tener lo siguiente instalado en su máquina:
Si sus pruebas de k6 están organizadas en grupos y el título de cada grupo corresponde a un caso de prueba en Xray, puede usar el script del generador para crear un archivo JSON compatible con Xray.
La siguiente imagen de documentos de rayos X muestra casos de prueba con las claves CALC-01 y CALC-02.
En su script de prueba k6, puede nombrar los títulos del grupo como CALC-01 y CALC-02. El script buscará estos nombres de grupos y asignará los resultados de las pruebas a los respectivos casos de prueba en Xray.
group('CALC-01', function() { // test code }); group('CALC-02', function() { // test code });
El script genera un archivo JSON compatible con Xray, guardado en el mismo directorio que el script.
git clone https://github.com/skingori/k6-json-xray.git
Utilizaremos la función handleSummary proporcionada por k6 y textSummary de nuestro script generador.js para generar el archivo JSON. La función handleSummary toma un objeto de datos, que pasamos a getSummary para modificarlo a un formato compatible con Xray.
Lea más sobre k6 HandleSummary aquí
Cambie, abra su script de ejecución y agregue las siguientes líneas:
import { getSummary } from "./generator.js"; import { textSummary } from "https://jslib.k6.io/k6-summary/0.0.1/index.js";
Estoy usando ./generator.js directamente tal como estaba en la misma carpeta que mi script. Supongamos que estaba usando el asistente, este debería ser:
import { getSummary } from "./helper/generator.js";
Agregue el final de su código y agregue la función handleSummary:
export function handleSummary(data) { return { stdout: textSummary(data, { indent: " ", enableColors: true }), "summary.json": JSON.stringify(getSummary(data, "CALC-2062", "CALC"), null, 2) }; }
Nuestra función getSummary convertirá el objeto de datos al formato esperado de rayos X y guardará el resultado en el archivo resumen.json
¿Por qué utilizamos textSummary?
Para tener una salida impresa en la consola, necesitamos importar textSummary desde la biblioteca de utilidades k6 JS
Pero es posible que esto no se aplique a todos si no necesita ningún informe estándar, no es necesario importar el resumen de texto
import http from 'k6/http'; import { sleep, group, check } from 'k6'; import { getSummary } from "./generator.js"; import { textSummary } from "https://jslib.k6.io/k6-summary/0.0.1/index.js"; export const options = { vus: 10, duration: '30s', }; export default function() { group('CALC-01', function() { const resp = http.get('http://test.k6.io'); check(resp, { 'status is 200': (r) => r.status === 200, }); sleep(1); }); group('CALC-02', function() { const resp = http.get('http://test.k6.io'); check(resp, { 'status is 200': (r) => r.status === 200, }); sleep(1); }); }; export function handleSummary(data) { return { stdout: textSummary(data, { indent: " ", enableColors: true }), "summary.json": JSON.stringify(getSummary(data, "CALC-2062", "CALC"), null, 2) }; }
Nota: Puede eliminar stdout: textSummary(data, { indent: " ", enableColors: true }), línea si no desea importar textSummary
handleSummary funciona de forma predeterminada y generalmente se llama al final del ciclo de vida de la prueba.
Para ejecutar el script, use el siguiente comando:
k6 run script.js -e TEST_PLAN_KEY="CALC-2345" -e TEST_EXEC_KEY="CALC-0009"
TEST_PLAN_KEY y TEST_EXEC_KEY se utilizan para identificar el plan de prueba y la ejecución de la prueba en Xray.
Lea más sobre el plan de pruebas y las claves de ejecución de pruebas aquí
El script anterior producirá el siguiente informe en resumen.json
{ "info": { "summary": "K6 Test execution - Mon Sep 09 2024 21:20:16 GMT 0300 (EAT)", "description": "This is k6 test with maximum iteration duration of 4.95s, 198 passed requests and 0 failures on checks", "user": "k6-user", "startDate": "2024-09-09T18:20:16.000Z", "finishDate": "2024-09-09T18:20:16.000Z", "testPlanKey": "CALC-2345" }, "testExecutionKey": "CALC-0009", "tests": [ { "testKey": "CALC-01", "start": "2024-09-09T18:20:16.000Z", "finish": "2024-09-09T18:20:16.000Z", "comment": "Test execution passed", "status": "PASSED" }, { "testKey": "CALC-02", "start": "2024-09-09T18:20:16.000Z", "finish": "2024-09-09T18:20:16.000Z", "comment": "Test execution passed", "status": "PASSED" } ] }
Para obtener más detalles sobre k6 y los rayos X, comuníquese con su documentación:
Documento K6
Documento de RAYOS X
Mira esto también: Cómo crear y gestionar casos de prueba con Xray y Jira, un artículo interesante escrito por Sérgio Freire
Y como siempre, ¡no dudes en comunicarte conmigo!
LinkedIn
Correo electrónico
Github
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3