在本文中,我將示範一種將 k6 與 XRAY/Jira 整合的簡單方法。
不久前,我被指派了一項任務,為一個預計能夠處理相當多請求的 API 編寫效能測試。出於這個原因,我們需要一個好的工具,它可以更快地使用,任何 QA 工程師都可以更輕鬆地做出貢獻。
過去使用過負載衝擊,我對K6非常熟悉。以下是我們選擇 k6 而不是其他效能測試工具的主要原因:
使用 Javascript:我團隊中的大多數 QA/開發人員都熟悉 javascript,因此無需學習新語言
開源:這意味著使用該工具不需要付費,並且社區很活躍
CI/CD:將 k6 與我們的 CI/CD 管道整合非常簡單
我可以繼續選擇 k6 的優點,但我會寫一篇新文章專門討論這一點。
完成測試框架後,我們希望在 Jira 上獲得測試結果。由於我們已經在使用 XRAY,因此我們需要一個解決方案將 k6 JSON 報表轉換為 X 光格式。我找不到任何適合我們案例的解決方案。
K6 句柄摘要()
K6 有一個基本功能,可用來取得所有指標。這些選項是 stdout、XML 和 JSON。
為此,我們只需要建立一個腳本來從handleSummary 函數取得資料物件。
以下是將資料物件從 k6 轉換為簡單 XRAY 格式報告的腳本:
k6-XRAY-腳本
如何為 k6 和 Xray 整合設定生成器幫助程式腳本
將儲存庫複製到您想要的位置:
最好在主專案中建立一個資料夾。
範例:
助理、src、報告
這將幫助您順利管理導入,不會出現任何問題:
先決條件
開始之前,請確保您的電腦上安裝了以下軟體:
- Node.js
- npm
- k6
用法
如果您的 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中文網其他相關文章!

JavaScript在Web開發中的主要用途包括客戶端交互、表單驗證和異步通信。 1)通過DOM操作實現動態內容更新和用戶交互;2)在用戶提交數據前進行客戶端驗證,提高用戶體驗;3)通過AJAX技術實現與服務器的無刷新通信。

理解JavaScript引擎內部工作原理對開發者重要,因為它能幫助編寫更高效的代碼並理解性能瓶頸和優化策略。 1)引擎的工作流程包括解析、編譯和執行三個階段;2)執行過程中,引擎會進行動態優化,如內聯緩存和隱藏類;3)最佳實踐包括避免全局變量、優化循環、使用const和let,以及避免過度使用閉包。

Python更適合初學者,學習曲線平緩,語法簡潔;JavaScript適合前端開發,學習曲線較陡,語法靈活。 1.Python語法直觀,適用於數據科學和後端開發。 2.JavaScript靈活,廣泛用於前端和服務器端編程。

Python和JavaScript在社區、庫和資源方面的對比各有優劣。 1)Python社區友好,適合初學者,但前端開發資源不如JavaScript豐富。 2)Python在數據科學和機器學習庫方面強大,JavaScript則在前端開發庫和框架上更勝一籌。 3)兩者的學習資源都豐富,但Python適合從官方文檔開始,JavaScript則以MDNWebDocs為佳。選擇應基於項目需求和個人興趣。

從C/C 轉向JavaScript需要適應動態類型、垃圾回收和異步編程等特點。 1)C/C 是靜態類型語言,需手動管理內存,而JavaScript是動態類型,垃圾回收自動處理。 2)C/C 需編譯成機器碼,JavaScript則為解釋型語言。 3)JavaScript引入閉包、原型鍊和Promise等概念,增強了靈活性和異步編程能力。

不同JavaScript引擎在解析和執行JavaScript代碼時,效果會有所不同,因為每個引擎的實現原理和優化策略各有差異。 1.詞法分析:將源碼轉換為詞法單元。 2.語法分析:生成抽象語法樹。 3.優化和編譯:通過JIT編譯器生成機器碼。 4.執行:運行機器碼。 V8引擎通過即時編譯和隱藏類優化,SpiderMonkey使用類型推斷系統,導致在相同代碼上的性能表現不同。

JavaScript在現實世界中的應用包括服務器端編程、移動應用開發和物聯網控制:1.通過Node.js實現服務器端編程,適用於高並發請求處理。 2.通過ReactNative進行移動應用開發,支持跨平台部署。 3.通過Johnny-Five庫用於物聯網設備控制,適用於硬件交互。

我使用您的日常技術工具構建了功能性的多租戶SaaS應用程序(一個Edtech應用程序),您可以做同樣的事情。 首先,什麼是多租戶SaaS應用程序? 多租戶SaaS應用程序可讓您從唱歌中為多個客戶提供服務


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

Atom編輯器mac版下載
最受歡迎的的開源編輯器

MantisBT
Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用