محاكاة افتراضية للخدمة

في هندسة البرمجيات، تكون المحاكاة الافتراضية للخدمة طريقة لمحاكاة سلوك مكونات محددة في التطبيقات القائمة على المكونات غير المتجانسة مثل التطبيقات المدفوعة بواجهة برمجة التطبيقات والتطبيقات المستندة إلى السحابة والمعماريات الموجهة للخدمة. يتم استخدامه لتوفير تطوير البرامج وفرق ضمان الجودة أو الاختبار للوصول إلى مكونات النظام التابعة اللازمة لممارسة تطبيق قيد الاختبار (AUT)، ولكنها غير متوفرة أو يصعب الوصول إليها لأغراض التطوير والاختبار. مع سلوك المكونات التابعة «افتراضية»، يمكن أن يستمر الاختبار والتطوير بدون الوصول إلى المكونات الحية الفعلية. يعترف البائعون ومحللو الصناعة والمنشورات الصناعية بأن الخدمة الافتراضية تختلف عن السخرية.Service Virtualization as an Alternative to Mocking, by Jonathan Allen, eBizQ April 22, 2013 Service virtualization arises to meet services testing obstacles, by George Lawton, SearchSOA May 15, 2012 

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

 لم تكتمل بعد
 لا يزال يتطور
 يسيطر عليها طرف ثالث أو شريك
 متاح للاختبار بسعة محدودة أو في أوقات غير ملائمة
 من الصعب توفير أو تكوين في بيئة اختبار
 مطلوب للوصول المتزامن من قبل فرق مختلفة مع إعداد بيانات اختبار متنوعة ومتطلبات أخرى
 مقيد أو مكلف للاستخدام لاختبار الحمل والأداءService Virtualization for Modern Applications by Gaurish Hattangadi, Virtual Strategy Magazine, November 28, 2010 
على الرغم من أن مصطلح «ظاهرية الخدمة» يعكس التركيز المبدئي لهذه التقنية على ظاهرية خدمات الويب، فإن ظاهرية الخدمة تمتد عبر جميع جوانب التطبيقات المركبة: الخدمات وقواعد البيانات والحواسيب المركزية وESBs والمكونات الأخرى التي تتواصل باستخدام بروتوكولات المراسلة الشائعة.Managing Test Environments by Liz McMillan, Cloud Computing Journal, December 2011  Application Behavior Virtualization by Elizabeth White, Cloud Computing Journal, December 2011  Database Virtualization For Development and Test by Wayne Ariola, ST & QA Magazine, March 2012  أدوات مماثلة أخرى تسمى محاكيات واجهة برمجة التطبيقات، أدوات محاكاة واجهة برمجة التطبيقات، على الزوجي اختبار الأسلاك.

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

تحاكي المحاكاة الافتراضية للخدمات فقط سلوك المكونات التابعة المحددة التي يحتاجها المطورون أو المختبرون من أجل إتمام معاملاتهم من البداية إلى النهاية. فبدلاً من إضفاء الطابع الافتراضي على أنظمة بأكملها، فإنه يقوم فقط بإضفاء الطابع الافتراضي على شرائح محددة فقط من السلوك المستقل الحاسم لتنفيذ مهام التطوير والاختبار. وهذا يوفر منطق تطبيق يكفي فقط حتى يحصل المطورون أو المختبرون على ما يحتاجون إليه دون الحاجة إلى انتظار اكتمال الخدمة الفعلية وإتاحتها بسهولة. على سبيل المثال، بدلاً من محاكاة قاعدة بيانات كاملة (وتنفيذ جميع إدارة بيانات الاختبار المرتبطة بالإضافة إلى إعداد قاعدة البيانات لكل جلسة اختبار)، يمكنك مراقبة كيفية تفاعل التطبيق مع قاعدة البيانات، ثم محاكاة سلوك قاعدة البيانات ذات الصلة (SQL الاستعلامات التي تم تمريرها إلى قاعدة البيانات، ومجموعات النتائج المقابلة التي يتم إرجاعها، وما إلى ذلك).An Intro to SOA and Virtualization  by John Michelsen, WebServices.org, August 2007The Next Generation of Test Environment Management by Wayne Ariola, Virtualization Journal, July 12, 2011  

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

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

