ما هو الاختبار القائم على النموذج؟

⚡ ملخص ذكي

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

  • 🧭 الفكرة الأساسية: يصف النموذج السلوك المتوقع، ويتم اشتقاق كل حالة اختبار من هذا النموذج بدلاً من كتابتها بشكل فردي.
  • 🔀 إطاران: يقوم التوليد غير المتصل بإنشاء المجموعة قبل التنفيذ، بينما يقوم التوليد المتصل بإنتاج الخطوات أثناء التشغيل.
  • 📐 رموز النموذج: الآلات ذات الحالة المحدودة، ومخططات الحالة، وجداول القرار، ومخططات تدفق البيانات وتدفق التحكم، ومخططات UML.
  • ⚙️ عملية العمل: قم ببناء النموذج، واختر معايير التغطية، وقم بإنشاء القيم المطلقةtracاختبارات t، وتحويلها إلى نصوص برمجية، وتنفيذها، ثم تحديد النتائج.
  • 🛠️ الأدوات: تقوم برامج GraphWalker و fMBT و Conformiq و MaTeLo و MBTsuite و Spec Explorer بإنشاء مسارات من الرسوم البيانية الموجهة أو نماذج الحالة.
  • 🇧🇷 التنازل عن ميزة ممن أجل الحصول على أخرى: تنخفض تكاليف الصيانة وترتفع التغطية، لكن هذه التقنية تتطلب مهارة في النمذجة واستثمارًا أوليًا في التعلم.

اختبار قائم على النموذج: اشتقاق حالات الاختبار تلقائيًا من نموذج سلوكي للنظام

ما هو الاختبار القائم على النموذج؟

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

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

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

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

مثال على الاختبار القائم على النموذج

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

مثال على اختبار قائم على النموذج: نمذجة حالات وإجراءات كتابة قصيدة في برنامج المفكرة

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

أنواع MBT

يوجد نوعان من أطر اختبار النماذج، والفرق بينهما يكمن ببساطة في وقت تنفيذ خطوات الاختبار:

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

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

كيف يعمل الاختبار القائم على النموذج

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

  • الخطوة الأولى: بناء النموذج. ترجمة المتطلبات أو المواصفات إلى لغة برمجة مستقلةtracنموذج السلوك المتوقع، الذي يحدد الحالات، والانتقالات بينها، والمدخلات التي تؤدي إلى كل انتقال.
  • الخطوة الثانية: اختيار معايير اختيار الاختبار. تحدد المعايير متى يتوقف المولد. ومن المعايير الشائعة تغطية جميع الحالات، والتي تزور كل حالة مرة واحدة على الأقل؛ وتغطية جميع الانتقالات، والتي تشغل كل سهم مرة واحدة على الأقل؛ وتغطية المسار أو تدفق البيانات لإجراء استكشاف أعمق.
  • الخطوة 3: توليد القيمة المطلقةtracحالات اختبار t. تقوم الأداة بمسح النموذج وإصدار سلاسل من القيم المطلقة.tracالخطوات التي تفي بالمعايير المختارة، بالإضافة إلى النتيجة المتوقعة في كل خطوة.
  • الخطوة الرابعة: تجسيد المادةtracاختبارات t. تقوم طبقة المحول بربط كل قيمة مطلقةtracلا تخطُ خطوةً نحو إجراءٍ حقيقي ضد النظام، مثل التفاعل مع واجهة المستخدم، و API مكالمة أو رسالة بروتوكول. هذه الخريطةping تُكتب مرة واحدة ويتم إعادة استخدامها بواسطة كل اختبار يتم إنشاؤه.
  • الخطوة الخامسة: التنفيذ وإصدار الأحكام. تُجرى الاختبارات الملموسة على النظام قيد الاختبار، وتُقارن كل استجابة مُلاحظة بتوقعات النموذج، ويتم تسجيل نتيجة النجاح أو الفشل. tracتمت إعادته إلى عنصر النموذج الذي أنتجه.

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

نماذج مختلفة في الاختبار

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

آلات الحالة المحدودة

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

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

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

يتم عرض آلة الحالة لهذا المثال هنا، مع تسمية كل سهم بالمدخل الذي يتسبب في الانتقال.

نموذج آلة الحالة المحدودة الذي يوضح حالتي الدخول والخروج لنظام تسجيل دخول الموظفين

مخططات الدولة

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

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

تم رسم دورة حياة العيب أدناه، حيث يتم عرض كل حالة كحالة، وكل إجراء من إجراءات سير العمل كحدث ينقل العيب بينها.

مخطط حالة دورة حياة العيب، مروراً بحالات "جديد" و"تم إصلاحه" و"إعادة فتحه".

لغة النمذجة الموحدة (UML)

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

يحتوي UML على تدوينات مثل:

  • تجاربنا
  • الجهات الفاعلة
  • طريقة العمل
  • مكونات
  • لغة برمجة

تُعد مخططات النشاط ومخططات آلة الحالة هي المخططات التي يقرأها مولدو الاختبارات في أغلب الأحيان، كما يوضح نموذج UML النموذجي أدناه.

تُستخدم رموز مخطط UML كنموذج مصدر لإنشاء حالات الاختبار

أدوات الاختبار القائمة على النماذج

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

  • GraphWalker — أداة مفتوحة المصدر تقرأ النماذج المصممة على شكل رسوم بيانية موجهة وتولد مسارات اختبار منها، مع مولدات وشروط توقف قابلة للتحديد.
  • fMBT — مجموعة أدوات اختبار مفتوحة المصدر تعتمد على النماذج من شركة إنتل، وتدعم إنشاء الاختبارات وتنفيذها مقابل نماذج الحالة.
  • متوافق — منتج تجاري آلي لتصميم الاختبارات يستمد حالات الاختبار والنصوص البرمجية من نماذج سلوكية رسومية.
  • ماتيلو و إم بي تي سويت — منصات تجارية تهدف إلى نماذج الاستخدام الإحصائية وإلى توليد اختبارات في أطر الأتمتة الحالية.
  • مستكشف خاص - Microsoftامتداد اختبار قائم على النموذج لـ Visual Studio، والذي تم الاستشهاد به على نطاق واسع في أدبيات اختبار البروتوكولات.

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

الاختبار القائم على النموذج مقابل تصميم الاختبار التقليدي

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

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

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

تطور اختبار البرمجيات من التنفيذ اليدوي إلى الأتمتة وصولاً إلى الاختبار القائم على النماذج

تحديات الاختبار القائم على النموذج

يتطلب تطبيق منهجية إدارة الأعمال القائمة على النماذج (MBT) في أي مؤسسة استثمارًا كبيرًا من المال والجهد. وفيما يلي عيوب هذه المنهجية في هندسة البرمجيات:

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

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

مزايا الاختبار القائم على النماذج

في مقابل تلك التكاليف، تتمثل فوائد تقنية MBT فيما يلي:

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

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

الأسئلة الشائعة

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

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

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

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

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

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

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

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

تلخيص هذه التدوينة بـ: