الوحدات
1. مقدمة للذكاء الاصطناعي في اختبار البرمجيات وضمان الجودة: الأدوار والحدود ومخاطر التزييف والتحقق من الصحة 2. سيناريو الاختبار وإنشاء حالة الاختبار: من المتطلبات إلى التحكم الشامل 3. الاختبار الاستكشافي وتوليد أفكار الاختبار: صيد الأخطاء الإبداعي باستخدام الذكاء الاصطناعي 4. أتمتة اختبار واجهة المستخدم: إنشاء كود السيلينيوم والكاتب المسرحي والسرو باستخدام الذكاء الاصطناعي 5. أتمتة اختبار واجهة برمجة التطبيقات: العقد والمخطط والتحقق الشامل من خلال الذكاء الاصطناعي 6. إنشاء اختبار الوحدة وقابلية الاختبار: اختبار قوي باستخدام الذكاء الاصطناعي 7. كتابة تقارير الأخطاء وتحديد الأولويات: سجلات واضحة وقابلة للتكرار باستخدام الذكاء الاصطناعي 8. تحليل تغطية الاختبار والاختبار القائم على المخاطر: الهدف الصحيح باستخدام الذكاء الاصطناعي 9. اختبار الانحدار، وصيانة الاختبار، ومكافحة الاختبارات الهشة 10. مخاطر الثقة الزائفة وجودة الاختبار واختبار الطفرات: اختبارات الاختبار 11. سير العمل الشامل، وتكامل CI/CD، والأخلاقيات والأمن: استخدام الذكاء الاصطناعي بشكل مسؤول
وحدة 9 / 11

اختبار الانحدار، وصيانة الاختبار، ومكافحة الاختبارات الهشة

المكاسب:

  • فهم الغرض من اختبار الانحدار والقدرة على اختيار الاختبارات وإنتاج حالات الانحدار وفقًا للتغيرات في الذكاء الاصطناعي
  • القدرة على تشخيص الأسباب الجذرية للاختبارات الهشة (التوقيت، والتبعية على النظام، والحالة المشتركة، والتبعية الخارجية) وتطبيق الحلول الدائمة دون قمع الأعراض
  • القدرة على الحفاظ على الانضباط في تشغيل الإصدار المسبق للحزمة الكاملة مع الحفاظ على مجموعة الانحدار سريعة ومستقلة وموثوقة من خلال القضاء على الاختبارات المكررة

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

الأسباب الجذرية للاختبارات الهشة

الاختبار الهش هو مشكلة الاختبار الأكثر خبثًا: فهو لا يمكن الاعتماد عليه سواء نجح أو فشل، مما يدفع الفريق إلى عادة "لابد أنه قد تعثر مرة أخرى، قم بإجرائه مرة أخرى" - وهذه العادة سوف تتجاهل يومًا ما خطأً حقيقيًا باعتباره "غير مستقر". الأسباب الجذرية الرئيسية:

  • التوقيت/حالة السباق: يتحقق الاختبار من النتيجة دون انتظار انتهاء العملية. السبب الأكثر شيوعا.
  • تبعية الطلب: تعتمد الاختبارات على البيانات التي يتركها بعضها البعض؛ ينكسر عندما يتغير الطلب.
  • الحالة المشتركة: تستخدم الاختبارات المتعددة نفس بيانات الاختبار/المستخدم، وهي متعارضة.
  • التبعية الخارجية: الشبكة الحقيقية، خدمة الطرف الثالث، وقت النظام، القيمة العشوائية.
  • اختلاف البيئة: يتحول إلى الوضع المحلي، ويبقى في CI (بيئة التكامل المستمر).
تحذير: غالبًا ما يؤدي اجتياز اختبار هش من خلال "إعادة المحاولة عدة مرات" إلى إخفاء خطأ حقيقي في التزامن. إعادة المحاولة هي أداة تشخيصية وليست علاجية. ابحث عن السبب الجذري أولاً؛ استخدم إعادة المحاولة فقط كحل أخير في حالة عدم الاستقرار الخارجي الحقيقي والموثق.

صيانة الاختبار: الحفاظ على صحة العبوة

جناح الانحدار يشبه الحديقة؛ إذا لم يتم الاعتناء بها، سوف تتولى الأعشاب الضارة. يساعد الذكاء الاصطناعي في ثلاث مهام صيانة:

1. تنظيف اختبار مكرر/غير ضروري. ومع مرور الوقت، يتراكم عدد كبير من الحالات التي تختبر نفس الشيء. يقترح الذكاء الاصطناعي تجميع ودمج الاختبارات المماثلة.

