Heim > Web-Frontend > js-Tutorial > So integrieren Sie Kith Xray/Jira

So integrieren Sie Kith Xray/Jira

WBOY
Freigeben: 2024-09-10 11:30:51
Original
531 Leute haben es durchsucht

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, die eine ganze Reihe von Anfragen verarbeiten sollte. 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, sodass keine Notwendigkeit bestand, 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 handleSummary-Funktion aufzunehmen.

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 Ort:
Erstellen Sie vorzugsweise einen Ordner innerhalb des Hauptprojekts.

Beispiel:
Helfer, src, melden

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
});
Nach dem Login kopieren

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
Nach dem Login kopieren

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";
Nach dem Login kopieren

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";
Nach dem Login kopieren

Fügen Sie am Ende Ihres Codes 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)
    };
}
Nach dem Login kopieren

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 die Textzusammenfassung nicht importieren müssen

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)
    };
}
Nach dem Login kopieren

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"
Nach dem Login kopieren

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"
    }
  ]
}
Nach dem Login kopieren

Um weitere Informationen zu k6 und Röntgen zu erhalten, wenden Sie sich bitte an die Dokumentation:
K6-Dokument
XRAY-Dokument

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
Courriel
Github

Das obige ist der detaillierte Inhalt vonSo integrieren Sie Kith Xray/Jira. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:dev.to
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage