أنماط CI / CD والأنماط المضادة. الجزء 3

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

1.3.5.1 عيوب الاختبار الشامل

"أي ميزة للتواصل مع هذا النظام تحجبها الحاجة إلى القضاء على اللاحتمية" ، مارتن فاولر.

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



غالبًا ما يبدو الاختبار الشامل جذابًا بسبب الفوائد الشخصية للاختبارات الشاملة:

  1. يعمل الاختبار الشامل على زيادة نظام اختبارات التحمل إلى الحد الأقصى ، مما يعني درجة عالية من تغطية الاختبار ؛
  2. يستخدم الاختبار الشامل النظام نفسه كعميل اختبار ، مما يعني انخفاض تكاليف البنية الأساسية للاختبار.

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

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

حذر مارتن فاولر سابقًا من أن " الاختبارات غير الحتمية يمكن أن تدمر تمامًا قيمة مجموعة الانحدار الآلي " ، وتؤكد دورات ستيفن كوفي للتحكم والتأثير ودورات الاهتمام على عدد عوامل الاختبار التمريضية التي تعقد البحث وحل اللاحتمية. إذا كانت هناك فرق مختلفة في مؤسسة Companies R Us نفسها مملوكة لخدمة الشركة ومنتجاتها ، فسوف يتحكم فريق حسابات الشركة في خدمتهم في اختبار شامل ، ولكن هذا سيؤثر فقط على خدمة المدفوعات.

يعتمد الوقت اللازم لتحسين الاختبار الشامل على موقع التغيير في SUT. يحتاج فريق حسابات الشركة إلى تحليل وتنفيذ هذا التغيير في الخدمة في وقت قصير. ومع ذلك ، لا يمكن أن يكون الوقت اللازم لإجراء تغييرات على خدمة المدفوعات أقل من الوقت اللازم لفريق حسابات الشركة لإقناع فريق خدمة المدفوعات بالوصول إلى العمل.

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

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

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

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

1.3.5.2 فوائد الاختبار المستمر

"ضع حدا للإدمان على السيطرة الجماعية. تخلص من الحاجة إلى التحقق الشامل من خلال جعل جزء الجودة في البداية من المنتج ". دبليو إدواردز ديمينج .

يتطلب التسليم المستمر اختبارًا مستمرًا - وهي استراتيجية يستكمل فيها عدد كبير من اختبارات الوحدة الآلية واختبارات القبول بعدد صغير من الاختبارات البحثية الآلية المركزة من طرف إلى طرف. يمكن تصور نسبة الاختبارات في الاختبار المستمر في شكل هرم - وهو نوع من نقيض الآيس كريم القرن.

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

  1. يقلل اختبار الوحدة أو القبول من SUT ، مما يعني درجة منخفضة من تغطية الاختبار ؛
  2. يستخدم اختبار الوحدة أو القبول عميل الاختبار الخاص به ، مما يعني ارتفاع تكاليف البنية الأساسية للاختبار.

يستخدم الكثير من الأشخاص الاختبار الشامل من الافتراض الخاطئ للتغطية الاختبارية العالية وتكاليف الدعم المنخفضة ، وما زالوا يعتقدون أن الاختبار المستمر يوفر تغطية اختبار منخفضة ومكلفة لدعمه:

  1. يتحقق اختبار الوحدة من مطابقة تنفيذ الهدف ، كما يتحقق اختبار القبول من مطابقة التطبيق للمتطلبات. لذلك يمكن التحقق من جميع طرق التنفيذ وتفاعلها مع بعضها البعض.
  2. يحد اختبار الوحدة من مقدار SUT إلى مسار تنفيذ واحد ، ويقتصر اختبار القبول على خدمة واحدة. لذلك كلاهما يمكن أن يكون الحد الأدنى من المهلة والنتائج الحتمية.

