KUnit: nowa platforma testów jednostkowych dla jądra systemu Linux

Tux

W zeszły wtorek, Inżynier Google Brendan Higgins zapowiedział eksperymentalny zestaw 31 poprawek, wprowadzając KUnit jako nowy framework do testów jednostkowych jądra Linuksa, który pomaga zachować i ulepszyć jakość kodu jądra.

Ten zestaw łatek proponuje, że KUnit jest strukturą testową dla jądra Linuksa.

W przeciwieństwie do Autotest i kselftest, KUnit to prawdziwa platforma testowa, która nie wymaga instalacji jądra na maszynie testowej ani wirtualnej i nie wymaga również zapisywania testów w przestrzeni użytkownika działającej na hoście.

Informacje o KUnit

KUnit to lekka platforma do symulacji i testowania dysków zaprojektowana dla jądra systemu Linux. Testy jednostkowe z konieczności mają większą szczegółowość, są w stanie przetestować wszystkie ścieżki kodu, łatwo rozwiązując klasyczny problem trudności w ćwiczeniu kodu obsługi błędów.

KUnit jest bardzo zainspirowany JUnit, unittest.mock Pythona i Googletest / Googlemock dla C ++. KUnit zapewnia narzędzia do definiowania przypadków testów jednostkowych, grupowania powiązanych przypadków testowych w zestawy testów, zapewnia wspólną infrastrukturę do uruchamiania testów, tworzenia makiet, szpiegowania i wiele więcej.

Jak opisuje to Brendan Higgins:

Test jednostkowy ma na celu testowanie pojedynczej jednostki kodu w izolacji, stąd nazwa. Nie powinno być żadnych zależności poza kontrolą testu; Oznacza to, że nie ma żadnych zewnętrznych zależności, co przyspiesza porządkowanie testów wielkości.

Ponadto, ponieważ nie ma zewnętrznych zależności, nie ma pętli, do których można przeskoczyć, aby uruchomić testy. Ponadto sprawia, że ​​testy jednostkowe są deterministyczne - nieudany test jednostkowy zawsze wskazuje na problem.

Wreszcie, ponieważ testy jednostkowe z konieczności mają większą szczegółowość, są w stanie przetestować wszystkie ścieżki kodu, łatwo rozwiązując klasyczny problem.

Trudność w wykonywaniu kodu obsługi błędów.

Testuj jądro

Brende pisze:

„Dodatkowo, KUnit jest szybki: od wywołania do zakończenia, KUnit może przeprowadzić kilkadziesiąt testów w mniej niż sekundę. Obecnie cały zestaw testów KUnit dla KUnit działa w mniej niż sekundę od pierwszego wywołania (bez czasu kompilacji) «.

Na pytanie, czy KUnit zastąpiłby inne platformy testowe dla jądra Linuksa, Brenden zaprzeczył, mówiąc:

„Większość istniejących testów jądra Linuksa to testy typu end-to-end, które mają swoje miejsce. Dobrze przetestowany system ma wiele testów jednostkowych, rozsądną liczbę testów integracyjnych i kilka testów typu end-to-end.

KUnit próbuje tylko zaadresować przestrzeń testową dysku, która obecnie nie jest adresowana.

KUnit rozwiązanie do testowania w systemie Linux 

KUnit rozwiązuje problem aby móc uruchamiać testy bez konieczności posiadania maszyny wirtualnej lub prawdziwego sprzętu, takiego jak między innymi ARM, x86, X64.

Jednak w przeciwieństwie do innych architektur, jest on kompilowany jako oddzielny program, który można uruchomić jak każdy inny program bezpośrednio w systemie operacyjnym hosta; Żeby było jasne, nie wymaga żadnej obsługi wirtualizacji; To tylko zwykłe przedstawienie.

KUnit jest szybki. Z wyłączeniem czasu kompilacji, od wykonania do zakończenia, KUnit może przeprowadzić kilkadziesiąt testów w zaledwie 10-20 sekund.

Niektórym osobom może się to wydawać nic wielkiego, ale tak szybkie i łatwe do przeprowadzenia testy zasadniczo zmieniają sposób gdzie najpierw testuje się, a nawet pisze kod.

Poza KUnit, Obecnie nie ma dostępnych struktur testowych dla jądra, które nie wymagają zainstalowania jądra na maszynie testowej lub maszynie wirtualnej i wszystkie wymagają, aby testy były zapisywane w przestrzeni użytkownika działającej w jądrze; Jest to prawdą w przypadku Autotest i kselftest, dyskwalifikując którekolwiek z nich z uznania ich za ramy testów jednostkowych.


Zostaw swój komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

*

*

  1. Odpowiedzialny za dane: Miguel Ángel Gatón
  2. Cel danych: kontrola spamu, zarządzanie komentarzami.
  3. Legitymacja: Twoja zgoda
  4. Przekazywanie danych: Dane nie będą przekazywane stronom trzecim, z wyjątkiem obowiązku prawnego.
  5. Przechowywanie danych: baza danych hostowana przez Occentus Networks (UE)
  6. Prawa: w dowolnym momencie możesz ograniczyć, odzyskać i usunąć swoje dane.