محددات التصميم
تُعدّ مُحدِّدات التصميم طريقةً ابتكرها توماس مكابي [ 1 ] لتقييم مدى تعقيد دمج وحدتين برمجيتين. ولكل نوع من أنواع مُحدِّدات التصميم الأربعة تصنيفٌ خاصٌ به لتعقيد الدمج. وبالنسبة لأجزاء الشفرة التي تُطبَّق عليها أكثر من مُحدِّد تصميم واحد، يُمكن دمج تصنيفات تعقيد الدمج.
مجموع تعقيد التكامل لوحدة برمجية، مضافًا إليه واحد، هو الحد الأقصى لعدد حالات الاختبار اللازمة لاختبار التكامل بشكل كامل. مع ذلك، يستطيع مهندس الاختبار عادةً تقليل هذا العدد بتغطية أكبر عدد ممكن من شروط التصميم التي لم يتم الكشف عنها سابقًا في كل اختبار جديد. كما أن بعض تركيبات شروط التصميم قد تكون مستحيلة منطقيًا.
أنواع المكالمات
مكالمة غير مشروطة
تستدعي الوحدة أ الوحدة ب دائمًا. وهذا له تعقيد تكاملي يساوي صفرًا. على سبيل المثال:
unitA::functionA() { unitB->functionB(); }مكالمة مشروطة
قد تستدعي الوحدة أ الوحدة ب أو لا تستدعيها. هذا التكامل له تعقيد 1، ويحتاج إلى اختبارين: أحدهما يستدعي ب، والآخر لا يستدعيها.
unitA::functionA() { إذا (الشرط) unitB->functionB(); }مكالمة مشروطة حصرية متبادلة
يشبه هذا عبارة switch في لغات البرمجة . تستدعي الوحدة A وحدة واحدة فقط من بين عدة وحدات ممكنة. تعقيد التكامل هو n − 1، حيث n هو عدد الوحدات الممكنة التي سيتم استدعاؤها.
unitA::functionA() { switch (condition) { الحالة 1: unitB->functionB(); استراحة؛ الحالة الثانية: unitC->functionC(); استراحة؛ ... تقصير: unitN->functionN(); استراحة؛ } }استدعاء تكراري
في عملية استدعاء متكررة، تستدعي الوحدة أ الوحدة ب مرة واحدة على الأقل، وربما أكثر. يبلغ تعقيد هذا التكامل 1. ويتطلب أيضًا اختبارين: أحدهما يستدعي الوحدة ب مرة واحدة، والآخر يستدعيها أكثر من مرة.
unitA::functionA() { يفعل { unitB->functionB(); } بينما (الشرط)؛ }دمج المكالمات
يمكن لأي عملية تكامل أن تجمع بين عدة أنواع من الاستدعاءات. على سبيل المثال، قد تستدعي الوحدة (أ) الوحدة (ب) أو لا تستدعيها؛ وإذا استدعتها، فيمكنها استدعاؤها مرة واحدة أو أكثر. يجمع هذا التكامل بين استدعاء شرطي، بتعقيد تكاملي قدره 1، واستدعاء تكراري، بتعقيد تكاملي قدره 1. وبذلك، يصبح إجمالي تعقيد التكامل 2.
unitA::functionA() { إذا كان (someNumber > 0) { for (i = 0; i < someNumber; i++) { unitB->functionB(); } } }عدد الاختبارات
بما أن عدد الاختبارات اللازمة يساوي تعقيد التكامل الكلي زائد واحد، فإن هذا التكامل يتطلب ثلاثة اختبارات. في أحدها، حيث لا تتجاوز قيمة `someNumber` الصفر، لا يتم استدعاء الوحدة `B`. في اختبار آخر، حيث تساوي قيمة `someNumber` واحدًا، يتم استدعاء الوحدة `B` مرة واحدة. وفي الاختبار الأخير، حيث تكون قيمة `someNumber` أكبر من واحد، يتم استدعاء الوحدة `B` أكثر من مرة.
انظر أيضاً
مراجع
- ↑ مكابي، توماس جيه؛ بتلر، تشارلز دبليو (12 ديسمبر 1989). "قياس تعقيد التصميم واختباره" . مجلة اتصالات رابطة مكائن الحوسبة . 32 (12): 1415-1425 . doi : 10.1145/76380.76382 . S2CID 14112936 .
- اختبار البرمجيات
- مقاييس البرمجيات
