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

مخاطر الثقة الزائفة وجودة الاختبار واختبار الطفرات: اختبارات الاختبار

المكاسب:

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

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

المعيار الذهبي لقياس جودة الاختبار: اختبار الطفرة

أقوى طريقة لفهم ما إذا كان الاختبار يحمي بالفعل أم لا هو اختبار الطفرات (اختبار الطفرات - تقنية تنتج تشوهات/طفرات صغيرة متعمدة في الكود المصدري وتقيس ما إذا كانت الاختبارات تكتشف هذه التشوهات). المنطق بسيط: إذا قمت بكسر الكود عمدًا (تحويل + إلى -، وa > إلى >=، وصحيح إلى خطأ)، فيجب أن تكتشف مجموعة الاختبار الجيدة هذا الفساد وتتحول إلى اللون الأحمر. إذا لم يحدث ذلك، فإن هذا التعطيل هو طفرة ناجية - لذا فإن اختباراتك لا تحافظ فعليًا على هذا السلوك.

درجة الطفرة = الطفرة المقتولة / الطفرة الكلية. قد تحصل الحزمة التي تحتوي على تغطية خطية بنسبة 90% على درجة طفرة تبلغ 40%؛ يشير هذا إلى أن الخطوط تعمل ولكن لم يتم التحقق من السلوك. تعد درجة الطفرة مقياسًا أكثر صدقًا للجودة من النسبة المئوية للتغطية.

نصيحة: توجد أدوات تغيير تلقائية (PIT/Pitest لـ Java، Stryker لـ JavaScript/TypeScript، Stryker.NET لـ .NET، mutmut لـ Python). تقوم هذه الخلايا تلقائيًا بتوليد واختبار مئات الطفرات. إذا لم يكن لديك أداة، فحتى طريقة "كسر اختبار الكود" اليدوية لا تقدر بثمن بالنسبة للوظائف المهمة.

الوجوه الثلاثة للثقة الزائفة وترياقها

نموذج الثقة الزائفة

أعراض

ترياق

اختبار دون تأكيد

الكود يعمل، لم يتم التحقق من صحة أي شيء

التأكيد الحقيقي في كل اختبار؛ اختبار مع الطفرة

اختبار التأكيد الذاتي

المتوقع = إخراج التعليمات البرمجية

حساب القيمة المتوقعة بشكل مستقل

تأكيد تافهة

"ليست فارغة"، "تم إرجاع 200"

التحقق من صحة قاعدة العمل/النتيجة الفعلية

مغالطة عالية النطاق

90% خطوط، حماية منخفضة

انظر إلى درجة الطفرة

التسامح اختبار هش

"عالقة مرة أخرى، تمر"

السبب الجذري + الاختبار الحتمي

استخدام الذكاء الاصطناعي باعتباره "فريقًا أحمر"

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

تحذير: لا تسأل الذكاء الاصطناعي "هل جودة الاختبار الخاصة بي جيدة؟" وخذ الإجابة "نعم، عظيم" كتأكيد. يميل الذكاء الاصطناعي إلى أن يكون لطيفًا. وبدلاً من ذلك، قم بتحدي الذكاء الاصطناعي في مهمة محددة: "إنتاج خطأ يجتاز هذه الاختبارات". إذا تمكنت من إنتاجه، فإن اختباراتك تكون عمياء عن هذا الخطأ.

الطفرات المكافئة وحدود النتيجة

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

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

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

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

ضعيف: "هل اختباراتي كافية؟"
قوي: "العمل كفريق أحمر لهذه الوظيفة ومجموعة الاختبار. (1) أنشئ 8 طفرات في الكود يمكن قتلها (استبدال عامل التشغيل، إزاحة الحدود، انعكاس الحالة، استبدال قيمة الإرجاع). (2) لكل طفرة، حدد أي من الاختبارات الموجودة سوف يلتقطها وأيها لن يلتقطها. (3) لكل طفرة تبقى على قيد الحياة، اكتب اختبارًا جديدًا سيقتلها. (4) أظهر أيضًا ما إذا كان بإمكانك إنتاج مثال رمز يجتاز كل هذه الاختبارات ولكنه ينتهك العمل القاعدة + اختبارات الكود: [لصق]"

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

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

1) التحكم اليدوي في الطفرة:

قم بإنشاء 8 طفرات كبيرة (اضطرابات متعمدة طفيفة) لهذا الرمز: استبدال المشغل الحسابي، حد المقارنة (> vs >=)، الانعكاس المنطقي، الإرجاع/الاستبدال الثابت، تخطي الشرط. بالنسبة لكل طفرة، توقع أي من الاختبارات المتاحة سوف يلتقطها أم لا. اختبارات الكود +: [لصق]

2) قتل الطفرة الباقية:

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

3) الفريق الأحمر – اختبار الدم:

هل يمكنك كتابة رمز يجتاز جميع الاختبارات التالية، ولكنه ينتهك قاعدة العمل التالية: [قاعدة العمل]. وإذا كان الأمر كذلك، فما هي الثغرة الموجودة في هذه الاختبارات التي تسمح بذلك؟ أضف الاختبار الذي سيغلق هذه الثغرة. الاختبارات: [لصق]

4) اختبار فحص الجودة:

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

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

الحالة 1 - التغطية 92%، درجة الطفرة 38%. اعتمد فريق واحد على التغطية العالية. عندما تم إجراء اختبار الطفرات باستخدام سترايكر، كانت النتيجة 38%: معظم الطفرات المنتجة نجت. وكان هذا دليلاً على أن الاختبارات لم تكن تقوم بتشغيل الخطوط والتحقق من السلوك. استثمر الفريق ثلاثة أسابيع في اختبار الجودة؛ ارتفعت درجة الطفرة إلى 81%، وتم اكتشاف خطأين حسابيين حقيقيين من خلال هذه الاختبارات المعززة في الإصدار التالي.

الحالة 2 - خدع الذكاء الاصطناعي الاختبار. باستخدام قالب "الفريق الأحمر"، طلب أحد الخبراء من الذكاء الاصطناعي رمزًا اجتاز الاختبارات الحالية ولكنه انتهك قاعدة الخصم. كتب الذكاء الاصطناعي رمزًا يُرجع دائمًا خصمًا قدره صفر - وظلت جميع الاختبارات باللون الأخضر لأنه لم تكن هناك اختبارات تتحقق من قيمة الخصم الفعلية. تمت رؤية فجوة، وتم إضافة تأكيدات حقيقية.

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

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

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

في ملخص

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

مهمة التطبيق

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

قائمة مرجعية

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