2. تشخيص اختبار الهشاشة. أنت تعطي الذكاء الاصطناعي رمز الاختبار ونمط عدم الاستقرار؛ يقترح الأسباب الجذرية المحتملة والحل الدائم.

3. اختبار الاختيار/تحديد الأولويات. يعد تشغيل الحزمة بأكملها مع كل تغيير أمرًا مكلفًا. من خلال تحليل تأثير الاختبار (تحديد الاختبارات ذات الصلة فقط بناءً على الكود المتغير)، يوصي الذكاء الاصطناعي بالاختبارات التي يجب تشغيلها أولاً. ومع ذلك، فإن حزمة الإصدار المسبق الكاملة أمر لا بد منه.

الحجر الصحي: إدارة الاختبارات الهشة بشكل صحيح

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

نصيحة: أضف "مالك" و"تاريخ آخر مراجعة" إلى كل سجل وحدة عزل. الحجر الصحي المهجور يتحول إلى مكب نفايات دائم؛ الاختبارات الهشة تعيش هناك إلى الأبد لأنه لا أحد يهتم.

جدول استراتيجية الانحدار

الحالة

استراتيجية

دور الذكاء الاصطناعي

تصحيح طفيف

المنطقة المتضررة + اختبار الدخان

حدد الاختبارات ذات الصلة

ميزة جديدة

الوحدة ذات الصلة + التكامل

اقتراح حالة الانحدار الجديدة

إعادة بناء كبيرة

حزمة الانحدار الكاملة

تحليل فجوة التغطية

الإصدار المسبق

الباقة الكاملة + الاستكشاف

تقدير الأولوية والمدة

إصلاح مباشر عاجل

ركز + المسار الحرج

الحد الأدنى لمجموعة الاختبار الآمن

موجه ضعيف / موجه قوي

ضعيف: "هذا الاختبار يفشل أحيانًا، قم بإصلاحه."
Strong: "فشل هذا الاختبار في 3 من أصل 10 عمليات تشغيل، ولم يتغير الكود. تشخيص السبب الجذري لعدم الاستقرار: يمكن أن يكون التوقيت/السباق، أو تبعية الطلب، أو الحالة المشتركة، أو التبعية الخارجية، أو اختلاف البيئة. أظهر السطر في الاختبار الذي يشير إلى كل سبب محتمل. اقترح حلاً دائمًا؛ لا تقترح حلاً لقمع الأعراض مثل "إضافة إعادة المحاولة" - إذا كان لا مفر منه، اكتب السبب بوضوح. الاختبار: [كود]. مسار الخطأ: [سجل]."

موجه قوي؛ يوجه التشخيص إلى السبب الجذري ويحظر صراحة قمع الأعراض.

أربعة قوالب قابلة للنسخ

1) تشخيص اختبار الهشاشة:

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

2) اقتراح حالة الانحدار:

تم إجراء التغيير التالي: [ملخص التغيير/العلاقات العامة]. قم بإدراج السلوكيات الحالية التي سيؤدي هذا التغيير إلى كسرها واقتراح حالة اختبار الانحدار لكل منها. تسليط الضوء بشكل خاص على مجالات الآثار الجانبية والتبعيات المشتركة.

3) تنظيف الاختبار المكرر:

تحقق من مجموعة الاختبار أدناه. تجميع الحالات المكررة أو المتداخلة التي تختبر نفس السلوك؛ اقترح أي منها يجب أن أحتفظ به وأي منها يجب أن أدمجه في كل مجموعة. تحذير إذا كان هناك خطر فقدان التغطية. الاختبارات: [قائمة/رمز]

4) اختيار تأثير الاختبار:

تم تغيير الملفات/الوظائف التالية: [list]. من مجموعة الاختبار الموجودة، حدد وقم بتبرير الاختبارات التي أحتاج إلى تشغيلها أولاً (تلك الاختبارات المرتبطة بشكل مباشر/غير مباشر بالرمز الذي تم تغييره). ملحوظة: ذكرني أنني سأستمر في تشغيل مجموعة الإصدار التجريبي الكاملة.

ثلاث حالات صغيرة

الحالة 1 - خطأ حقيقي تم التستر عليه بواسطة "إعادة المحاولة". أضاف أحد الفرق 3 محاولات لاختبار الدفع المتبقي من حين لآخر؛ كان الاختبار دائمًا "ناجحًا" الآن. وجد تطبيق "اختبار التشخيص الهش" أن عدم الاستقرار جاء من حالة سباق حقيقية: عند التحميل العالي، تمت معالجة تأكيد الدفع في بعض الأحيان بشكل مزدوج. لعدة أشهر، قامت ميزة "إعادة المحاولة" بتغطية خطأ كان من الممكن أن يؤدي إلى خسارة فعلية للأموال. تم إصلاح السبب الجذري، أعد محاولة الإزالة.

