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.
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
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 :
Avant de commencer, assurez-vous que les éléments suivants sont installés sur votre ordinateur :
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.
L'image ci-dessous tirée de la documentation Xray montre des cas de test avec les clés CALC-01 et CALC-02.
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 });
Le script génère un fichier JSON compatible avec Xray, enregistré dans le même répertoire que le script.
git clone https://github.com/skingori/k6-json-xray.git
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é
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.
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
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
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