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 sera 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 QA/Développeurs de mon équipe étaient familiers avec Javascript, c'est pourquoi il n'y avait pas besoin 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 sur les avantages de choisir 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 qui fonctionne avec 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èmes :
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 Xray Docs 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 helper, 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 textSummary depuis 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 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"
Les 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
こちらもチェックしてください - Xray と Jira でテスト ケースを作成および管理する方法、Sérgio Freire が書いた素晴らしい記事
そしていつものように、お気軽にご連絡ください!
リンクトイン
メール
ギットハブ
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!