الحالة 2 - تقلصت الحزمة، وزيادة السرعة. استغرقت مجموعة الانحدار المكونة من 1400 اختبار 55 دقيقة. مع "تنظيف الاختبار المكرر"، تبين أن 380 اختبارًا مكررة أو مغطاة؛ اندمجت. تم تخفيض الحزمة إلى 900 اختبار، وتم تقليل الوقت إلى 34 دقيقة، ولم يتم تقليل التغطية بشكل ملموس. شجعت ردود الفعل السريعة الفريق على إجراء الاختبار بشكل متكرر.

الحالة 3 - تبعية الطلب. سيتم دائمًا اجتياز الاختبار محليًا، ولكنه قد يفشل بشكل عشوائي في CI. أظهرت تشخيصات الذكاء الاصطناعي أن الاختبار يعتمد على المستخدم الذي تم إنشاؤه بواسطة اختبار آخر، وقد تعطل في CI لأن الاختبارات أجريت بترتيب متوازي/مختلف. تم إجراء كل اختبار لتأسيس البيانات الخاصة به؛ انتهى التردد.

الأخطاء الشائعة

  • إسكات الاختبار الهش مع إعادة المحاولة. المحاولة مرة أخرى دون البحث عن السبب الجذري؛ التستر على الخطأ الحقيقي
  • ثقافة "عالقة مرة أخرى". تجاهل النتائج الحمراء بشكل روتيني؛ ذات يوم، تخطي الخطأ الحقيقي.
  • عدم تقليم الحزمة على الإطلاق. السماح للاختبارات المكررة بالتراكم وإبطاء الحزمة.
  • التبعية بين الاختبارات. تعتمد الاختبارات على الحالة/التسلسل المشترك؛ مصدر عدم اليقين.
  • اختبار الجزء الذي تم تغييره فقط وتخطي الحزمة الكاملة. اختصار ما قبل الإصدار؛ الآثار الجانبية الخفية الهروب.
  • الاعتماد على التبعية الخارجية. تعتمد الاختبارات على القيمة الفعلية للشبكة/الساعة/العشوائية؛ غير مستقر بشكل طبيعي.

في ملخص

يلتقط اختبار الانحدار التغييرات التي تؤدي إلى كسر وظائف العمل السابقة؛ ولكن مع نمو الطرود، يؤدي البطء والاختبارات الهشة إلى تآكل الثقة. عادةً ما تكون الأسباب الجذرية للاختبارات الهشة هي التوقيت، وتبعية الطلب، والحالة المشتركة، والتبعيات الخارجية. يعد الذكاء الاصطناعي أداة مساعدة قوية في التشخيص والتنظيف واختيار الاختبار؛ لكن قمع التردد من خلال إعادة المحاولة يخفي أخطاء حقيقية. ابحث عن السبب الجذري، واجعل الاختبارات مستقلة وحتمية، وقم بتهذيب الحزمة بانتظام، وتشغيل الحزمة الكاملة قبل الإصدار.

مهمة التطبيق

اختر اختبارًا من مشروعك الخاص الذي تعرف أنه هش (أو يبدو غير مستقر). استخرج مرشحي السبب الجذري وتحقق من خطوط الأدلة في الاختبار باستخدام قالب "تشخيص الاختبار الهش". حدد السبب الجذري وقم بتنفيذ حل دائم دون إعادة المحاولة. ثم حدد 10 اختبارات من الحزمة الخاصة بك وابحث عن الاختبارات التي يمكن دمجها مع "تنظيف الاختبار المكرر". قم بالإبلاغ عن عدد حالات عدم الاستقرار في الاختبار التي قمت بحلها من السبب الجذري لها وعدد الحالات غير الضرورية التي قمت بإزالتها من المجموعة.

قائمة مرجعية

  • [ ] لقد قمت بتشخيص السبب الجذري لاختبار الهشاشة؛ لم أقم بقمع الأعراض.
  • [ ] اعتبرت إعادة المحاولة بمثابة الملاذ الأخير المبرر، وليس العلاج.
  • [ ] لقد جعلت الاختبارات مستقلة وحتمية (معزولة عن التبعيات الخارجية).
  • [ ] لقد قمت بتقليم الاختبارات المكررة/غير الضرورية من مجموعة الانحدار.
  • [ ] لقد اخترت الاختبار بناءً على التغيير، ولكن قمت بتشغيل الإصدار التجريبي الكامل للحزمة.
  • [ ] لقد أخذت كل إشارة حمراء على محمل الجد، ضد ثقافة "عالق مرة أخرى، مرر".