تعزيز موثوقية الاختبار وكفاءته في خطوط أنابيب CI / CD
الاختبار غير المستقر هو اختبار ينجح أحيانًا ويفشل أحيانًا دون إجراء أي تغييرات على الكود الذي يتم اختباره. يمكن أن تكون هذه الاختبارات مزعجة بشكل خاص لأنها تقوض موثوقية مجموعة الاختبار.
ضع في اعتبارك أن مسار CI/CD الخاص بك قد تم تكوينه بحيث لا يتم ذلك إلا بعد تمرير الإنشاء، فقط إذا اجتاز الكود الخاص بك مجموعة من حالات الاختبار المحددة مسبقًا.
في الوضع المثالي، يجب أن تكون قد حددت الأولوية لكل حالة اختبار وتفترض أن أحدث قاعدة تعليمات برمجية لاجتياز نسبة معينة من الحالات على الأقل.
ولكن نظرًا لحالات الاختبار غير المستقرة، والتي تستمر في الفشل، لأنها قد تكون قديمة أو تم تغيير حالة الاستخدام، تفشل حالة الاختبار الخاصة بك ويصبح دمج طلب السحب بمثابة كابوس. وبدلاً من خفض نسبة حالات النجاح، ينبغي لنا أن نفكر في تجديد حالات الاختبار تلك.
نتائج اختبار غير متوقعة : تؤدي الاختبارات غير المتوقعة إلى عدم القدرة على التنبؤ من خلال النجاح في بعض الأحيان والفشل في أحيان أخرى، على الرغم من عدم تغيير الكود. هذه العشوائية يمكن أن تجعل من الصعب الثقة في نتائج الاختبار.
تصحيح الأخطاء المعقدة : يمكن أن يكون تتبع السبب الجذري للاختبار غير المستقر أمرًا صعبًا لأن المشكلة قد لا تتكرر باستمرار، مما يجعل من الصعب تحديدها وإصلاحها.
إهدار الوقت والموارد : يمكن للمطورين قضاء قدر كبير من الوقت في إعادة تشغيل الاختبارات، والتحقيق في النتائج الإيجابية الخاطئة، وتصحيح الأخطاء التي لا تتعلق فعليًا بوظيفة الكود.
التأثير على التكامل المستمر (CI) : يمكن أن تؤدي الاختبارات غير المستقرة إلى تعطيل خطوط أنابيب التكامل المستمر، مما يؤدي إلى فشل غير ضروري في البناء وتقليل الكفاءة الإجمالية لعمليات الاختبار الآلي.
الثقة الزائفة أو عدم الثقة: يمكن أن تؤدي الاختبارات غير المستقرة إلى خلق ثقة زائفة عندما تمر بشكل متقطع أو تسبب عدم الثقة في مجموعة الاختبار عندما تفشل بشكل غير متوقع، مما يجعل من الصعب الاعتماد على نتائج الاختبار.
أفضل الممارسات للتخفيف: لتقليل الاختبارات غير المستقرة، يمكن للمطورين الاستهزاء بالتبعيات الخارجية، واستخدام البيانات الحتمية، والتأكد من عزل الاختبارات، وتجنب الاعتماد على التوقيت أو ترتيب التنفيذ.
الاكتشاف الآلي : يمكن أن يساعد تنفيذ الأدوات الآلية التي تكتشف الاختبارات غير المستقرة عن طريق تشغيل الاختبارات عدة مرات ومقارنة النتائج في تحديد ومعالجة التقصير في وقت مبكر من دورة التطوير.
عزل الاختبار : ضمان تشغيل كل اختبار في عزلة تامة، دون الاعتماد على الحالات المشتركة أو العوامل الخارجية، يمكن أن يقلل بشكل كبير من فرص التقشر.
الصيانة المنتظمة : تساعد المراجعة المنتظمة وإعادة هيكلة مجموعة الاختبار لإزالة أو إصلاح الاختبارات غير المستقرة في الحفاظ على سلامة وموثوقية عملية الاختبار بمرور الوقت.
Jenkins، CircleCI، Travis CI : يمكن تكوين أدوات التكامل المستمر/النشر المستمر (CI/CD) مثل هذه لإعادة تشغيل الاختبارات التي تفشل، مما يساعد على تحديد الاختبارات غير المستقرة. غالبًا ما يكون لديهم مكونات إضافية أو دعم مدمج للتعامل مع الاختبارات غير المستقرة.
Docker: تستخدم الشركات Docker لإنشاء بيئات معزولة لإجراء الاختبارات. وهذا يضمن أن تتمتع الاختبارات ببيئة متسقة ونظيفة في كل مرة يتم تنفيذها، مما يقلل من التقشر الناتج عن الاختلافات البيئية.
الأجهزة الافتراضية (VMs): على غرار Docker، يمكن استخدام الأجهزة الافتراضية لضمان إجراء الاختبارات في بيئة خاضعة للتحكم ومعزولة، مما يقلل من التداخل من العمليات أو التبعيات الأخرى.
التحليل الإحصائي باستخدام التعلم الآلي : تستخدم بعض الأنظمة المتقدمة التعلم الآلي لتحليل نتائج الاختبار وتحديد الأنماط التي تشير إلى الاختبارات غير المستقرة. يمكن أن يساعد هذا في تحديد ومعالجة التقشر بشكل استباقي.
سياسات مراجعة التعليمات البرمجية وخطافات التحكم في الإصدار : تنفيذ سياسات مراجعة التعليمات البرمجية الصارمة التي تتضمن عمليات فحص للمصادر المحتملة للتقلب يمكن أن يمنع تقديم الاختبارات غير المستقرة.
إن استخدام خطافات الالتزام المسبق أو آليات التحكم الأخرى في الإصدار لتشغيل الاختبارات بطريقة خاضعة للرقابة قبل دمج التغييرات يمكن أن يؤدي إلى اكتشاف اختبارات غير مستقرة مبكرًا.
إعادة تشغيل الاختبارات الفاشلة : لدى Google سياسة حيث تقوم بإعادة تشغيل الاختبارات التي تفشل في تحديد ما إذا كان الفشل ثابتًا. وهذا يساعد على تحديد الاختبارات غير المستقرة. لديهم أيضًا أدوات داخلية وبنية تحتية لإدارة وتخفيف التقلبات عبر مجموعات الاختبار الشاملة الخاصة بهم.
عزل الاختبار: تؤكد Google على أهمية عزل الاختبار لضمان عدم تداخل الاختبارات مع بعضها البعض، وهو أمر بالغ الأهمية في تقليل التقشر.
تحليلات الاختبار وإعداد التقارير : تستخدم Microsoft تحليلات اختبارية مفصلة وأدوات إعداد التقارير لتتبع الاختبارات غير المستقرة. ومن خلال تحليل نتائج الاختبار مع مرور الوقت، يمكنهم تحديد الأنماط وتحديد الاختبارات غير المستقرة.
عزل الاختبارات غير المستقرة : تقوم Microsoft أحيانًا بعزل الاختبارات غير المستقرة، وفصلها عن مجموعة الاختبار الرئيسية حتى يتم إصلاحها لمنعها من التأثير على نتائج الاختبار الإجمالية.
3. فيسبوك:
التخلص من السموم : قام Facebook بتطوير مكتبة مفتوحة المصدر تسمى Detox لاختبار تطبيقات الهاتف المحمول الخاصة بهم. يضمن التخلص من السموم إجراء الاختبارات في حالة وبيئة متسقة، مما يقلل من التقشر الناتج عن العمليات غير المتزامنة ومشكلات التوقيت الأخرى.
الاختبار المستمر : يدمج فيسبوك الاختبار المستمر في عملية التطوير الخاصة به، وذلك باستخدام أدوات لإعادة تشغيل الاختبارات تلقائيًا وتحديد السلوك غير المستقر في وقت مبكر من دورة التطوير.
4. نيتفليكس:
هندسة الفوضى : تستخدم Netflix ممارسات هندسة الفوضى لاختبار مرونة أنظمتها. ومن خلال إدخال حالات الفشل والاضطرابات عمدًا، يمكنهم تحديد الاختبارات غير المستقرة وتحسين قوة اختباراتهم وأنظمتهم.
إعادة المحاولة التلقائية : تستخدم Netflix آليات إعادة المحاولة التلقائية ضمن مسارات CI/CD الخاصة بها لإعادة تشغيل الاختبارات التي تفشل بشكل متقطع، مما يساعد على تحديد الاختبارات غير المستقرة وإدارتها.
5. لينكدإن:
أدوات إدارة الاختبارات غير المستقرة : قامت LinkedIn بتطوير أدوات مخصصة لإدارة الاختبارات غير المستقرة. تساعد هذه الأدوات في تتبع الاختبارات غير المستقرة، وتوفير رؤية واضحة لحدوثها، وتحديد أولويات حلها.
توحيد بيئة الاختبار : يركز LinkedIn على توحيد بيئات الاختبار لتقليل التباين والتأكد من إجراء الاختبارات في ظل ظروف متسقة، مما يساعد على تخفيف التقلب.
. يمكنك الاتصال على الشبكات الاجتماعية. اشترك في **النشرة الإخبارية للحصول على أحدث المحتوى المنسق.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3