الحلقة 2: أداء فاسيلي في ميونخ (أيار/مايو 2019)
الحلقات السابقة
تشكّل الاختبارات غير الثابتة مشكلة شائعة في Chrome. هم تؤثر في إنتاجية المطورين الآخرين، وتتعطل بمرور الوقت. يؤدي إيقاف الاختبارات إلى انخفاض تغطية الاختبارات.
مرحلة الفرز
مالكو الأدلة مسؤولون عن إصلاح اختباراتهم غير المستقرة. إذا تلقيت خطأً بشأن اختبار غير مستقر، فخصص بضع دقائق التعليق على الخطأ الذي حدث على الخطأ. إذا كان لديك اختبار غير مستقر من غير الواضح ما حدث. يُرجى محاولة إعادة تفعيل الاختبار ببساطة. أعِد ضبط الخطأ في أقرب وقت ممكن إذا كانت هناك مشكلة واضحة في مكوّن آخر. وينبغي أن يكون لدى مالكي هذا المكون حكم أفضل بشأن الإخفاق،
مرحلة تصحيح الأخطاء
يمكن الاستفادة من عدد من علامات سطر الأوامر مع
وإصلاح الاختبارات غير المستقرة. على سبيل المثال: --enable-pixel-output-in-tests
سيعرض واجهة المستخدم الفعلية للمتصفّح.
توفُّر أدوات احتياطية إذا اختفى برنامج تصحيح الأخطاء من التقشرات. من المهم
يمكن أن يكون الاختبار غير مستقر، تحت برنامج تصحيح الأخطاء. في هذه الحالة، قم بتسجيل
العبارات أو base::debug::StackTrace
مفيدة.
يُرجى مراعاة الأسباب الشائعة لتعذُّر إكمال EXPECT__*
إلى جانب الأخطاء في مرحلة الإنتاج.
الرمز:
- التوقعات غير صحيحة (على سبيل المثال، تعني الصفحة الآمنة HTTPS، ويمكن أن تكون مضيفًا محليًا بدلاً من ذلك).
- أحوال السباق بسبب عدم انتظار الفعالية المناسبة
[لا تختبِر التنفيذ][not-implementation] بل السلوك.
// It takes 2 round trips between the UI and the background thread to complete.
SyncWithTheStore();
SyncWithTheStore();
CheckTheStore();
وقد تتغير رحلتا ذهاب وعودة إلى ثلاث جولات في المستقبل، مما يجعل الاختبار غير مستقر. في المقابل، تنطبق حالة المتجر فقط. بدلاً من ذلك، يمكنك استخدام مراقب المتجر.
يجب توخّي الحذر من الأنماط الشائعة مثل ما يلي:
Submit TestPasswordForm(); // Wait until things settle down. RunLoop().RunUntilIdle(); CheckCredentialPromptVisible();
إن مقتطف مثل ما ورد أعلاه من اختبار المتصفح غير صحيح إلى حد كبير. هناك العديد من الأحداث التي يجب أن تقع في عمليات قبل ظهور بعض واجهات المستخدم.
في ما يلي الحلول الصحيحة:
SubmitTestPasswordForm(); WaitUntilCredentialPromptVisible();
إن الإصلاح أعلاه صحيح بافتراض أن
لا يتحقّق WaitUntilCredentialPromptVisible()
من واجهة المستخدم.
يجب ألا تعتمد اختبارات المتصفّح على أحداث واجهة المستخدم الخارجية، مثل "فقدان التركيز".
أو "أصبحت النافذة في المقدّمة". تخيل تنفيذًا يكون فيه الطلب
تظهر فقط عندما تكون نافذة المتصفح نشطة. وهذا التنفيذ
ستكون صحيحة؛ إلا أن البحث عن النافذة الفعلية يجعل الاختبار غير مستقر.
مرحلة ما بعد الإصلاح
بعد إصلاح الاختبار، يمكنك تشغيله مئات المرات محليًا. راقب بوابة المرونة: