"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Comment intégrer kith Xray/Jira

Comment intégrer kith Xray/Jira

Publié le 2024-11-08
Parcourir:178

Dans cet article, je vais démontrer une manière simple d'intégrer k6 à XRAY/Jira.

Il y a quelque temps, on m'a confié la tâche d'écrire un test de performances pour une API censée gérer un certain nombre de requêtes. Pour cette raison, nous avions besoin d'un bon outil qui serait plus rapide à utiliser et plus facile à contribuer pour tout ingénieur QA.
Ayant utilisé l'impact de charge dans le passé, je connaissais bien le K6. Voici les principales raisons pour lesquelles nous avons choisi k6 plutôt que les autres outils de test de performances :

  • Utilise Javascript : La plupart des responsables de l'assurance qualité/développeurs de mon équipe connaissaient Javascript, ce qui en faisait un produit car il n'était pas nécessaire d'apprendre un nouveau langage

  • Open-source : cela signifie qu'aucun paiement n'est requis pour utiliser l'outil et que la communauté est active

  • CI/CD : L'intégration de k6 à nos pipelines CI/CD a été simple

Je peux continuer avec les avantages du choix du k6, mais j'écrirai un nouvel article pour en parler spécifiquement.

Après avoir terminé notre framework de test, nous souhaitions avoir nos résultats de tests sur Jira. Comme nous utilisions déjà XRAY, nous avions besoin d'une solution pour convertir le rapport k6 JSON au format X-ray. Je n'ai trouvé aucune solution adaptée à notre cas.

Poignée K6Résumé()

K6 possède une fonctionnalité essentielle qui peut être utilisée pour obtenir toutes les métriques. Ces options sont stdout, XML et JSON.

Pour cela, il nous suffisait de créer un script pour récupérer l'objet de données de la fonction handleSummary.

Vous trouverez ci-dessous le script pour convertir l'objet de données de k6 en un simple rapport au format XRAY :

k6-XRAY-script

Comment configurer le script d'aide du générateur pour l'intégration de k6 et Xray

Clonez le dépôt à l'emplacement souhaité :
De préférence, créez un dossier dans le projet principal.

Exemple:
assistant, src, rapport

Cela vous aidera à bien gérer les importations sans problème :

Conditions préalables

Avant de commencer, assurez-vous que les éléments suivants sont installés sur votre ordinateur :

  • Node.js
  • npm
  • k6

Usage

Si vos tests k6 sont organisés en groupes, et que chaque titre de groupe correspond à un cas de test sur Xray, vous pouvez utiliser le script générateur pour créer un fichier JSON compatible avec Xray.

Exemple

L'image ci-dessous tirée de la documentation Xray montre des cas de test avec les clés CALC-01 et CALC-02.

How to integrate kith Xray/Jira

Dans votre script de test k6, vous pouvez nommer les titres de groupe CALC-01 et CALC-02. Le script recherchera ces noms de groupe et attribuera les résultats des tests aux cas de test respectifs sur Xray.

group('CALC-01', function() {
  // test code
});
group('CALC-02', function() {
  // test code
});

Sortir

Le script génère un fichier JSON compatible avec Xray, enregistré dans le même répertoire que le script.

Cloner le dépôt

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

Comment configurer le script

Nous utiliserons la fonction handleSummary fournie par k6 et textSummary de notre script generator.js pour générer le fichier JSON. La fonction handleSummary récupère un objet de données, que nous transmettons à getSummary pour le modifier dans un format compatible Xray.

En savoir plus sur k6 HandleSummary ici

Modifiez ouvrez votre script d'exécution et ajoutez les lignes suivantes :

import { getSummary } from "./generator.js";
import { textSummary } from "https://jslib.k6.io/k6-summary/0.0.1/index.js";

J'utilise directement le ./generator.js tel qu'il se trouvait dans le même dossier que mon script. Supposons que vous utilisiez l'assistant, cela devrait être :

import { getSummary } from "./helper/generator.js";

Ajoutez la fin de votre code, ajoutez la fonction handleSummary :

export function handleSummary(data) {
    return {
        stdout: textSummary(data, { indent: " ", enableColors: true }),
        "summary.json": JSON.stringify(getSummary(data, "CALC-2062", "CALC"), null, 2)
    };
}

Notre fonction getSummary convertira l'objet de données au format attendu par les rayons X et enregistrera la sortie dans le fichier summary.json

Pourquoi utilisons-nous textSummary ?

Pour avoir une sortie imprimée sur la console, nous devons importer le texteSummary de la bibliothèque d'utilitaires k6 JS

Mais cela peut ne pas s'appliquer à tout le monde si vous n'avez pas besoin d'un rapport de sortie standard, vous n'avez pas besoin d'importer le texteRésumé

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

Remarque : vous pouvez éliminer stdout: textSummary(data, { indent: " ", activateColors: true }), line si vous ne souhaitez pas importer textSummary

handleSummary fonctionne par défaut et est généralement appelé à la fin du cycle de vie du test.

Exécuter le script

Pour exécuter le script, utilisez la commande suivante :

k6 run script.js -e TEST_PLAN_KEY="CALC-2345" -e TEST_EXEC_KEY="CALC-0009"

TEST_PLAN_KEY et TEST_EXEC_KEY sont utilisés pour identifier le plan de test et l'exécution des tests sur Xray.

En savoir plus sur le plan de test et les clés d'exécution des tests ici

Sortir

Le script ci-dessus produira le rapport suivant sous summary.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"
    }
  ]
}

Pour obtenir plus de détails sur k6 et X-ray, veuillez consulter leur documentation :
Document K6
Document RAYON X

Découvrez également ceci - Comment créer et gérer des cas de test avec Xray et Jira, un article sympa écrit par Sérgio Freire

Et comme toujours, n'hésitez pas à me contacter !

LinkedIn
E-mail
Github

Déclaration de sortie Cet article est reproduit sur : https://dev.to/skingori/how-to-integrate-k6-with-xrayjira-5g1g?1 En cas de violation, veuillez contacter [email protected] pour le supprimer.
Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3