في هذه المقالة، سأوضح طريقة بسيطة يمكننا من خلالها دمج k6 مع XRAY/Jira.
في وقت ما تم تكليفي بمهمة كتابة اختبار أداء لواجهة برمجة التطبيقات (API) التي كان من المتوقع أن تتعامل مع عدد كبير من الطلبات. لهذا السبب، كنا بحاجة إلى أداة جيدة تكون أسرع في التعلم وأسهل على أي مهندس ضمان الجودة أن يساهم فيها.
بعد أن استخدمت تأثير التحميل في الماضي، كنت على دراية تامة بـ K6. هذه هي الأسباب الرئيسية وراء اختيارنا لـ k6 على أدوات اختبار الأداء الأخرى:
يستخدم جافا سكريبت : كان معظم مطوري ضمان الجودة / المطورين في فريقي على دراية بجافا سكريبت، مما جعلها ليست هناك حاجة لتعلم لغة جديدة
مفتوحة المصدر: هذا يعني أنه لا يلزم دفع أي مبالغ لاستخدام الأداة، والمجتمع نشط
CI/CD : كان دمج k6 مع خطوط أنابيب CI/CD الخاصة بنا أمرًا سهلاً
يمكنني الاستمرار في مزايا اختيار k6، لكن سأكتب تدوينة جديدة للحديث عن ذلك على وجه التحديد.
بعد الانتهاء من إطار الاختبار الخاص بنا، أردنا الحصول على نتائج الاختبار الخاصة بنا على Jira. نظرًا لأننا كنا نستخدم XRAY بالفعل، فقد كنا بحاجة إلى حل لتحويل تقرير k6 JSON إلى تنسيق x-ray. لم أتمكن من الحصول على أي حل يناسب حالتنا.
يحتوي K6 على ميزة أساسية يمكن استخدامها للحصول على جميع المقاييس. هذه الخيارات هي stdout، وXML، وJSON.
لهذا، احتجنا فقط إلى إنشاء برنامج نصي لاستيعاب كائن البيانات من وظيفة HandleSummary.
يوجد أدناه البرنامج النصي لتحويل كائن البيانات من k6 إلى تقرير بسيط بتنسيق XRAY:
k6-XRAY-script
انسخ الريبو إلى الموقع المطلوب:
ويفضل إنشاء مجلد داخل المشروع الرئيسي.
مثال:
مساعد، src، تقرير
سيساعدك هذا على إدارة عمليات الاستيراد بشكل جيد دون مشاكل:
قبل البدء، تأكد من تثبيت ما يلي على جهازك:
إذا تم تنظيم اختبارات k6 الخاصة بك في مجموعات، وكان عنوان كل مجموعة يتوافق مع حالة اختبار على Xray، فيمكنك استخدام البرنامج النصي للمولد لإنشاء ملف JSON متوافق مع Xray.
الصورة أدناه من مستندات Xray توضح حالات الاختبار مع المفاتيح CALC-01 وCALC-02.
في البرنامج النصي لاختبار k6 الخاص بك، يمكنك تسمية عناوين المجموعة مثل CALC-01 وCALC-02. سيبحث البرنامج النصي عن أسماء المجموعات هذه ويعين نتائج الاختبار لحالات الاختبار المعنية على Xray.
group('CALC-01', function() { // test code }); group('CALC-02', function() { // test code });
يقوم البرنامج النصي بإنشاء ملف JSON متوافق مع Xray، ويتم حفظه في نفس الدليل مثل البرنامج النصي.
git clone https://github.com/skingori/k6-json-xray.git
سوف نستخدم وظيفة HandleSummary التي يوفرها k6 وtextSummary من البرنامج النصي generator.js الخاص بنا لإنشاء ملف JSON. تأخذ الدالة HandleSummary كائن بيانات، ونمرره إلى getSummary لتعديله إلى تنسيق متوافق مع Xray.
اقرأ المزيد حول ملخص مقبض k6 هنا
قم بتغيير فتح البرنامج النصي للتنفيذ وأضف الأسطر التالية:
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 على تحويل كائن البيانات إلى التنسيق المتوقع للأشعة السينية وحفظ الإخراج في ملف Summary.json
لماذا نستخدم textSummary؟
للحصول على مخرجات مطبوعة على وحدة التحكم، نحتاج إلى استيراد 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) }; }
ملاحظة: يمكنك حذف السطر stdout: textSummary(data, { indent: " ",enableColors: true })، إذا كنت لا تريد استيراد textSummary
يعمل HandleSummary بشكل افتراضي ويتم استدعاؤه عادةً في نهاية دورة حياة الاختبار.
لتشغيل البرنامج النصي، استخدم الأمر التالي:
k6 run script.js -e TEST_PLAN_KEY="CALC-2345" -e TEST_EXEC_KEY="CALC-0009"
يتم استخدام TEST_PLAN_KEY وTEST_EXEC_KEY لتحديد خطة الاختبار وتنفيذ الاختبار على الأشعة السينية.
اقرأ المزيد حول خطة الاختبار ومفاتيح تنفيذ الاختبار هنا
سينتج عن البرنامج النصي أعلاه التقرير التالي ضمن 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 وJira، مقالة رائعة كتبها Sérgio Freire
وكما هو الحال دائمًا، لا تتردد في التواصل معي!
لينكد إن
بريد إلكتروني
جيثب
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3