この記事では、k6 を XRAY/Jira と統合する簡単な方法を説明します。
しばらく前に、かなりの数のリクエストを処理することが予想される API のパフォーマンス テストを作成するタスクを私に割り当てられました。このため、QA エンジニアがより迅速に利用でき、簡単に貢献できる優れたツールが必要でした。
私は過去にロードインパクトを使用していたので、K6 についてはよく知っていました。他のパフォーマンス テスト ツールではなく k6 を選択した主な理由は次のとおりです:
JavaScript を使用: 私のチームのほとんどの QA/開発者は JavaScript に精通していたため、新しい言語を学ぶ必要がなかったのでうまくいきました
オープンソース: つまり、ツールの使用に支払いは必要なく、コミュニティはアクティブです
CI/CD: k6 と CI/CD パイプラインの統合は簡単でした
k6 を選択する利点については引き続き説明しますが、それについて具体的に説明するために新しい投稿を書くつもりです。
テスト フレームワークが完成した後、テスト結果を Jira で取得したいと考えました。すでに XRAY を使用していたため、k6 JSON レポートを X-ray 形式に変換するソリューションが必要でした。私たちのケースに当てはまる解決策は見つかりませんでした。
K6 には、すべてのメトリクスを取得するために使用できる重要な機能があります。これらのオプションは、stdout、XML、および JSON です。
このために必要なのは、handlesummary 関数からデータ オブジェクトを取り込むスクリプトを作成することだけでした。
以下は、データ オブジェクトを k6 から単純な XRAY 形式のレポートに変換するスクリプトです:
k6-XRAY-スクリプト
希望の場所にリポジトリのクローンを作成します:
できればメインプロジェクト内にフォルダーを作成してください。
例:
ヘルパー、ソース、レポート
これにより、インポートを問題なく適切に管理できます:
始める前に、次のものがマシンにインストールされていることを確認してください:
k6 テストがグループに編成されており、各グループ タイトルが Xray のテスト ケースに対応している場合、ジェネレーター スクリプトを使用して Xray と互換性のある JSON ファイルを作成できます。
Xray ドキュメントからの以下の画像は、キー CALC-01 および CALC-02 を持つテスト ケースを示しています。
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 }), line を削除できます。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線ドキュメント
こちらもチェックしてください - Xray と Jira でテスト ケースを作成および管理する方法、Sérgio Freire が書いた素晴らしい記事
そしていつものように、お気軽にご連絡ください!
リンクトイン
メール
ギットハブ
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3