在本文中,我將示範一種將 k6 與 XRAY/Jira 整合的簡單方法。
不久前,我被指派了一項任務,為一個預計能夠處理相當多請求的 API 編寫效能測試。出於這個原因,我們需要一個好的工具,它可以更快地使用,任何 QA 工程師都可以更輕鬆地做出貢獻。
過去使用過負載衝擊,我對K6非常熟悉。以下是我們選擇 k6 而不是其他效能測試工具的主要原因:
使用 Javascript:我團隊中的大多數 QA/開發人員都熟悉 javascript,因此無需學習新語言
開源:這意味著使用該工具不需要付費,並且社區很活躍
CI/CD:將 k6 與我們的 CI/CD 管道整合非常簡單
我可以繼續選擇 k6 的優點,但我會寫一篇新文章專門討論這一點。
完成測試框架後,我們希望在 Jira 上獲得測試結果。由於我們已經在使用 XRAY,因此我們需要一個解決方案將 k6 JSON 報表轉換為 X 光格式。我找不到任何適合我們案例的解決方案。
K6 有一個基本功能,可用來取得所有指標。這些選項是 stdout、XML 和 JSON。
為此,我們只需要建立一個腳本來從handleSummary 函數取得資料物件。
以下是將資料物件從 k6 轉換為簡單 XRAY 格式報告的腳本:
k6-XRAY-腳本
將儲存庫複製到您想要的位置:
最好在主專案中建立一個資料夾。
範例:
助理、src、報告
這將幫助您順利管理導入,不會出現任何問題:
開始之前,請確保您的電腦上安裝了以下軟體:
如果您的 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
但這可能並不適用於所有人,如果您不需要任何標準輸出報告,則不必匯入文字Summary
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 }), linehandleSummary 預設工作,通常在測試生命週期結束時呼叫。
要執行腳本,請使用以下命令:
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 文檔
XRAY 檔案
こちらもチェックしてください - Xray と Jira でテスト ケースを作成および管理する方法、Sérgio Freire が書いた素晴らしい記事
そしていつものように、お気軽にご連絡ください!
リンクトイン
メール
ギットハブ
以上是如何整合 Xray/Jira的詳細內容。更多資訊請關注PHP中文網其他相關文章!