عادةً ما يتم إنشاء الأصول الافتراضية من خلال:

 تسجيل الاتصال المباشر بين المكونات أثناء استخدام النظام من التطبيق قيد الاختبار (AUT)
 توفير سجلات تمثل الاتصال التاريخي بين المكونات
 تحليل مواصفات واجهة الخدمة (مثل WSDL)
 تحديد السلوك يدويًا باستخدام عناصر تحكم الواجهة المختلفة وقيم مصدر البيانات
ثم يتم تكوينها أيضًا لتمثيل بيانات ووظائف وأوقات استجابة محددة.

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

يشير محللو الصناعة إلى أن الوضع الافتراضي للخدمة هو الأنسب لـ "متاجر تكنولوجيا المعلومات التي تتمتع بخبرة كبيرة في" تخطي "اختبار التكامل بسبب" البرامج التابعة "، ومع تسخير اختبار متطور إلى حد معقول.Parasoft and "Service Virtualization" Testing: A Good Idea by Wayne Kernochan, Thoughts From a Software IT Analyst, February 22, 2013 

 العلاقة بسرقة واستهزاء 
نهج بديل للعمل حول قيود الوصول إلى بيئة الاختبار الموضحة في مقدمة هذه المقالة لأعضاء الفريق لتطوير كعوب الأسلوب أو محاكاة الكائنات التي تحل محل الموارد التابعة. أصبح عيب هذا النهج واضحًا في أوائل العقد الأول من القرن الحالي مع ظهور بنية موجهة نحو الخدمة.Testing in Service-Oriented Environments by Ed Morris et al, Software Engineering Institute, March 2010  أدى انتشار التطبيقات المركبة التي تعتمد على العديد من الخدمات التابعة، بالإضافة إلى ظهور تطوير برمجيات أجايل بعد نشر بيان أجايل لعام 2001، إلى صعوبة متزايدة للمطورين أو المختبرين في تطوير عدد ونطاق وتعقيد الأوتاد أو النماذج يدويًا مطلوب لإكمال مهام التطوير والاختبار لتطوير تطبيقات المؤسسة الحديثة.Service virtualization is helping organizations realize business value from testing by Chandranshu Singh, ovum, March 31, 2014  

كانت الخطوة الأولى في التطور من الاستدلال إلى المحاكاة الافتراضية للخدمة هي التكنولوجيا المعبأة في أدوات اختبار SOA منذ عام 2002.Parasoft's Web Service Testing Tool Should Aid Development  by Theresa Lanowitz Gartner, May 1, 2002  تم تصميم التطبيقات الأقدم للمحاكاة الافتراضية للخدمات لأتمتة عملية تطوير محاكاة بسيطة تشبه العقب بحيث يمكن اختبار التطبيقات المركبة بشكل أكثر كفاءة.SOA virtualization gets real by Rich Seeley, SearchSOA, November 28, 2007  مع استمرار نمو أنظمة المؤسسات في التعقيد والتوزيع بشكل متزايد، حول موردو أدوات البرامج التركيز من التلعثم إلى المحاكاة الافتراضية للخدمات الأكثر تركيزًا على البيئة. في حين أنه لا يزال من الممكن إتمام عملية الحصر من خلال التطوير اليدوي وإدارة بذرة، فإن ما أصبح يُعرف باسم «محاكاة الخدمة الظاهرية» قد اكتمل باستخدام إحدى تقنيات المحاكاة الافتراضية للبرمجيات التجارية الجاهزة كمنصة لتطوير ونشر «الأصول الافتراضية للخدمة» الخاصة بهم.

 أجايل وديف أوبس 
أدى تزايد شعبيةAgile & DevOps Google Trends  تطوير البرمجيات أجايل وديف أوبس إلى خلق طلب على مجموعة جديدة من الأدوات لتقديم خدمة المحاكاة الافتراضية للمجتمعات التي تعمل بهذه الطريقة.Next Gen Service Virtualization Forum, 13th of September 2017  تتناسب ممارسات مثل التسليم المستمر والابتعاد عن تطوير الحواسيب الكبيرة والمباني المتجانسة إلى البنى القائمة على الخدمات الدقيقة الموزعة بشكل جيد مع إمكانات الخدمة الافتراضية. تفضل فرق أجايل وديف أوبس العمل باستخدام أدوات خفيفة الوزن ذات سخام أقل متراكم ولا قيود ترخيص مرهقة.Thought Works Technology Radar: Big enterprise solutions 

 مراجع 

تصنيف:اختبار البرمجيات
تصنيف:ضمان الجودة
تصنيف:هندسة البرمجيات