"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > كيفية دمج kith Xray/Jira

كيفية دمج kith Xray/Jira

تم النشر بتاريخ 2024-11-08
تصفح:729

في هذه المقالة، سأوضح طريقة بسيطة يمكننا من خلالها دمج k6 مع XRAY/Jira.

في وقت ما تم تكليفي بمهمة كتابة اختبار أداء لواجهة برمجة التطبيقات (API) التي كان من المتوقع أن تتعامل مع عدد كبير من الطلبات. لهذا السبب، كنا بحاجة إلى أداة جيدة تكون أسرع في التعلم وأسهل على أي مهندس ضمان الجودة أن يساهم فيها.
بعد أن استخدمت تأثير التحميل في الماضي، كنت على دراية تامة بـ K6. هذه هي الأسباب الرئيسية وراء اختيارنا لـ k6 على أدوات اختبار الأداء الأخرى:

  • يستخدم جافا سكريبت : كان معظم مطوري ضمان الجودة / المطورين في فريقي على دراية بجافا سكريبت، مما جعلها ليست هناك حاجة لتعلم لغة جديدة

  • مفتوحة المصدر: هذا يعني أنه لا يلزم دفع أي مبالغ لاستخدام الأداة، والمجتمع نشط

  • CI/CD : كان دمج k6 مع خطوط أنابيب CI/CD الخاصة بنا أمرًا سهلاً

يمكنني الاستمرار في مزايا اختيار k6، لكن سأكتب تدوينة جديدة للحديث عن ذلك على وجه التحديد.

بعد الانتهاء من إطار الاختبار الخاص بنا، أردنا الحصول على نتائج الاختبار الخاصة بنا على Jira. نظرًا لأننا كنا نستخدم XRAY بالفعل، فقد كنا بحاجة إلى حل لتحويل تقرير k6 JSON إلى تنسيق x-ray. لم أتمكن من الحصول على أي حل يناسب حالتنا.

ملخص مقبض K6()

يحتوي K6 على ميزة أساسية يمكن استخدامها للحصول على جميع المقاييس. هذه الخيارات هي stdout، وXML، وJSON.

لهذا، احتجنا فقط إلى إنشاء برنامج نصي لاستيعاب كائن البيانات من وظيفة HandleSummary.

يوجد أدناه البرنامج النصي لتحويل كائن البيانات من k6 إلى تقرير بسيط بتنسيق XRAY:

k6-XRAY-script

كيفية إعداد البرنامج النصي المساعد للمولد لتكامل k6 وXray

انسخ الريبو إلى الموقع المطلوب:
ويفضل إنشاء مجلد داخل المشروع الرئيسي.

مثال:
مساعد، src، تقرير

سيساعدك هذا على إدارة عمليات الاستيراد بشكل جيد دون مشاكل:

المتطلبات الأساسية

قبل البدء، تأكد من تثبيت ما يلي على جهازك:

  • Node.js
  • npm
  • ك6

الاستخدام

إذا تم تنظيم اختبارات k6 الخاصة بك في مجموعات، وكان عنوان كل مجموعة يتوافق مع حالة اختبار على Xray، فيمكنك استخدام البرنامج النصي للمولد لإنشاء ملف JSON متوافق مع Xray.

مثال

الصورة أدناه من مستندات 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
});

الإخراج

يقوم البرنامج النصي بإنشاء ملف 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

وكما هو الحال دائمًا، لا تتردد في التواصل معي!

لينكد إن
بريد إلكتروني
جيثب

بيان الافراج تم إعادة نشر هذه المقالة على: https://dev.to/skingori/how-to-integrate-k6-with-xrayjira-5g1g?1 إذا كان هناك أي انتهاك، يرجى الاتصال بـ [email protected] لحذفه
أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3