$$\rightleftharpoonup{xx}$$
$$\longleftharp{xx}$$,
$$\longrightharp{xx}$$,
ملخص بنية النظام والنموذج الأولي:
يقدم هذا البحث نظاما نموذجيا محسنا وقابلا للتكيف، PreventativeTestPro، يجسد نهجا استباقيا في هندسة الجودة باستخدام بيانات قابلية الملاحظة ونماذج اللغة الكبيرة (LLMs) لتحسين حل المشكلات الداعمة. يسعى النظام إلى معالجة قضايا تسليم البرمجيات الحديثة من خلال أتمتة اكتشاف الشذوذ، وتحليل الأسباب الجذرية، والتنفيذ الذكي وتطوير حالات الاختبار للتغطية غير المعالجة باستخدام المراقبة الاصطناعية، وبيانات الملاحظة، ودمج الذكاء الاصطناعي المولد. البنية المعمارية معيارية وتتكون من ثلاثة مكونات أساسية: جامع ومحلل بيانات الملاحظة، طبقة الذكاء الاصطناعي المولدة، ومحرك التنسيق والاختبار التنفيذي، كما هو موضح بالتفصيل في الشكل 1.

الشكل 1: المدخلات والمخرجات للنظام المقترح. يتم توفير بيانات قابلية المراقبة، إلى جانب مخرجات المراقب، ومستودع الاختبار، وقواعد الخرائط، كمدخلات إلى جانب أسرة اختبار BHRAMARI، التي تبني منصات اختبار مدفوعة بالذكاء الاصطناعي لتعزيز متانة حالات الاختبار. يقوم النظام المقترح بتوليد أجهزة للشذوذات، والتوصيات التي تولدها الذكاء الاصطناعي، وتنفيذ حالات الاختبار ذات الصلة، والتوثيق والتقارير، بالإضافة إلى تحديد وإنشاء حالات الاختبار المفقودة. يرجى الضغط هنا لعرض نسخة أكبر من هذا الشكل.
يوضح الشكل 2 بنية النهج المقترح. يوضح الشكل مدخلات ومعالجة ومخرجات النظام. كما يوفر تصويرا شاملا للنظام، ثم يترجم إلى شرح لتعزيز فهم السمات الأساسية.

