In diesem Artikel werde ich eine einfache Möglichkeit demonstrieren, wie wir k6 mit XRAY/Jira integrieren können.
Vor einiger Zeit wurde mir die Aufgabe übertragen, einen Leistungstest für eine API zu schreiben, von der erwartet wurde, dass sie eine ganze Reihe von Anfragen verarbeiten kann. Aus diesem Grund brauchten wir ein gutes Tool, das schneller zu erlernen ist und für jeden QS-Ingenieur einfacher beizutragen ist.
Da ich in der Vergangenheit Laststöße verwendet hatte, war ich mit K6 recht vertraut. Dies sind die Hauptgründe, warum wir uns für k6 gegenüber den anderen Leistungstesttools entschieden haben:
Verwendet Javascript: Die meisten QA/Entwickler in meinem Team waren mit Javascript vertraut, weshalb es nicht nötig war, eine neue Sprache zu lernen
Open-Source: Das bedeutet, dass für die Nutzung des Tools keine Zahlungen erforderlich sind und die Community aktiv ist
CI/CD: Die Integration von k6 in unsere CI/CD-Pipelines war unkompliziert
Ich kann mit den Vorteilen der Wahl von k6 fortfahren, aber ich werde einen neuen Beitrag schreiben, um speziell darüber zu sprechen.
Nachdem wir unser Test-Framework fertiggestellt hatten, wollten wir unsere Testergebnisse auf Jira haben. Da wir XRAY bereits verwendeten, brauchten wir eine Lösung, um den k6-JSON-Bericht in das Röntgenformat zu konvertieren. Ich konnte keine Lösung finden, die in unserem Fall funktionierte.
K6 verfügt über eine wesentliche Funktion, mit der alle Metriken abgerufen werden können. Diese Optionen sind stdout, XML und JSON.
Dazu mussten wir lediglich ein Skript erstellen, um das Datenobjekt aus der Funktion „handleSummary“ zu übernehmen.
Unten finden Sie das Skript zum Konvertieren des Datenobjekts von k6 in einen einfachen Bericht im XRAY-Format:
k6-XRAY-Skript
Klonen Sie das Repo an den gewünschten Speicherort:
Erstellen Sie vorzugsweise einen Ordner im Hauptprojekt.
Beispiel:
Helfer, Quelle, Bericht
Dies wird Ihnen helfen, die Importe ohne Probleme zu verwalten:
Bevor Sie beginnen, stellen Sie sicher, dass Folgendes auf Ihrem Computer installiert ist:
Wenn Ihre k6-Tests in Gruppen organisiert sind und jeder Gruppentitel einem Testfall auf Xray entspricht, können Sie das Generatorskript verwenden, um eine mit Xray kompatible JSON-Datei zu erstellen.
Das Bild unten aus Xray-Dokumenten zeigt Testfälle mit den Schlüsseln CALC-01 und CALC-02.
In Ihrem k6-Testskript können Sie die Gruppentitel als CALC-01 und CALC-02 benennen. Das Skript sucht nach diesen Gruppennamen und ordnet die Testergebnisse den jeweiligen Testfällen auf Xray zu.
group('CALC-01', function() { // test code }); group('CALC-02', function() { // test code });
Das Skript generiert eine mit Xray kompatible JSON-Datei, die im selben Verzeichnis wie das Skript gespeichert wird.
git clone https://github.com/skingori/k6-json-xray.git
Wir verwenden die von k6 bereitgestellte Funktion handleSummary und textSummary aus unserem Generator.js-Skript, um die JSON-Datei zu generieren. Die Funktion handleSummary nimmt ein Datenobjekt auf, das wir an getSummary übergeben, um es in ein Xray-kompatibles Format zu ändern.
Lesen Sie hier mehr über k6 HandleSummary
Ändern Sie Ihr Ausführungsskript und fügen Sie die folgenden Zeilen hinzu:
import { getSummary } from "./generator.js"; import { textSummary } from "https://jslib.k6.io/k6-summary/0.0.1/index.js";
Ich verwende ./generator.js direkt, da es sich im selben Ordner wie mein Skript befand. Nehmen wir an, Sie haben ein Hilfsprogramm verwendet. Das sollte lauten:
import { getSummary } from "./helper/generator.js";
Fügen Sie das Ende Ihres Codes hinzu und fügen Sie die handleSummary-Funktion hinzu:
export function handleSummary(data) { return { stdout: textSummary(data, { indent: " ", enableColors: true }), "summary.json": JSON.stringify(getSummary(data, "CALC-2062", "CALC"), null, 2) }; }
Unsere Funktion getSummary konvertiert das Datenobjekt in das für Röntgenaufnahmen erwartete Format und speichert die Ausgabe in der Datei summary.json
Warum verwenden wir textSummary?
Um eine gedruckte Ausgabe auf der Konsole zu erhalten, müssen wir textSummary aus der k6 JS-Dienstprogrammbibliothek importieren
Dies gilt jedoch möglicherweise nicht für alle, wenn Sie keinen Standardbericht benötigen und den Text nicht importieren müssen. Zusammenfassung
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) }; }
Hinweis: Sie können stdout: textSummary(data, { indent: " ", enableColors: true }), line entfernen, wenn Sie textSummary nicht importieren möchten
handleSummary funktioniert standardmäßig und wird normalerweise am Ende des Testlebenszyklus aufgerufen.
Um das Skript auszuführen, verwenden Sie den folgenden Befehl:
k6 run script.js -e TEST_PLAN_KEY="CALC-2345" -e TEST_EXEC_KEY="CALC-0009"
TEST_PLAN_KEY und TEST_EXEC_KEY werden verwendet, um den Testplan und die Testausführung auf Xray zu identifizieren.
Lesen Sie hier mehr über Testplan und Testausführungsschlüssel
Das obige Skript erstellt den folgenden Bericht unter 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" } ] }
Um weitere Informationen zu k6 und Röntgen zu erhalten, wenden Sie sich bitte an deren Dokumentation:
K6-Dokument
XRAY-Dokument
Schauen Sie sich auch das an – So erstellen und verwalten Sie Testfälle mit Xray und Jira, ein cooler Artikel von Sérgio Freire
Und wie immer können Sie sich gerne an mich wenden!
LinkedIn
E-Mail
Github
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3