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

الحقيقة حول تغطية الاختبار

تم النشر بتاريخ 2024-11-06
تصفح:650

The truth about test coverage

حقيقة قوية.

انظر إلى الكود التالي البسيط والمباشر:

function sum(a, b) {
  return a   b;
}

الآن، دعونا نكتب بعض الاختبارات له:

test('sum', () => {
  expect(sum(1, 2)).toBe(3);
  expect(sum(2, 3)).toBe(5);
  expect(sum(3, 4)).toBe(7);
  expect(sum(4, 5)).toBe(9);
});

لقد حصلنا على تغطية 100%، أليس كذلك؟ حسنًا، نعم، نحن نفعل ذلك، في الواقع يمكننا القول أننا حصلنا على تغطية بنسبة 400% حيث تم اختبار جميع الأكواد بالكامل 4 مرات، ولكن هل نفعل ذلك؟

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

خذ بعين الاعتبار ما يلي:

sum(1, '2');
sum(1, null);
sum(1, undefined);

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

انتبه إلى فخ تغطية الاختبار.

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

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

خاتمة

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

اتصال،

مايكل.

بيان الافراج تم إعادة نشر هذه المقالة على: https://dev.to/cadienvan/the-truth-about-test-coverage-3gko?1 إذا كان هناك أي انتهاك، يرجى الاتصال بـ [email protected] لحذفه
أحدث البرنامج التعليمي أكثر>

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

Copyright© 2022 湘ICP备2022001581号-3