KUnit: novi okvir za jedinično testiranje Linux jezgre

Tuxedo

Prošlog utorka, Googleov inženjer Brendan Higgins najavio je eksperimentalni set od 31 zakrpe prilikom uvođenja KUnit-a kao novi Linux jedinstveni okvir za testiranje jezgre koji pomaže u očuvanju i poboljšanju kvalitete koda jezgre.

Ovaj set zakrpa predlaže da je KUnit okvir za testiranje Linux jezgre.

Za razliku od Autotest i kselftest, KUnit je pravi testni okvir koji ne zahtijeva instalaciju jezgre na test mašini ili virtualnoj mašini a također ne zahtijeva upisivanje testova u korisnički prostor koji se izvodi na hostu.

O KUnit-u

KUnit je lagani okvir za simulaciju i testiranje pogona dizajniran za Linux kernel. Jedinstveni testovi nužno imaju finiju granulaciju, oni su u stanju testirati sve staze koda lako rješavajući klasični problem poteškoće u vježbanju koda za rukovanje pogreškama.

KUnit nadahnut je JUnit-om, Pythonovim unittest.mock i Googletest / Googlemock za C ++. KUnit pruža mogućnosti za definiranje unit test slučajeva, grupiranje srodnih test slučajeva u test pakete, pružajući zajedničku infrastrukturu za izvođenje testova, makete, špijuniranje i još mnogo toga.

Kako to opisuje Brendan Higgins:

Jedinstveni test treba da testira jednu jedinicu koda u izolaciji, pa otuda i naziv. Ne bi trebalo biti zavisnosti izvan kontrole testa; to znači da nema vanjskih zavisnosti, što ubrzava testove za naručivanje veličina.

Takođe, budući da nema vanjskih ovisnosti, nema obruča na koje treba skočiti da biste pokrenuli testove. Takođe, čini unit testove determinističkim - neuspjeli unit test uvijek ukazuje na problem.

Konačno, budući da jedinstveni testovi nužno imaju finiju granulaciju, oni su u mogućnosti testirati sve putove koda lako rješavajući klasični problem.

Poteškoće u izvođenju koda za rukovanje greškama.

Test kernel

Brende piše:

„Osim toga, KUnit je brz: od pozivanja do završetka, KUnit može pokrenuti nekoliko desetina testova za manje od sekunde. Trenutno se cjelokupni testni paket KUnit za KUnit izvodi za manje od sekunde od početnog poziva (bez vremena kompajliranja) «.

Na pitanje hoće li KUnit zamijeniti ostale testne okvire za Linux kernel, Brenden je to porekao rekavši:

„Većina postojećih testova za Linux kernel su end-to-end testovi koji imaju svoje mjesto. Dobro testirani sistem ima puno jediničnih testova, razuman broj integracijskih testova i neke end-to-end testove.

KUnit pokušava riješiti samo prostor za testiranje pogona koji se trenutno ne rješava.

KUnit rješenje za Linux testiranje 

KUnit rješava problem da biste mogli pokretati testove bez potrebe za virtualnom mašinom ili stvarnim hardverom kao što su ARM, x86, X64 između ostalog.

Međutim, za razliku od drugih arhitektura, on je kompajliran u zaseban program koji se može izvoditi kao i bilo koji drugi program direktno u okviru operativnog sistema domaćina; Da budemo jasni, ne treba nikakvu podršku za virtualizaciju; To je samo redovna emisija.

KUnit je brz. Ne računajući vrijeme kompajliranja, od izvršenja do završetka, KUnit može pokrenuti nekoliko desetina testova za samo 10-20 sekundi.

Nekim se ovo možda ne čini veliko, ali posedovanje tako brzih i lakih testova u osnovi mijenja način gdje se prvo vrši testiranje, pa čak i pisanje koda.

Izvan KUnit-a, trenutno nema dostupnih test okvira za kernel koji ne zahtijevaju instaliranje kernela na test mašinu ili VM i svi zahtijevaju da se testovi upišu u korisnički prostor pokrenut u jezgri; Ovo vrijedi za Autotest i kselftest, diskvalificirajući bilo kojeg od njih da se smatra okvirom za jedinično testiranje.


Ostavite komentar

Vaša e-mail adresa neće biti objavljena. Obavezna polja su označena sa *

*

*

  1. Za podatke odgovoran: Miguel Ángel Gatón
  2. Svrha podataka: Kontrola neželjene pošte, upravljanje komentarima.
  3. Legitimacija: Vaš pristanak
  4. Komunikacija podataka: Podaci se neće dostavljati trećim stranama, osim po zakonskoj obavezi.
  5. Pohrana podataka: Baza podataka koju hostuje Occentus Networks (EU)
  6. Prava: U bilo kojem trenutku možete ograničiti, oporaviti i izbrisati svoje podatke.