غرض مقلد
قبل الخوض في التفاصيل، الغرض المقلد هو تقنية تُستعمل في برمجة الكائنات الموجهة، حيث تحاكي الأغراض المقلدة سلوك الأغراض الحقيقية بطرق يمكن التحكم فيها. عادة ما يقوم المبرمجون بإنشاء أغراض مقلدة لإختبار سلوك بعض الأغراض الحقيقية بطريقة مشابهة للغاية. مثلًا في تصميم السيارات، يستعمل المصممون الدمى لإجراء تجارب تحاكي السلوك الديناميكي للإنسان أثناء الاصطدام. وفيما يلي تفاصيل أوسع عن ذلك.
أسباب الاستخدام
وفي السياق ذاته، في فحص الوحدة يمكن للأغراض المقلدة أن تحاكي سلوكًا حقيقيًّا للأغراض الحقيقية (غير المقلدة) ولذلك يعتبر من المفيد استخدامها عوضًا عن الغرض الحقيقي، خاصةً إذا كان الغرض الحقيقي مستحيل التحقيق، أو غير عملي، أو غير قادر على التجاوب عند الفحص. إذا كان الغرض الحقيقي يملك إحدى الصفات السابقة فمن المفيد استخدام الغرض المقلد بدلًا منه.
JSMOCK
علاوةً على ذلك، أثبتت سابقا أنها أفضل طريقة من اجل تطوير البرمجيات من خلال ال (TDD) نصل إلى حالة حيث أن أحد ال METHOD يحتاج إلى التواصل مع صفوف أخرى يعرف توابعها. ومن اجل فحص هذا ال METHOD يجب علينا إنشاء METHOD يقوم بالتعامل معه أولا. على أي حال هذا سيحرف مفهوم ال UNIT TESTING لكننا نملك أدوات مفيدة من اجل السيطرة على هذا النوع من الحالات مثل JMOCK وEASY MOCK والتي تقلد الأغراض وال METHODS التي تتفاعل معها. وبذلك نكون قد استغنينا عن استخدام غرض حقيقي لإنهاء الاختبار على هذا ال METHOD.
كذلك، في البرمجة وحدة الاختبار هي طريقة تأكيد صحة عمل وحدة فردية (INDIVIDUAL UNIT) من الكود ولاختبارها. الوحدة هي اصغر جزء من التطبيق قابل للاختبار في البرمجة الإجرائية الوحدة يمكن أن تكون برنامج قائم بذاته أو تابع أو إجرائية أو..........في حين في البرمجة غرضية التوجه اصغر وحدة ممكنة هي ال METHOD التي يمكن أن تنتمي إلى صف BASE أو SUPER وبمعنى آخر صف مشتق DERIVED أو مجرد ABSTRACT.
تعريف وحدة الاختبار (UNIT TEST)
بشكل مثالي كل حالة اختبار لا تعتمد أبدا على الأخرى.
www.jmock.com
TEST -DRIVEN DEVELOPMENT(TDD):
المصادر
علاوةً على ذلك، هي مكتبة لها كل ميزات الأغراض المقلدة تعمل من اجل JAVA SCRIPT أي تقديم الأدوات الضرورية من اجل اختبارات تفاعلية فعالة. يزودنا JSMOCK بمسجل توقعات ومطابق (MATCHING) هو ذو واجهات بسيطة سهلة التعامل مما يجعل عملية الاختبار سهلة.
أمثلة على الأغراض
- إذا كان الغرض غير قابل للقياس (الزمن – درجة الحرارة)
- إذا كان الغرض حالة صعبة من حيث الإنتاج والإنشاء مثل (خطأ في الشبكة)
- بطيء (COMPLETE DATA BASE قاعدة معطيات كاملة) حيث يجب إنشائها قبل اختبارها
- إذا كان الغرض غير موجود أو قد يغير سلوكه.
مؤثرات العالم الخارجي
تفاصيل تقنية (TECHNICAL DETAILS)
وفي هذا الصدد، SOCKET NETWORK يمكن تقليدها بأغراض مقلدة مما يسمح للمبرمج باستكشاف حالة الغرض الذي يتم فحصه هل تتجاوب مع الطيف الواسع من الحالات الني يمكن أن يكون بها.
لنأخذ بالاعتبار المثال التالي:
ومن جهة أخرى، اختبار خوارزمية معقدة تعتمد على أغراض متعددة بحالة ثابتة يمكن تمثيلها باستخدام أغراض مقلدة بدلا من أغراض حقيقية بغض النظر عن قضايا التعقيد والفوائد المكتسبة من خصائص الفصل هناك فرق في سرعة العملية حيث تطوير جزء حقيقي من برنامج باستخدام TDD يمكن أن يستعمل عدة مئات من الـ UNIT TEST إذا كان الكثير من هذه الاتصالات السابقة يتطلب اتصال مع قاعدة المعطيات أوال WEB SERVICE أو عمليات على الشبكة مما يجعل وحدة الاختبار تتباطأ بسرعة.
علاوةً على ذلك، استخدام الاختبارات المشتقة في عملية التطوير(USE IN TEST –DRIVEN DEVELOPMENT) :
المقلد والمزيف (MOCKS AND FAKES)
وعلى صعيد آخر، تسمح الكثير من إطارات عمل الأغراض المقلدة للمبرمج بتحديد أيهما وبأي ترتيب، والتوابع الأعضاء التي ستدمج بالأغراض المقلدة، والمعاملات التي ستمرر له، إلى جانب القيم التي سيردها. و بذلك سلوك الأغراض المعقدة مثل:
وفي السياق ذاته، عند الانتهاء من عملية الاختبار واستبدال الأغراض المقلدة بأغراض حقيقية وننتهي من اختبار الوحدة ونبدأ بعملية اختبار أخرى للأغراض الحقيقية وهذا ما يدعى باختبار التكامل.
وعلى صعيد آخر، المبرمجين الذين يعملون في توابع TDD (TEST- DRIVEN DEVELOPMENT) يستعملون الأغراض المقلدة في كتابة البرامج. الأغراض المقلدة تحقق متطلبات الواجهات لأغراض حقيقية معقدة وبذلك يمكن للمبرمجين كتابة واختبار مقدار فاعلية التابع في مجال واحد بدون استدعاء معقد لصفوف مشتركة أو ضمنية. مما يعني إمكانية المطورين من التركيز على اختبارات في اختبار سلوك النظام المختبر (تحت الاختبار) بدون القلق على ارتباطه بالآخرين. مثلًا :
وفي هذا السياق، بعض الكتاب يميزون بين الأغراض المزيفة والأغراض المقلدة. فالمزيفة هي الأبسط حيث تحقق الواجهة نفسها للأغراض التي تمثلها. بينما الأغراض المقلدة في هذه الحالة تفعل أكثر بقليل من الأغراض المزيفة حيث تحقيق (IMPLEMENT) توابعها الأعضاء موجودة ضمنها. هذا يعني أن الأغراض المقلدة ومن خلال المفهوم السابق ستقوم بفحص السياق لكل طلب وربما التدقيق في كل ترتيب لطلب التوابع الأعضاء METHODS أو ربما تأدية فحص على المعطيات التي ستمرر في كل استدعاء للتوابع الأعضاء كمعاملات.
الإعدادات المطلوبة (SETTING EXPECTATION)
ومن ناحية أخرى، نظام فرعي مقلد للسماحيات الغرض المقلد يحقق التابع: {IS USER ALLOWED (TASK TASK) :BOOLEAN;}
علاوةً على ذلك، من صف السماحيات الحقيقي نحصل على الكثير من الإيجابيات في حال طبقنا التابع IS ALLOWED:BOOLEAN; و الذي هو غير موجود في الصف الحقيقي مما يمكن كود الاختبار من تسهيل توقع مجموعة الاستخدامات التي سيحصل المستعمل على صلاحية لاستخدامها في الاستدعاء القادم وبذلك جاهزية الاختبار وسلوك باقي النظام في باقي الحالات. مما يمكن المطورين من اختبار سلوك الزبائن من اجل جميع حالات الأخطاء الواقعية مما يمكننا من وضع استجابات للأخطاء التي أصبحت متوقعة. من غير هذا النظام المقلد السهل المرن ستصبح دراسة الحالات المعقدة بحاجة إلى جهد كبير واعتبارات كثيرة.
ومن ناحية أخرى، الأغراض المقلدة تملك نفس واجهات الأغراض التي تقلدها مما يمنع الأغراض التي تستعمل الغرض المقلد من معرفة مع من يتعامل (الحقيقي أو المقلد)
إضافةً إلى ذلك، منبه الساعة سيقوم بالتنبيه خلال زمن معين يتم الحصول عليه من العالم الخارجي، حيث ستنتظر نتيجة فحص الوقت الذي سيدق فيه جرس المنبه للحصول على النتيجة وفي حال استخدام غرض مقلد بدلا من الحقيقي يمكن للمبرمج أن يقدم الوقت إلى وقت التنبيه (الرنين) بغض النظر عن الوقت الحقيقي وذلك لاختبار المنبه بمعزل تام عن المؤثرات الخارجية.
📝 هل في هذه المقالة خطأ؟
إذا وجدت معلومة تحتاج تصحيحاً أو إضافة، أو أردت حذف المقالة، أرسل لنا طلباً وسنراجعه.
ما رأيك في هذه المقالة؟