يمكن إصلاح اختبار القبول غير الحاسم بشكل أسرع بكثير من الاختبار الشامل ، وذلك بفضل المالك الوحيد لجامعة SUT. إذا كانت الشركات R Us مملوكة لخدمة حسابات الشركة ، وكانت المدفوعات R Us مملوكة لخدمة المدفوعات ، فإن اختبار قبول حسابات الشركة سوف يستخدم فقط الخدمات التي يسيطر عليها فريقهم.

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

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

في التسليم المستمر ، من المسلم به أن تحسين وقت الاسترداد المتوسط ​​أكثر أهمية من التحسين لمتوسط ​​الوقت بين الأعطال ، لأنه يتيح للمؤسسة تقليل تأثير عيوب التصنيع وأسهل تحقيقه. يمكن التحكم في تكلفة العيوب لأن الإصدارات القصيرة تقضي فترة تحري الخلل وإصلاحه ، وتتيح "الاختبار المستمر" البنية الأساسية اللازمة لتقليل دورات التغذية المرتدة للإصدارات المتكررة وفقًا للقانون الصغير . يتيح الجمع بين أساليب الاختبار المستمر والتوصيل المستمر مثل Blue Green Releases و Canary Releases للمنظمة أن تنشئ نظامًا موثوقًا يمكنه تحييد الأحداث غير المتوقعة ، ويمكن أن تؤدي الممارسات المتقدمة مثل Dark Launching و Chaos Engineering إلى أنظمة مضادة للهشاشة تستفيد من Black Swans. على سبيل المثال ، إذا اكتشفت Chaos Engineering مشاكل في خدمة المدفوعات ، فيمكن لفريق حسابات الشركة جعل عملية الإطلاق المظلمة لمدفوعات المدفوعات الخاصة به قيد الإنتاج واستخدامها في الحالات غير المتوقعة لفشل مركز بيانات المدفوعات.

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

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

1.3.5.3 من الاختبار الشامل إلى المستمر

"اختبر أقصى ما يمكن لتحقيق أقصى عائد على الاستثمار وأسرع ردود الفعل" جانيت غريغوري وليزا كريسبين .

يُعد الانتقال من الاختبار من النهاية إلى النهاية إلى الاختبار المستمر استثمارًا طويل الأجل استنادًا إلى فكرة أن الاختبارات من النهاية إلى النهاية يمكن أن تكون في أسفل هرم الاختبار ، إذا تم تحديد مجالات مسؤوليتها على النحو التالي:

  • الاتصالات - ما إذا كانت الخدمات يمكن الاتصال ببعضها البعض ؛
  • حوار - ما إذا كانت الخدمات يمكن أن تتواصل مع بعضها البعض ؛
  • السلوك - ما إذا كانت الخدمات يمكن أن تتفاعل مع بعضها البعض.

افترض أن خدمة حسابات الشركة تعتمد على نقطة نهاية Paypoint Paypoint ، التي تقبل هوية الشركة وحجم الدفع ، ثم تصدر رمز تأكيد وعدد الأيام قبل إجراء الدفع. تقوم حسابات شركة Service بإرسال معرّف حقول الطلب وحجم الدفع وتعتمد على حقول الاستجابة.

يمكن اختبار الاتصال بين الخدمات بشكل نموذجي باستخدام مضاعفات الاختبار ، مما سيتيح لخدمة حسابات الشركة اختبار رد فعلها على السلوك المختلف لخدمة الدفعات. ستحل اختبارات وحدة حسابات الشركة محل الموصل بموصل Mock أو Stab للمعالجة الصحيحة للبرامج النصية مثل مهلة الدفع غير المتوقعة.

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

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

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

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

1.3.5.4 الخاتمة

"لن يختبر اختبار النظام جميع الأخطاء فحسب ، بل سيتطلب أيضًا مزيدًا من الوقت والمال - أكثر مما يمكنك توفيره عن طريق تخطي اختبار القبول الفعال" - جيري وينبرج .

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

Source: https://habr.com/ru/post/ar443558/


All Articles