"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > Cómo integrar kith Xray/Jira

Cómo integrar kith Xray/Jira

Publicado el 2024-11-08
Navegar:529

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.

Mango K6Resumen()

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

Cómo configurar el script auxiliar del generador para k6 y la integración de rayos X

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:

Requisitos previos

Antes de comenzar, asegúrese de tener lo siguiente instalado en su máquina:

  • Nodo.js
  • npm
  • k6

Uso

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.

Ejemplo

La siguiente imagen de documentos de rayos X muestra casos de prueba con las claves CALC-01 y CALC-02.

How to integrate kith Xray/Jira

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
});

Producción

El script genera un archivo JSON compatible con Xray, guardado en el mismo directorio que el script.

Clonar el repositorio

git clone https://github.com/skingori/k6-json-xray.git

Cómo configurar el script

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

Ejemplo
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.

Ejecutando el guión

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í

Producción

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

Declaración de liberación Este artículo se reproduce en: https://dev.to/skingori/how-to-integrate-k6-with-xrayjira-5g1g?1 Si hay alguna infracción, comuníquese con [email protected] para eliminarla.
Último tutorial Más>

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