KUnit: нова структура модульного тестування для ядра Linux

смокінг

Минулого вівторка, Інженер Google Брендан Хіггінс оголосив про експериментальний набір з 31 патча, представляючи KUnit як нову структуру модульного тестування ядра Linux, яка допомагає зберегти та поліпшити якість коду ядра.

Цей набір латок пропонує, щоб KUnit був тестовою основою для ядра Linux.

На відміну від Autotest та kselftest, KUnit - справжній тестовий фреймворк, який не вимагає встановлення ядра на тестовій машині або віртуальній машині і це також не вимагає запису тестів у користувальницький простір, що працює на хості.

Про KUnit

KUnit - це легкий фреймворк для моделювання та тестування дисків, розроблений для ядра Linux. Модульні тести обов’язково мають більш точну деталізацію, вони здатні перевірити всі шляхи коду, легко вирішуючи класичну проблему складності для здійснення коду обробки помилок.

KUnit він дуже натхненний JUnit, модулем python unittest.mock та Googletest / Googlemock для С ++. KUnit пропонує засоби для визначення модульних тестових випадків, групування тестових кейсів у набори тестів, загальної інфраструктури для запуску тестів, макетів, шпигунства та багато іншого.

Як це описує Брендан Хіггінс:

Одиничний тест повинен протестувати окрему одиницю коду ізольовано, звідси і назва. Не повинно бути залежностей поза контролем тесту; це означає, що відсутні зовнішні залежності, що робить тести замовлення на величини швидшими.

Крім того, оскільки немає зовнішніх залежностей, немає обручів, до яких можна перейти для запуску тестів. Крім того, це робить модульні тести детермінованими - невдалий модульний тест завжди вказує на проблему.

Нарешті, оскільки модульні тести обов’язково мають більш точну деталізацію, вони можуть перевірити всі шляхи коду, легко вирішуючи класичну проблему.

Труднощі з використанням коду обробки помилок.

Перевірте ядро

Бренде пише:

«Крім того, KUnit працює швидко: від виклику до завершення, KUnit може виконати кілька десятків тестів менш ніж за секунду. В даний час весь набір тестів KUnit для KUnit працює менш ніж за секунду від початкового виклику (без урахування часу компіляції) «.

На запитання, чи замінить KUnit інші тестові фреймворки для ядра Linux, Бренден заперечив це, сказавши:

“Більшість існуючих тестів для ядра Linux - це наскрізні тести, які мають своє місце. Добре перевірена система має багато модульних тестів, розумну кількість інтеграційних тестів та деякі наскрізні тести.

KUnit намагається вирішити лише тестовий простір диска, який наразі не вирішується.

KUnit рішення для тестування Linux 

KUnit вирішує проблему мати можливість запускати тести без потреби у віртуальній машині або реальному обладнанні, такому як ARM, x86, X64 тощо.

Однак, на відміну від інших архітектур, він компілюється в окрему програму, яку можна запускати, як і будь-яку іншу програму безпосередньо в операційній системі-хості; Щоб бути зрозумілим, для цього не потрібна підтримка віртуалізації; Це просто звичайне шоу.

KUnit - це швидко. За винятком часу компіляції, від виконання до завершення, KUnit може виконати кілька десятків тестів всього за 10-20 секунд.

Для деяких людей це може здатися не великою справою, але наявність таких швидких та простих тестів принципово змінює спосіб де тестування і навіть написання коду робиться спочатку.

Поза KUnit, в даний час для ядра немає доступних тестових платформ, які не вимагають встановлення ядра на тестовій машині або віртуальній машині і всі вони вимагають запису тестів у користувальницький простір, що працює в ядрі; Це справедливо для Autotest та kselftest, дискваліфікуючи жодного з них не вважатись модульним тестовим середовищем.


Будьте першим, щоб коментувати

Залиште свій коментар

Ваша електронна адреса не буде опублікований. Обов'язкові для заповнення поля позначені *

*

*

  1. Відповідальний за дані: Мігель Анхель Гатон
  2. Призначення даних: Контроль спаму, управління коментарями.
  3. Легітимація: Ваша згода
  4. Передача даних: Дані не передаватимуться третім особам, за винятком юридичних зобов’язань.
  5. Зберігання даних: База даних, розміщена в мережі Occentus Networks (ЄС)
  6. Права: Ви можете будь-коли обмежити, відновити та видалити свою інформацію.