ما هو الاختبار الديناميكي؟ الأنواع والتقنيات والأمثلة

⚡ ملخص ذكي

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

  • 🎯 الغرض: تحقق من سلوك وقت التشغيل الفعلي، وليس من المستندات التي تصفه.
  • 🔀 فرعان: يقوم الصندوق الأبيض بفحص الكود، بينما يقوم الصندوق الأسود بفحص السلوك.
  • 🧱 أربعة مستويات: جميع اختبارات الوحدة والتكامل والنظام والقبول تقوم بتنفيذ التعليمات البرمجية.
  • ⚙️ غير وظيفي: تُجرى هنا فحوصات الأداء والاسترداد والتوافق والأمان وسهولة الاستخدام.
  • 🔄 عملية: الاستراتيجية، تصميم الاختبار، إعداد البيئة، التنفيذ، والإبلاغ عن العيوب.
  • تقريبا التنازل عن ميزة ممن أجل الحصول على أخرى: الكشف عن العيوب بشكل أعمق مقابل الوقت والبيئات والتكلفة.

أنواع وتقنيات وأمثلة الاختبارات الديناميكية

ما هو الاختبار الديناميكي؟

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

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

يوضح الجدول أدناه الفرق بينهما بنظرة سريعة.

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

مثال الاختبار الديناميكي

يوضح مثال عملي قصير كيف يتصرف الاختبار الديناميكي في الممارسة العملية.

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

عندما يُدخل المستخدم اسم المستخدم كـ "Guruيقبل النظام الرقم 99. عندما يُدخل المستخدم "Guruعند إدخال "99@123"، يُظهر التطبيق رسالة خطأ. تُشير هذه النتيجة إلى أن الكود يعمل بشكل ديناميكي بناءً على مدخلات المستخدم.

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

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

ماذا يفعل الاختبار الديناميكي؟

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

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

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

لنفترض أن حقل "حساباتي" يعرض المبلغ 25,000، وأن حقل "تحويل الأموال" يعرض 25,000 دولار، و Bill تعرض شاشة الدفع مبلغ 25000 دولار. المبلغ هو نفسه، لكن طريقة عرضه مختلفة، مما يجعل البرنامج غير متناسق.

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

أنواع الاختبارات الديناميكية

ينقسم الاختبار الديناميكي إلى فئتين.

  • أبيض Box الاختبار
  • اسود Box الاختبار

يوضح الرسم البياني أدناه العلاقة بين الفئتين ومستويات الاختبار التي تندرج تحتهما.

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

يتم وصف كل نوع والغرض المقصود منه أدناه.

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

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

ينقسم اختبار الصندوق الأسود مرة أخرى إلى نوعين.

  • الاختبار الوظيفي
  • اختبار غير وظيفي

الاختبار الوظيفي

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

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

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

اختبار غير وظيفي

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

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

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

تقنيات الاختبار الديناميكي

بعد تحديد الأنواع، السؤال التالي هو كيف يتم تشغيل دورة الاختبار الديناميكية فعليًا.

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

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

مسار عملية الاختبار الديناميكي من تصميم الاختبار مروراً بالتنفيذ وصولاً إلى الإبلاغ عن الأخطاء

قبل البدء في العملية، يجب الاتفاق على الاستراتيجية التي سيتم اتباعها للاختبار الديناميكي.

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

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

تصميم الاختبار وتنفيذه

في هذه المرحلة، يحدد الفريق ما يلي.

  • الميزات التي سيتم اختبارها
  • شروط الاختبار المستمدة من تلك الميزات
  • بنود التغطية المستمدة من شروط الاختبار
  • حالات الاختبار المستمدة من عناصر التغطية

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

اختبار إعداد البيئة

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

تنفيذ الاختبار

خلال هذه المرحلة، يتم تنفيذ حالات الاختبار فعليًا، إما يدويًا أو من خلال الأتمتةويتم تسجيل النتائج الفعلية مقابل النتائج المتوقعة.

تم التقاط تقرير الخطأ

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

مزايا الاختبار الديناميكي

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

عيوب الاختبار الديناميكي

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

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

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

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

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

أطر الوحدات مثل JUnit, TestNG و pytest، بالإضافة إلى أدوات تشغيل واجهة المستخدم وواجهة برمجة التطبيقات مثل Selenium, Cypress و Postmanقم بتحميل أدوات مثل JMeter تغطية الجانب غير الوظيفي من الأتمتة.

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

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

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

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

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