Table of Contents

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

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

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

فهم الأجسام المتحركة

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

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

اختبار مزدوج: فهم المصطلحات

(أ) أن يُعتبر جزء من مجموعة أوسع من الاختبارات المزدوجة، وهي عبارة يُنشرها جيرارد ميساروس في كتابه [(FLT:0])

  • Dummies:] Objects that are passed around but never actually used, typically to satisfy parameter lists.
  • Stubs:] Objects that provide predefined responses to method calls, used to control indirect inputs of the unit under test.
  • Spies:] Real objects that also record information about how they were called, enabling verification of interactions.
  • Mocks:] Objects that are preprogrammed with expectations about which methods will be called and with what arguments, and that verify those expectations automatically.
  • Fakes:] Objects that have working implementations but take some shortcut that makes them unsuitable for production, such as an in-memory database.

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

مشكلة الأقاليم في النظم المعقدة

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

  • Unavailability:] hardware may be scarce, expensive, or still in development when software testing begins.
  • Non-determinism:] Real-world inputs vary due to environmental factors, timing, and noise, making tests unreliable.
  • Safety concerns:] Testing error handling code may require inducing dangerous states, such as motor overcurrent or communication timeouts.
  • Slow execution:] Integration with equipment or network endpoints can make tests orders of magnitude slower than pure unit tests.
  • Setup complexity:] Configuring real dependencies often requires specialized knowledge and physical access.

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

الأهمية الاستراتيجية لأجسام موك في الهندسة المعقدة

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

عزل الوصلات بين الوجوه

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

بروتوكولات الاتصال الاختبارية

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

تبسيط سيناريوهات الفشل بأمان

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

التنمية الموازية والتقدير المبكر

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

فوائد استخدام الأجسام المتحركة

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

العزل والتركيز

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

سرعة التنفيذ

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

التكرار والتصميم

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

خفض التكاليف

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

تغطية الاختبارات المتعلقة بقضايا إدج

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

تنفيذ أهداف المحركات في الممارسة

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

الأطر والأدوات

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

التصميم لأغراض التخزين

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

مثال: مهاجمة سائق جهاز استشعار

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

التحقق من التفاعلات

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

التحديات وأفضل الممارسات

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

تجنب التجاوز في التعبئة

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

إبقاء منافسات مواك

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

تجمع بين المراكب والأجسام الحقيقية

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

الحفاظ على المراكب كنظام

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

اختبار السلوك، لا التنفيذ

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

استراتيجيات التحديث المتقدمة للنظم الهندسية

ونظراً لأن الأفرقة الهندسية تنضج في استخدامها لأجسام الركاز، فإنها كثيراً ما تعتمد استراتيجيات أكثر تقدماً للتصدي للتحديات المحددة.

المراكب والجوازات الجزئية

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

السفن والعائدات الرسمية

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

مصانع المراكب الموازية

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

التكامل مع اختبارات البرمجيات الصلبة

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

خاتمة

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

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

لمزيد من القراءة، انظر مقال مارتن فاولر الكلاسيكي على Mocks Are't Stubs ] لإجراء مناقشة تفصيلية لمضاعفات الاختبار، والرسم ] Mockito documentation لتوجيه التنفيذ العملي، و أدوات تقنية مدمجة