„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > So integrieren Sie Kith Xray/Jira

So integrieren Sie Kith Xray/Jira

Veröffentlicht am 08.11.2024
Durchsuche:325

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 handleSummary()

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

So richten Sie das Generator-Hilfsskript für die k6- und Xray-Integration ein

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:

Voraussetzungen

Bevor Sie beginnen, stellen Sie sicher, dass Folgendes auf Ihrem Computer installiert ist:

  • Node.js
  • npm
  • k6

Verwendung

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.

Beispiel

Das Bild unten aus Xray-Dokumenten zeigt Testfälle mit den Schlüsseln CALC-01 und CALC-02.

How to integrate kith Xray/Jira

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

Ausgabe

Das Skript generiert eine mit Xray kompatible JSON-Datei, die im selben Verzeichnis wie das Skript gespeichert wird.

Klonen Sie das Repo

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

So richten Sie das Skript ein

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

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

Ausführen des Skripts

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

Ausgabe

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

Freigabeerklärung Dieser Artikel ist abgedruckt unter: https://dev.to/skingori/how-to-integrate-k6-with-xrayjira-5g1g?1 Bei Verstößen wenden Sie sich bitte an [email protected], um ihn zu löschen
Neuestes Tutorial Mehr>

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