KUnit: إطار عمل اختبار وحدة جديد لنواة Linux

التكس

الثلاثاء الماضي، أعلن مهندس Google Brendan Higgins عن مجموعة تجريبية من 31 تصحيحًا عند تقديم KUnit كإطار عمل اختبار لوحدة Linux kernel جديدة للمساعدة في الحفاظ على جودة كود kernel وتحسينها.

هذه المجموعة من البقع يقترح أن KUnit هو إطار اختبار لنواة Linux.

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

حول KUnit

KUnit هو إطار عمل لمحاكاة واختبار محرك خفيف الوزن مصمم لنظام Linux Kernel. تحتوي اختبارات الوحدة بالضرورة على تفاصيل دقيقة ، فهي قادرة على اختبار جميع مسارات الكود بسهولة وحل المشكلة الكلاسيكية المتمثلة في الصعوبة في ممارسة رمز معالجة الخطأ.

وحدة إنه مستوحى جدًا من JUnit و Python unittest.mock و Googletest / Googlemock لـ C ++. يوفر KUnit تسهيلات لتحديد حالات اختبار الوحدة ، وتجميع حالات الاختبار ذات الصلة في مجموعات اختبار ، وتوفير بنية تحتية مشتركة لإجراء الاختبارات ، والنماذج بالأحجام الطبيعية ، والتجسس ، وغير ذلك الكثير.

كما يصفها بريندان هيغينز:

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

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

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

صعوبة ممارسة رمز معالجة الخطأ.

اختبار النواة

يكتب بريندن:

"بالإضافة إلى ذلك ، فإن KUnit سريع: من الاستدعاء إلى الإكمال ، يمكن لـ KUnit إجراء عدة عشرات من الاختبارات في أقل من ثانية. حاليًا ، تعمل مجموعة اختبار KUnit بأكملها لـ KUnit في أقل من ثانية من الاستدعاء الأولي (باستثناء وقت الترجمة) «.

عندما سئل عما إذا كانت KUnit ستحل محل أطر عمل الاختبار الأخرى لنواة Linux ، نفى Brenden ذلك ، قائلاً:

"معظم الاختبارات الحالية لنواة Linux هي اختبارات شاملة ، والتي لها مكانها. يحتوي النظام الذي تم اختباره جيدًا على الكثير من اختبارات الوحدة وعدد معقول من اختبارات التكامل وبعض الاختبارات من البداية إلى النهاية.

تحاول KUnit فقط معالجة مساحة اختبار محرك الأقراص التي لم تتم معالجتها حاليًا.

قم بتوحيد حل لاختبار Linux 

KUnit يحل المشكلة لتتمكن من إجراء الاختبارات دون الحاجة إلى جهاز افتراضي أو أجهزة حقيقية مثل ARM و x86 و X64 وغيرها.

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

KUnit سريع. باستثناء وقت الترجمة ، من التنفيذ إلى الانتهاء ، يمكن لـ KUnit إجراء عدة عشرات من الاختبارات في 10-20 ثانية فقط.

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

خارج KUnit ، لا توجد حاليًا أطر عمل اختبار متاحة للنواة لا تتطلب تثبيت النواة على جهاز اختبار أو جهاز افتراضي وكلها تتطلب اختبارات لتتم كتابتها على مساحة المستخدم التي تعمل في النواة ؛ هذا صحيح بالنسبة لـ Autotest و kselftest ، مما يؤدي إلى استبعاد أي منهما من اعتبار أطر اختبار الوحدة.


اترك تعليقك

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها ب *

*

*

  1. المسؤول عن البيانات: ميغيل أنخيل جاتون
  2. الغرض من البيانات: التحكم في الرسائل الاقتحامية ، وإدارة التعليقات.
  3. الشرعية: موافقتك
  4. توصيل البيانات: لن يتم إرسال البيانات إلى أطراف ثالثة إلا بموجب التزام قانوني.
  5. تخزين البيانات: قاعدة البيانات التي تستضيفها شركة Occentus Networks (الاتحاد الأوروبي)
  6. الحقوق: يمكنك في أي وقت تقييد معلوماتك واستعادتها وحذفها.