تحليل البرامج الديناميكية
تحليل البرامج الديناميكي هو عملية تحليل البرامج التي تتضمن تنفيذ البرنامج - على عكس تحليل البرامج الثابت ، الذي لا يقوم بتنفيذه.
يمكن أن يركز التحليل على جوانب مختلفة من البرنامج بما في ذلك على سبيل المثال لا الحصر: السلوك ، وتغطية الاختبار ، والأداء، والأمان .
لكي يكون البرنامج المستهدف فعالاً، يجب تشغيله باستخدام مدخلات اختبار كافية [ 1 ] لتغطية نطاقات المدخلات والمخرجات المحتملة. تُستخدم مقاييس اختبار البرمجيات ، مثل تغطية الكود ، وأدوات مثل اختبار الطفرات ، لتحديد مواطن القصور في الاختبار.
الأنواع
الاختبار الوظيفي
يشمل الاختبار الوظيفي تقنيات برمجة شائعة نسبياً مثل اختبار الوحدة ، واختبار التكامل ، واختبار النظام . [ 2 ]
تغطية التعليمات البرمجية
يساعد حساب تغطية كود الاختبار في تحديد الكود الذي لم يتم اختباره.
على الرغم من أن هذا التحليل يُحدد التعليمات البرمجية غير المختبرة، إلا أنه لا يُحدد ما إذا كانت التعليمات البرمجية المختبرة قد خضعت لاختبارات كافية . إذ يُمكن تنفيذ التعليمات البرمجية حتى لو لم تُؤكد الاختبارات صحة سلوكها.
- Gcov هو برنامج تغطية شفرة المصدر GNU .
- يقوم VB Watch بإدخال رمز تحليل ديناميكي في برامج Visual Basic لمراقبة تغطية التعليمات البرمجية ، ومكدس الاستدعاءات، وتتبع التنفيذ، والكائنات التي تم إنشاؤها، والمتغيرات.
الاختبار الديناميكي
يتضمن الاختبار الديناميكي تنفيذ برنامج على مجموعة من حالات الاختبار.
اكتشاف أخطاء الذاكرة
- AddressSanitizer : أداة لكشف أخطاء الذاكرة لأنظمة Linux و macOS و Windows وغيرها. جزء من LLVM .
- BoundsChecker : أداة لكشف أخطاء الذاكرة لتطبيقات ويندوز. جزء من برنامج Micro Focus DevPartner .
- Dmalloc : مكتبة لفحص تخصيص الذاكرة وتسريباتها. يجب إعادة تجميع البرنامج، ويجب أن تتضمن جميع الملفات ملف رأس C الخاص dmalloc.h.
- Intel Inspector : مصحح أخطاء الذاكرة الديناميكية لتطبيقات C و C++ و Fortran التي تعمل على أنظمة Windows و Linux .
- التنظيف : بشكل أساسي اكتشاف تلف الذاكرة واكتشاف تسرب الذاكرة.
- Valgrind : يقوم بتشغيل البرامج على معالج افتراضي ويمكنه اكتشاف أخطاء الذاكرة (مثل سوء استخدام malloc و free ) وحالات التزامن في البرامج متعددة الخيوط .
التشويش
الاختبار العشوائي هو أسلوب اختبار يتضمن تشغيل برنامج على مجموعة واسعة من المدخلات؛ وغالبًا ما يتم توليد هذه المدخلات عشوائيًا (جزئيًا على الأقل). تستخدم أدوات الاختبار العشوائي ذات الصندوق الرمادي تغطية التعليمات البرمجية لتوجيه عملية توليد المدخلات.
التنفيذ الرمزي الديناميكي
يتضمن التنفيذ الرمزي الديناميكي (المعروف أيضًا باسم DSE أو التنفيذ الرمزي) تنفيذ برنامج اختبار على مدخلات محددة، وجمع قيود المسار المرتبطة بالتنفيذ، واستخدام محلل قيود (عادةً محلل SMT ) لتوليد مدخلات جديدة من شأنها أن تجعل البرنامج يسلك مسار تحكم مختلف، مما يزيد من تغطية الكود لمجموعة الاختبار. [ 3 ] يمكن اعتبار DSE نوعًا من أنواع اختبار التشويش (اختبار التشويش ذي الصندوق الأبيض).
تحليل تدفق البيانات الديناميكي
يتتبع تحليل تدفق البيانات الديناميكي تدفق المعلومات من المصادر إلى الوجهات . وتشمل أشكال تحليل تدفق البيانات الديناميكي تحليل التلوث الديناميكي وحتى التنفيذ الرمزي الديناميكي . [ 4 ] [ 5 ]
الاستدلال الثابت
دايكون هو تطبيق للكشف الديناميكي عن الثوابت. يقوم دايكون بتشغيل برنامج، ويراقب القيم التي يحسبها البرنامج، ثم يبلغ عن الخصائص التي كانت صحيحة أثناء عمليات التنفيذ التي تمت مراقبتها، وبالتالي من المحتمل أن تكون صحيحة في جميع عمليات التنفيذ.
تحليل أمني
يمكن استخدام التحليل الديناميكي للكشف عن المشاكل الأمنية.
- يُعدّ IBM Rational AppScan مجموعة من حلول أمان التطبيقات المصممة خصيصًا لمراحل مختلفة من دورة حياة التطوير. تتضمن هذه المجموعة منتجين رئيسيين للتحليل الديناميكي: IBM Rational AppScan Standard Edition وIBM Rational AppScan Enterprise Edition. بالإضافة إلى ذلك، تتضمن المجموعة IBM Rational AppScan Source Edition، وهي أداة للتحليل الثابت.
أخطاء التزامن
- يستخدم برنامج Parasoft Jtest خاصية اكتشاف الأخطاء أثناء التشغيل للكشف عن العيوب مثل حالات التزامن والاستثناءات وتسريبات الموارد والذاكرة ونقاط الضعف الأمنية.
- يقوم برنامج Intel Inspector بإجراء تحليل لتعدد الخيوط في وقت التشغيل وتحليل أخطاء الذاكرة في نظام التشغيل Windows.
- Parasoft Insure++ هي أداة لتحليل الذاكرة أثناء التشغيل واكتشاف الأخطاء. يوفر مكون Inuse الخاص بها عرضًا رسوميًا لتخصيصات الذاكرة بمرور الوقت، مع رؤية محددة لاستخدام الكومة الإجمالي، وتخصيصات الكتل، والتسريبات المحتملة، وما إلى ذلك.
- أداة Thread Sanitizer من جوجل هي أداة للكشف عن تضارب البيانات. تقوم بتعديل LLVM IR لالتقاط عمليات الوصول إلى الذاكرة المتضاربة.
تقسيم البرنامج
بالنسبة لمجموعة فرعية محددة من سلوك البرنامج، تتضمن عملية تجزئة البرنامج اختزال البرنامج إلى أبسط صورة ممكنة مع الحفاظ على إنتاج السلوك المطلوب. يُطلق على البرنامج المُختزل اسم "شريحة"، وهو تمثيل دقيق للبرنامج الأصلي ضمن نطاق مجموعة السلوك المحددة. عادةً ما يكون إيجاد شريحة مشكلةً غير قابلة للحل، ولكن بتحديد مجموعة السلوك المستهدفة بناءً على قيم مجموعة من المتغيرات، يُمكن الحصول على شرائح تقريبية باستخدام خوارزمية تدفق البيانات. يستخدم المطورون هذه الشرائح عادةً أثناء تصحيح الأخطاء لتحديد مصدرها.
تحليل الأداء
تستخدم معظم أدوات تحليل الأداء تقنيات تحليل البرامج الديناميكية.
التقنيات
تتضمن معظم التحليلات الديناميكية استخدام الأجهزة أو التحويل.
بما أن أدوات القياس يمكن أن تؤثر على أداء وقت التشغيل، فيجب أن يأخذ تفسير نتائج الاختبار هذا في الاعتبار لتجنب سوء تحديد مشكلة الأداء.
أمثلة
DynInst هي مكتبة لتعديل التعليمات البرمجية أثناء التشغيل، وهي مفيدة لتطوير أدوات تحليل البرامج الديناميكية وتطبيقها على الملفات التنفيذية المُجمّعة. لا تتطلب DynInst عادةً إعادة تجميع التعليمات البرمجية المصدرية ؛ ومع ذلك، يسهل تعديل الملفات التنفيذية غير المُجرّدة والملفات التنفيذية التي تحتوي على رموز تصحيح الأخطاء.
Iroh.js هي مكتبة لتحليل التعليمات البرمجية أثناء التشغيل للغة جافا سكريبت . تتتبع مسار تنفيذ التعليمات البرمجية، وتوفر مستمعين أثناء التشغيل لاكتشاف أنماط التعليمات البرمجية المنفذة المحددة، وتسمح باعتراض سلوك تنفيذ البرنامج والتلاعب به.
انظر أيضاً
مراجع
- ↑ خاتيوادا، ساكيت؛ توشيف، ميروسلاف؛ محمود، أنس (2018-01-01). "دلالات كافية: منهج نظري للمعلومات لتحديد موقع أخطاء البرمجيات باستخدام استرجاع المعلومات" . تكنولوجيا المعلومات والبرمجيات . 93 : 45-57 . doi : 10.1016/j.infsof.2017.08.012 .
- ↑ مايرز، جي جي (1979). فن اختبار البرمجيات . جون وايلي وأولاده.
- ↑ تشن، تينغ؛ تشانغ، شياو سونغ؛ غو، شي زي؛ لي، هونغ يوان؛ وو، يو (2013-09-01). "أحدث التقنيات: التنفيذ الرمزي الديناميكي لتوليد الاختبارات الآلية" . أنظمة حاسوب الجيل القادم . يتضمن أقسامًا خاصة: الحوسبة الموزعة المدعومة بالسيبرانية لخدمات الحوسبة السحابية والشبكية الشاملة، والحوسبة السحابية والتطبيقات العلمية - البيانات الضخمة، والتحليلات القابلة للتوسع، وما بعدها. 29 (7): 1758-1773 . doi : 10.1016/j.future.2012.02.006 . ISSN 0167-739X .
- ↑ تشين، جو؛ هان، ووكهيون؛ ين، مينغجون؛ تسنغ، هاوتشن؛ سونغ، تشنغيو؛ لي، بيونغيونغ؛ ين، هينغ؛ شين، إنسيك (2022). {SYMSAN}: تنفيذ متزامن فعال من حيث الوقت والمساحة عبر تحليل تدفق البيانات الديناميكي . الصفحات 2531-2548 . ISBN 978-1-939133-31-1.
- ↑ تشانغ، والتر؛ ستريف، براندون؛ لين، كالفن (27-10-2008). "تطبيق أمني فعال وقابل للتوسيع باستخدام تحليل تدفق البيانات الديناميكي" . وقائع المؤتمر الخامس عشر لجمعية ACM حول أمن الحاسوب والاتصالات . CCS '08. نيويورك، نيويورك، الولايات المتحدة الأمريكية: جمعية آلات الحوسبة. الصفحات 39-50 . doi : 10.1145/1455770.1455778 . ISBN 978-1-59593-810-7. S2CID 6888893 .
- تحليل البرامج الديناميكية
- تحليل البرامج
- اختبار البرمجيات
