kith Xray/Jira を統合する方法

WBOY
WBOYオリジナル
2024-09-10 11:30:51499ブラウズ

この記事では、k6 を XRAY/Jira と統合する簡単な方法を説明します。

少し前に、かなりの数のリクエストを処理することが予想される API のパフォーマンス テストを作成するタスクを私に割り当てられました。このため、QA エンジニアがより迅速に利用でき、簡単に貢献できる優れたツールが必要でした。
過去にロードインパクトを使用していたので、K6 についてはよく知っていました。他のパフォーマンス テスト ツールではなく k6 を選択した主な理由は次のとおりです。

  • JavaScript を使用: 私のチームのほとんどの QA/開発者は JavaScript に精通しており、新しい言語を学ぶ必要がなかったのでうまくいきました

  • オープンソース: これは、ツールの使用に支払いが必要なく、コミュニティがアクティブであることを意味します

  • CI/CD: k6 と CI/CD パイプラインの統合は簡単でした

k6 を選択する利点については引き続き説明しますが、それについて具体的に説明するために新しい投稿を書くつもりです。

テスト フレームワークが完成した後、テスト結果を Jira で取得したいと考えました。すでに XRAY を使用していたため、k6 JSON レポートを X-ray 形式に変換するソリューションが必要でした。私たちのケースに当てはまる解決策は見つかりませんでした。

K6 ハンドル概要()

K6 には、すべてのメトリクスを取得するために使用できる重要な機能があります。これらのオプションは、stdout、XML、および JSON です。

このために必要なのは、handlesummary 関数からデータ オブジェクトを取り込むスクリプトを作成することだけでした。

以下は、データ オブジェクトを k6 から単純な XRAY 形式のレポートに変換するスクリプトです。

k6-XRAY-スクリプト

k6 と Xray 統合用のジェネレーター ヘルパー スクリプトをセットアップする方法

希望の場所にリポジトリのクローンを作成します:
できればメインプロジェクト内にフォルダーを作成してください。

例:
ヘルパー、ソース、レポート

これは、問題なくインポートを適切に管理するのに役立ちます:

前提条件

始める前に、次のものがマシンにインストールされていることを確認してください:

  • Node.js
  • npm
  • k6

使用法

k6 テストがグループに編成されており、各グループのタイトルが Xray のテスト ケースに対応している場合、ジェネレーター スクリプトを使用して Xray と互換性のある JSON ファイルを作成できます。

Xray ドキュメントからの以下の画像は、キー CALC-01 と CALC-02 を持つテスト ケースを示しています。

How to integrate kith Xray/Jira

k6 テスト スクリプトでは、グループ タイトルに CALC-01 および CALC-02 という名前を付けることができます。スクリプトはこれらのグループ名を検索し、テスト結果を Xray 上のそれぞれのテスト ケースに割り当てます。

group('CALC-01', function() {
  // test code
});
group('CALC-02', function() {
  // test code
});

出力

スクリプトは Xray と互換性のある JSON ファイルを生成し、スクリプトと同じディレクトリに保存されます。

リポジトリのクローンを作成する

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

スクリプトの設定方法

k6 が提供する handlesummary 関数と、generator.js スクリプトの textsummary を使用して、JSON ファイルを生成します。 handlesummary 関数はデータ オブジェクトを受け取り、それを getsummary に渡して Xray 互換形式に変更します。

k6 Handlesummary の詳細については、こちらをご覧ください

実行スクリプトを変更して開き、次の行を追加します。

import { getSummary } from "./generator.js";
import { textSummary } from "https://jslib.k6.io/k6-summary/0.0.1/index.js";

スクリプトと同じフォルダーにあった ./generator.js を直接使用しています。ヘルパーを使用していると仮定しましょう:

import { getSummary } from "./helper/generator.js";

コードの最後に handlesummary 関数を追加します。

export function handleSummary(data) {
    return {
        stdout: textSummary(data, { indent: " ", enableColors: true }),
        "summary.json": JSON.stringify(getSummary(data, "CALC-2062", "CALC"), null, 2)
    };
}

関数 getsummary は、データ オブジェクトを X 線で想定される形式に変換し、出力を summary.json ファイルに保存します

なぜ textsummary を使用するのですか?

コンソールに出力を印刷するには、k6 JS ユーティリティ ライブラリから textsummary をインポートする必要があります

ただし、標準出力レポートが必要ない場合、テキスト概要をインポートする必要がない場合は、これがすべての人に当てはまるわけではありません

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

注: textsummary をインポートしたくない場合は、stdout: textsummary(data, { indent: " ",enableColors: true })、行を削除できます

handlesummary はデフォルトで機能し、通常はテストのライフサイクルの最後に呼び出されます。

スクリプトの実行

スクリプトを実行するには、次のコマンドを使用します:

k6 run script.js -e TEST_PLAN_KEY="CALC-2345" -e TEST_EXEC_KEY="CALC-0009"

TEST_PLAN_KEY と TEST_EXEC_KEY は、Xray でのテスト計画とテスト実行を識別するために使用されます。

テスト計画とテスト実行キーの詳細については、こちらをご覧ください

出力

上記のスクリプトは、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"
    }
  ]
}

k6 と X-ray の詳細については、ドキュメントを参照してください。
K6 ドキュメント
X線ドキュメント

Check out this as well - How to create and manage test cases with Xray and Jira a cool article written by Sérgio Freire

And as always, feel free to reach out to me!

LinkedIn
Email
Github

以上がkith Xray/Jira を統合する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。