سؤال

هل هناك أي موارد جيدة عبر الإنترنت لكيفية إنشاء وصيانة والتفكير في كتابة إجراءات الاختبار لكود التحليل الرقمي؟

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

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

هل كانت مفيدة؟

المحلول

يبدو الأمر كما لو أنك بحاجة إلى التفكير في الاختبار بطريقتين مختلفتين على الأقل:

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

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

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

نصائح أخرى

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

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

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

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

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

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top