أظهرت عملية اختبار الجودة (QA) المدعومة بالذكاء الاصطناعي على أداة تصميم قائمة على الويب تقريرًا يقول "جميع الميزات تعمل، ناجح"، ومع ذلك لم تعرض لوحة الرسم (canvas) أي شيء. لم يكن هذا النجاح الزائف خللاً في منطق النموذج، بل كان نتيجة جانبية لكيفية تعامل المتصفح مع التبويبات المخفية وكيفية قياس سكربت الاختبار لـ "صحة الكود" بدلاً من المخرجات البصرية.
لماذا قد تغفل وكلاء اختبار الجودة (QA) المدعومون بالذكاء الاصطناعي عن لوحة الرسم الفارغة
يقوم هؤلاء الوكلاء بتنفيذ JavaScript، والتقاط لقطات شاشة، وترك النموذج يستنتج ما إذا كانت الميزة قد عملت بشكل صحيح. ومن الناحية العملية، هناك نقطتا عمى تقنيتان تؤديان مرارًا وتكرارًا إلى إصدار نتائج "ناجح" بينما تكون واجهة المستخدم (UI) فارغة في الواقع.
شرح تقييد التبويبات المخفية (Hidden-tab throttling)
غالبًا ما يقوم Chrome MCP بتشغيل الاختبارات في تبويبات الخلفية لإبقاء النافذة الرئيسية حرة للعمل الآخر. عندما تكون حالة رؤية المستند document.visibilityState هي hidden (مخفية)، يقوم المتصفح بتقييد خط أنابيب التصيير (rendering pipeline):
- يستمر JavaScript في العمل، لذا لا تظهر أخطاء وقت التشغيل.
- تتوقف استدعاءات
requestAnimationFrameعن العمل، مما يترك عدد إطارات الرسوم المتحركة عند الصفر. - تعمل المؤقتات بمعدل أقل بكثير؛ فالاختبار الذي كان يتوقع فترات زمنية مدتها 33 مللي ثانية لم يلاحظ سوى أربعة فقط.
يرى وكيل الذكاء الاصطناعي نتائج JS نظيفة ولقطة شاشة، ويفترض أن الرسوم المتحركة قد عملت. ولأن حلقة التصيير لم تنتج بكسلات أبدًا، يظل العيب البصري مخفيًا.
حلول لمشكلات التبويبات المخفية
- حافظ على رؤية تبويب الاختبار لأي عملية تحقق من لوحة الرسم (canvas) أو الرسوم المتحركة أو الرسومات.
- قم بتشغيل التفاعلات فقط بعد أن يصبح التبويب في المقدمة.
- أدرج فترة انتظار قصيرة (بضع ثوانٍ) قبل التقاط لقطة الشاشة، لضمان ملء ذاكرة التخزين المؤقت للإطارات (frame buffer).
- إذا كان لابد من استخدام تبويب مخفي، فابدأ التقرير بإخلاء مسؤولية مثل "لم يتم ملاحظة التصيير بصريًا".
صحة الكود مقابل سلوك الميزة
تقيم معظم سكربتات اختبار الجودة بالذكاء الاصطناعي "صحة الكود": فهي تؤكد أن معالجات النقر (click handlers) متصلة، وأنه لم يتم إطلاق استثناءات JavaScript، وأن المكتبات المطلوبة قد تم تحميلها. تثبت هذه الإشارات أن الكود قد عمل، وليس أن واجهة المستخدم قد تغيرت كما هو مقصود. يمكن إنشاء عنصر canvas، واستدعاء روتين الرسم، ومع ذلك لا يتم تصيير أي شيء إذا كانت أوامر الرسم تستهدف ذاكرة تخزين مؤقت بحجم صفر أو أصلاً (asset) فارغًا.
هذا التمييز مهم لأن مسار الكود السليم يمكن أن يخفي عيبًا بصريًا مفقودًا.
إضافة فحوصات السلوك
- تحديد العناصر الديناميكية – فحص المصدر بحثًا عن وسوم canvas، وحقول إدخال الملفات (file-input)، وأزرار التنزيل، وحلقات الرسوم المتحركة.
- تحديد النتائج القابلة للملاحظة – بالنسبة لـ canvas، يتطلب الأمر فحصًا على مستوى البكسل للتأكد من أن الصورة النقطية (bitmap) ليست فارغة. بالنسبة لإدخال الملفات، تحقق من ظهور صورة معاينة. بالنسبة للتنزيل، تأكد من إنشاء ملف في نظام الملفات. بالنسبة للرسوم المتحركة، تحقق من أن خاصية يتم تتبعها تتغير بمرور الوقت.
- تقرير التغطية – أرفق جدولاً بمخرجات اختبار الجودة يسرد كل ميزة، وحالة صحة الكود، ونتيجة التحقق من السلوك. أي شيء يفتقر إلى فحص السلوك يظل "غير مؤكد" بدلاً من "ناجح".
أدى تطبيق هذه القاعدة إلى تقليل النتائج الإيجابية الكاذبة بشكل كبير في مجموعة اختبار المؤلف، كما كشف أيضًا عن عدم تطابق في CSS حيث أعلنت ورقة الأنماط عن لون واحد ولكن البكسل الذي تم تصييره كان مختلفًا.
خطوات عملية لاختبار بصري موثوق
- قم بتشغيل الاختبارات في تبويب مرئي كلما كانت الميزة تتضمن تصييرًا.
- انتظر حتى تستقر واجهة المستخدم؛ غالبًا ما يكفي تأخير ثابت لبضع ثوانٍ، ولكن النهج الأكثر قوة هو الاستعلام (polling) عن canvas غير فارغ باستخدام
getImageData. - افصل تأكيدات صحة الكود عن التأكيدات البصرية في سكربت الاختبار؛ واترك نموذج الذكاء الاصطناعي يقيم كل منهما بشكل مستقل.
- سجل حالة الرؤية وعدادات الإطارات (استدعاءات
requestAnimationFrame) كجزء من مخرجات التشخيص. - وثق أي عمليات تشغيل لا يمكن تجنبها في تبويبات مخفية بتحذيرات صريحة حتى يفهم المراجعون اللاحقون هذا القيد.
ما يجب مراقبته لاحقًا
مع انتشار أدوات اختبار الجودة المدعومة بالذكاء الاصطناعي، يجب على المطورين التعامل معها كمساعدين وليس كحكام. ستظل مقاييس صحة الكود دائمًا وسيطًا غير كامل للسلوك الذي يواجهه المستخدم. الخلاصة بسيطة: يمكن لنموذج الذكاء الاصطناعي فقط الإبلاغ عما يراه. إذا لم يقم المتصفح بالرسم أبدًا لأن التبويب مخفي، أو إذا لم يسأل سكربت الاختبار "هل ظهر شيء على الشاشة؟"، فسيصرح النموذج بنجاح سعيد. إن إضافة متطلب الرؤية وخطوة التحقق من السلوك يحول النتيجة الناجحة البراقة إلى نتيجة جديرة بالثقة.