الشكل 2: بنية النظام المقترح مع جامع ومحلل بيانات قابلية الملاحظة، طبقة ذكاء مدعومة بالذكاء الاصطناعي المولد، ومحرك التنسيق والتنفيذ للاختبار. يوضح هذا الشكل البنية الداخلية لنظام PreventativeTestPro، المقسم إلى ثلاث طبقات: طبقة جامع الملاحظة تجمع البيانات من مصادر متعددة، بما في ذلك أحداث المتصفح، السجلات، ملفات HAR، سجلات الخلفية، المقاييس، والتسلسلات. تستخدم طبقة الذكاء الاصطناعي التوليدي هذه البيانات لإجراء تحليل السبب الجذري، وتحديد أولويات الشذوذات، وإنشاء حالات اختبار (واجهة مستخدم، واجهة برمجة تطبيقات (API، دليل) وتوثيق بشكل مستقل من خلال استخدام نماذج اللغة الكبيرة (LLMs). كما تنشئ وحدة بهاراماري أسرة اختبار جديدة. يقوم محرك تنسيق الاختبار وتنفيذ الاختبارات برسم التناقضات مع حالات الاختبار، وينفذ الاختبارات في نفس الوقت، ويقيم النتائج، ويبلغ فرق الهندسة، وأنظمة التذاكر، ولوحات المعلومات لمراقبة الرقابة والحل في الوقت الحقيقي. يرجى الضغط هنا لعرض نسخة أكبر من هذا الشكل.
تعمل وحدة جامع ومحلل بيانات الملاحظة كنظام حسي للمنصة، حيث تجمع باستمرار بيانات التطبيق قيد التقييم على نطاق واسع، مع جوانب متعددة. في حالة مراقبة الواجهة الأمامية، يتم نشر وكلاء المراقبة الاصطناعية لمراقبة أحداث جانب المتصفح، مثل هياكل نموذج كائن المستند (DOM)، وإجراءات المستخدم مثل النقرات، والهوفرز، والمدخلات، وملفات HAR التي تلتقط معلومات الطلبات والاستجابة على الشبكة وواجهة برمجة التطبيقات (API). PreventativeTestPro مدمج أيضا مع OBSERVER لزيادة قدرات المتصفحات. تستهدف المراقبة الخلفية تحليل السجل، حيث تطلب وتعالج معلومات الملاحظة على جانب الخادم، والتي تشمل سجلات التطبيقات، ورسائل الأخطاء، والمعلومات، ورسائل التصحيح، وسجلات تتبع المكدس والاستثناءات، ومقاييس الأداء مثل أوقات الاستجابة، والتتبع باستخدام تقنيات مثل OpenTelemetry أو New Relic. سيعمل النظام مع وكلاء صناعيين يحاكي حركة مرور المستخدمين وتفاعلهم، ويقوم جامعو السجلات بتكثيف البيانات الواردة في الوقت الحقيقي. ثم يتم تطبيع البيانات المجمعة إلى صيغ منظمة وتسليمها إلى وحدات معالجة أخرى لتحليلها بشكل أعمق.
جوهر PreventativeTestPro هو طبقة ذكاء مدعومة بالذكاء الاصطناعي المولد تستخدم نماذج اللغة الكبيرة (LLMs) مثل GPT لقراءة وتحليل بيانات الملاحظة ووضع سياقها وتوليد الردود. تقوم الوحدة بتحليل السبب الجذري: وهي عملية تفسير سجلات وآثار السبب الجذري لشرح الأخطاء التقنية بمصطلحات يمكن فهمها، مثل NullPointerException على سطر معين من الكود والسبب المفترض للمشكلة، مثل متغير غير مهيأ. في توليد حالات الاختبار، يستخدم النظام اختبارات تلقائية يتم إنشاؤها عن طريق تحويل أنماط الاستثناء أو تسلسل الأحداث إلى سكريبتات اختبار قابلة للتنفيذ، مثل اختبارات Selenium أو API، كما ينتج أيضا إجراءات اختبار قابلة للقراءة من قبل الإنسان يمكن لموظفي ضمان الجودة تشغيلها. تطورت اختبارات واجهات برمجة التطبيقات من خلال تحويل سجلات HAR وتتبع التتبع إلى سلسلة من طلبات API مع التأكيدات المتوقعة، وجميع حالات الاختبار المولدة تم تحسينها أكثر من خلال منصات اختبار فعالة من خلال التكامل مع BHRAMARI. يقترح نظام التوصية تحسينات إضافية، وتحسينات في تغطية الاختبارات، وفرص دمج CI/CD، حسب سلوك النظام المحلل. يستخدم محرك الذكاء الاصطناعي بيانات الملاحظة المنظمة عبر هندسة الأوامر وإثراء السياق لتقديم سياق السجل مع قوالب مطالبات تمرر الاستعلامات المنظمة إلى النموذج اللغوي، وأخيرا يولد مخرجات بشكل وظيفي، مثل مقتطفات الكود، مواصفات حالات الاختبار، وتوثيق اللغة الطبيعية.
تتولى وحدة الاختبار لتنسيق وتنفيذ الاختبار أولوية الاختبار، والجدولة، والتنفيذ، مما يتيح التحقق التلقائي بناء على تفاصيل تغطية تغيير الكود، والعلامات، ورسم الخرائط الشذوذ. يتضمن تعيين واختيار الاختبار ربط الشذوذات في الخرائط أو أنماط الأجهزة بحالات اختبار معروفة باستخدام محرك قواعد الخرائط، ثم تشغيل حالات الاختبار وفقا للرسم المعتمد. تسمح ميزات تنفيذ الاختبار المتزامن بإجراء أنواع متعددة من الاختبارات في نفس الوقت، مثل اختبارات وظيفية أو أدائية أو أمنية في بيئات مختلفة وتنسيق استخدام Selenium وJMeter وZAP كأدوات في خطوط أنابيب الأتمتة. يضمن تنفيذ حلقة التغذية الراجعة تسجيل نتائج التنفيذ، وفي حال فشل الاختبار، يتم إبلاغ التغييرات إلى أنظمة الدعم، بما في ذلك Jira وAzure DevOps، لتتبعها وحلها.
الفرضية:
H1 (الكفاءة التشغيلية): يفترض أن دمج بيانات قابلية الرصد والذكاء الاصطناعي المدفوع بالذكاء الاصطناعي سيعزز المقاييس التشغيلية، لا سيما من خلال تقليل متوسط الوقت للحل (H1a)، ومتوسط وقت التحليل (H1b)، ومتوسط الوقت لاكتشاف مشاكل الإنتاج (H1c)، ومتوسط الوقت لنشر الإصلاحات في الإنتاج (H1d). يجب أن تجعل هذه التغييرات من السهل تلبية متطلبات اتفاقية مستوى الخدمة (SLA) (H1e) من خلال تسريع الكشف والتحليل والنشر مع تقليل وقت توقف النظام إلى الحد الأدنى.
H2 (فعالية الاختبار): يعتقد أيضا أن فعالية اختبار البرمجيات ستتحسن مع زيادة تغطية الاختبار (H2a)، وتشغيل حالات الاختبار بالتوازي (H2b)، وتحديد أولويات الاختبارات الذكية (H2c). من المتوقع أيضا أن تساعد التوصيات التي يولدها الذكاء الاصطناعي (H2d) في كل من سير العمل الاختباري والتشغيلي. سيساعد ذلك في اكتشاف الأخطاء بشكل أسرع، وتسريع حلقات التغذية الراجعة، ودعم ممارسات ضمان الجودة الوقائية وطويلة الأمد.
النطاق والجمهور:
يعرض هذا النموذج الأولي التصميم العام للنظام، والفكرة الرئيسية، وكيفية إعداد وتشغيل إطار عمل PreventativeTestPro خطوة بخطوة. كما يشرح بالتفصيل كيفية إعداد أسرة الاختبار/مدخلات العينات المناسبة ويقدم نصائح لحل المشاكل. المحتوى موجه لمهندسي جودة البرمجيات الذين يعرفون أساسيات جافا ويرغبون في تعلم كيفية استخدام الاختبارات الوقائية لجعل البرمجيات أكثر موثوقية وكفاءة.
إعداد البيئة:
يحتوي الملف التكميلي 1 على وصف خطوة بخطوة وبرنامج مطلوب للتواصل مع PreventativeTestPro. يشمل ذلك تعليمات لتثبيت البيئة اللازمة، وكيفية بدء وإيقاف خدمات الأداة، وشرحا واضحا للاستخدام الأساسي للأداة. للحصول على توثيق أكثر تفصيلا، إلى جانب تعليمات حول كيفية استخدام الأدوات المتقدمة، وتعليمات الإعداد، وتفاصيل تنظيمية أخرى، راجع المصادر الرسمية على GitHub المخصصة للمشروع: صفحة الويكي المحددة في موقع https://github.com/sohambpatel/PreventativeTests/wiki وصفحة README الرئيسية في https://github.com/sohambpatel/PreventativeTests?tab=readme-ov-file/readme.
مدخلات نموذجية:
يمكن العثور على ملفات الإدخال النموذجية في مستودع GitHub: https://github.com/sohambpatel/PreventativeTests/tree/main/preventativetestframework/Inputs. يمكن للإطار تشغيل حالات الاختبار والبيانات المحددة مسبقا لهذه الملفات فورا. تستخدم كمدخلات مرجعية لفحص إعداد البيئة والحصول على نفس النتائج الموصوفة في هذا البروتوكول.
مخرجات العينات:
يحتوي مستودع GitHub (https://github.com/sohambpatel/PreventativeTests/tree/main/preventativetestframework/SampleOutputs) على عينات ملموسة من بيانات إخراج إطار الاختبار الوقائي بصيغة خام. من خلال هذه الملفات، يمكن للمستخدمين عرض تصميم وتفاصيل التقارير والمقاييس المولدة مباشرة، مما يوضح النتائج التي حققتها الأداة أثناء تشغيلها. هذا الدليل ذو صلة بمعرفة خط أنابيب البيانات وتأكيد سلوك الإطار المتوقع أثناء إعادة إنشاء العملية التجريبية.
نموذج التنفيذ:
يقدم هذا القسم دليلا مفصلا خطوة بخطوة حول كيفية استخدام إطار عمل PreventativeTestPro. لمساعدة المستخدمين على إعادة إنتاج سير العمل، يتم وصف كل مرحلة بالترتيب. يقدم هذا القسم خطوات التنفيذ بشكل منظم لتسهيل إعادة إنتاج النتائج، والإشارة إلى نقاط التحقق المهمة، وضمان إمكانية استخدام إطار عمل PreventativeTestPro بشكل متسق عبر إعدادات تجريبية أو تشغيلية مختلفة.
في هذه الخطوة، يمكن استخدام واجهة PreventativeTestPro لاختيار أفضل سير عمل للاختبار الوقائي. يوضح الشكل 3 خمسة خيارات، كل منها يمثل خطوة مختلفة في عملية الاختبار: إجراء الاختبارات بالتوازي، إنشاء مجموعة الاختبار من مراقبة المخرجات عن طريق ترتيب أولويات حالات الاختبار الموجودة، إنشاء حالات اختبار يدوية، إنشاء حالات اختبار مؤتمتة، وإيجاد السبب الجذري. عندما يتخذ المستخدم قرارا، يبدأ سير العمل المخصص. بعد ذلك، يمكن إضافة أوضاع إضافية (مثل توليد حالات اختبار مدفوعة بالذكاء الاصطناعي أو تحليل السبب الجذري) في مراحل لاحقة. توفر هذه الواجهة المنظمة جيدا طريقة لإجراء دراسات وقائية يمكن تكرارها وتقسيمها إلى أجزاء أصغر.

الشكل 3: واجهة المستخدم 1 للنظام. يوضح هذا الشكل واجهة المستخدم PreventativeTestPro، التي تتيح الاختيار من بين خمس طرق مختلفة لإجراء الاختبارات الوقائية: 1. الاختبار الوقائي، التنفيذ المتوازي: بدء الاختبار، 2. الاختبار الوقائي، إنهاء مجموعة الاختبارات بناء على مراقبة التطبيقات الاصطناعية، 3. الاختبار الوقائي، توليد حالات اختبار يدوية باستخدام الذكاء الاصطناعي المولد، 4. الاختبار الوقائي، توليد حالات اختبار آلية باستخدام الذكاء الاصطناعي المولد، 5. الاختبار الوقائي، تحليل السبب الجذري باستخدام الذكاء الاصطناعي المولد. يمكن اختيار خيار واحد فقط في كل مرة. التصميم المعياري يسهل إجراء الاختبارات الوقائية ويضيف إنشاء اختبارات مدعومة بالذكاء الاصطناعي وتشخيصات. يرجى الضغط هنا لعرض نسخة أكبر من هذا الشكل.
يوضح الشكل 4 واجهة التنفيذ المتوازي في الإطار. في هذه الخطوة، يدخل المستخدم عنوان URL للتطبيق الذي يريد اختباره والمسار المطلق إلى ملف الخصائص الذي يحتوي على إعدادات التكوين. بعد تعيين المدخلات، يمكن للمستخدم البدء في تشغيل الاختبارات في نفس الوقت بالنقر على زر بدء الاختبار، الذي يراقب الموقع تحت الاختبار ويولد سجلات الأمان والأداء وأجهزة التحكم وجافا سكريبت. يمكن إيقاف التنفيذ المستمر بالنقر على زر إيقاف الاختبار. زر الحصول على التوصيات يتيح للحصول على رؤى مدعومة بالذكاء الاصطناعي من السجلات المسجلة. يضمن هذا التصميم أن تعمل عدة فئات اختبار (وظيفية، أداء، وأمان) في نفس الوقت، مما يسهل العثور على المشكلات بشكل أسرع.

الشكل 4: واجهة المستخدم 2 للنظام. يوضح هذا الشكل وضع التنفيذ المتوازي في إطار PreventativeTestPro. يحدد المستخدم رابط التطبيق المستهدف والمسار إلى ملف خصائص يحتوي على تفاصيل التكوين. تشمل الخيارات اختبار بدء (لتشغيل اختبارات الوظائف والأمان والأداء بالتوازي وتسجيل السجلات)، وإيقاف الاختبار (لإيقاف التنفيذ)، والحصول على توصيات (للحصول على رؤى مدعومة بالذكاء الاصطناعي من السجلات والمقاييس). يرجى الضغط هنا لعرض نسخة أكبر من هذا الشكل.
يوضح الشكل 5 واجهة إنهاء الاختبار القائمة على المراقبة لإطار عمل PreventativeTestPro. في هذه الخطوة، يقوم المستخدم بتعيين مسار ملف الإخراج الخاص بالمراقبة، واستعلام مسار JSON للحصول على عقد أخطاء أو استثناءات، ومسار مستودع الاختبار لحفظ الحالات التي تم إنشاؤها. بعد تعيين المدخلات، يمكن للمستخدم أولا الحصول على أسماء الفئة والطريقة المصاحبة لها ثم فرز حالات الاختبار من سحب الاختبار بناء على الفئة والطريقة التي تم العثور عليها. تظهر هذه الخطوة من الأولويات كيفية استخدام بيانات المراقبة لترتيب حالات الاختبار بشكل فعال.

الشكل 5: واجهة المستخدم 3 للنظام. يوضح هذا الشكل كيفية ترتيب أولويات مجموعة الاختبارات في إطار عمل PreventativeTestPro باستخدام مخرجات المراقبة الاصطناعية. يقوم المستخدم بإدخال مسار ملف إخراج المراقبة، ومسار JSON للحصول على الاستثناءات/الأخطاء، والمسار إلى مستودع الاختبار (غير متصل). يمكن استخدام خيارات Get class/method Name و Get Test Cases لتحويل شذوذات التعيين إلى حالات اختبار يمكن تشغيلها. هذا يضمن تضمين مشاكل وقت التشغيل في عملية الاختبار. يرجى الضغط هنا لعرض نسخة أكبر من هذا الشكل.
يوضح الشكل 6 واجهة توليد حالات الاختبار اليدوية في PreventativeTestPro. في هذه الخطوة، يخبر المستخدم البرنامج بمكان العثور على ملف تتبع المكدس الذي يظهر الشذوذ من خلال توفير المسار المطلق لملف تتبع المكدس والمسار إلى ملف خصائص التكوين. بمجرد تعيين المدخلات، يمكن تشغيل خيار توليد حالات الاختبار، الذي يحول الشذوذ إلى حالات اختبار يدوية منظمة. هذا يضمن أن أخطاء وقت التشغيل التي حدثت سابقا تدرج دائما في عملية الاختبار. يسهل الإطار إنشاء حالات اختبار من خلال أتمتة العملية. هذا يقلل من العمل اليدوي، ويحسن تغطية الاختبارات، ويجعل الاختبارات أكثر موثوقية، ويمنع تكرار نفس المشكلة. هذه الخطوة هي حلقة مهمة جدا بين اكتشاف المشكلات والتأكد من جودة المشاكل قبل حدوثها.

الشكل 6: واجهة المستخدم 3 للنظام. يظهر هذا الشكل واجهة توليد حالات الاختبار في PreventativeTestPro. يحول تتبع تكديس الشذوذات إلى حالات اختبار يدوية في تطوير السلوك المدفوع (BDD) يمكن استخدامها. يعطي المستخدم المسارات إلى ملف تتبع المكدس وملف الخصائص ثم ينقر على "توليد حالات اختبار" ليقوم تلقائيا بإنشاء الحالات التي تطابق الفشل الذي تم العثور عليه. هذا يضمن أن مشاكل وقت التشغيل تتحول دائما إلى اختبارات انحدار يمكن تكرارها. يرجى الضغط هنا لعرض نسخة أكبر من هذا الشكل.
يوضح الشكل 7 واجهة توليد حالات الاختبار الآلي من PreventativeTestPro. في هذه الخطوة، يعطي المستخدم المسار المطلق لملف إخراج JSON الخاص بالملاحظة والمسار إلى ملف تكوين الخاصية. عند الضغط على زر إنشاء حالات اختبار آلية، يعالج النظام بيانات المراقبة ويجعل حالات الاختبار يمكن تشغيلها لتظهر نفس المشاكل التي تم رؤيتها.

الشكل 7: واجهة المستخدم 4 للنظام. يظهر هذا الشكل واجهة توليد حالات الاختبار الآلي ل PreventativeTestPro، التي تقوم بإجراء اختبارات يمكن تنفيذها باستخدام بيانات الملاحظة. يعطي المستخدم المسار إلى ملف الخصائص وملف إخراج JSON الخاص بالملاحظة. ثم ينقرون على "توليد حالات اختبار آلية" لإنشاء سكريبتات يمكن تشغيلها (بصيغتي Selenium وTestNG). يرجى الضغط هنا لعرض نسخة أكبر من هذا الشكل.

الشكل 8: واجهة المستخدم 5 للنظام. يظهر هذا الشكل واجهة أجهزة الشذوذ في PreventativeTestPro لتحليل السبب الجذري (RCA). يعطي المستخدم المسار إلى ملف الخصائص وملف تتبع المكدس، ثم يختار RCA لبدء التحليل المعتمد على الذكاء الاصطناعي. تحول هذه الخطوة الشذوذات المكشوفة إلى رؤى تشخيصية منظمة، مما يضمن إصلاح الأعطال بطريقة يمكن تكرارها وتكون خاصة بالمشكلة. يرجى الضغط هنا لعرض نسخة أكبر من هذا الشكل.
استكشاف المشكلة:
يوضح الجدول 1 أهم نقاط استكشاف الأخطاء التي تتعلق فقط بكود التطبيق. هذه النقاط هي طريقة سريعة لتذكر كيفية إصلاح المشكلات على مستوى الكود التي تظهر عند تشغيل إطار PreventativeTestPro. توفر وثائق المشروع مزيدا من المعلومات وتعليمات خطوة بخطوة للقراء الذين يرغبون في مزيد من المساعدة في حل المشكلات التي تؤثر على وظائف التطبيق بشكل عام. يمكن الحصول على المورد الكامل من الرابط: https://github.com/sohambpatel/PreventativeTests/wiki/How-to-use%3F. يضمن هذا المرجع الإضافي أن المستخدمين لا يصلحون مشاكل البرمجة فحسب، بل يتعلمون أيضا كيفية استكشاف الأخطاء والدوال، مما يمكنهم من استخدام الإطار بشكل أكثر فعالية.
| سلوك الخطأ | السبب الجذري | كيف يمكن إصلاحها؟ |
| الطلب لم يبدأ | مسار جافا غير محدد | في متغير البيئة، اضبط JAVA_HOME |
| فشل الخادم عند بدء التشغيل | المنفذ 8080/9090 قيد الاستخدام (تحديدا أثناء استخدام Docker) | تحديث تعيين منافذ Docker |
| محتوى الذكاء الاصطناعي المولد غير عادل | قد يكون الرمز قد انتهى صلاحيته | قم بتوليد الرمز وتحديث إعدادات config.properties قبل أن توفر ذلك كمدخل |
| نسخة المتصفح التي تولدها الإطار لا تتصل بالشبكة | إما أن خادم ZAP غير يعمل أو أن بيانات اعتماد ZAP غير صحيحة | قم بتشغيل جهاز ZAP قبل تشغيل التطبيق، في حال كان يعمل واستمرت المشكلة، قم بتحديث بيانات اعتماد ZAP في config.properties قبل أن تقدم ذلك كمدخل |
الجدول 1: أخطاء النظام المقترحة الشائعة والإصلاحات السريعة. يوضح هذا الجدول الأخطاء الشائعة الخاصة بالتطبيق، واستكشاف الأخطاء، والحلول السريعة التي يمكن تطبيقها لإصلاح المشكلات.