KUnit: un nou cadru de testare a unității pentru kernel-ul Linux

Tux

Marțea trecuta, Inginerul Google Brendan Higgins a anunțat un set experimental de 31 de patch-uri la introducerea KUnit ca un nou cadru de testare a unității kernel Linux pentru a ajuta la păstrarea și îmbunătățirea calității codului kernelului.

Acest set de patch-uri propune ca KUnit să fie un cadru de testare pentru nucleul Linux.

Spre deosebire de Autotest și kselftest, KUnit este un adevărat cadru de testare care nu necesită instalarea nucleului pe o mașină de testat sau pe o mașină virtuală și, de asemenea, nu necesită ca testele să fie scrise în spațiul utilizatorului care rulează pe o gazdă.

Despre KUnit

KUnit este un cadru ușor de simulare și testare a unităților conceput pentru Linux Kernel. Testele unitare au în mod necesar o granularitate mai fină, sunt capabile să testeze toate căile de cod rezolvând cu ușurință problema clasică a dificultății de a exercita codul de tratare a erorilor.

KUnit este foarte inspirat de JUnit, Python's unittest.mock și Googletest / Googlemock pentru C ++. KUnit oferă facilități pentru definirea cazurilor de testare unitară, gruparea cazurilor de testare în suite de testare, furnizarea unei infrastructuri comune pentru efectuarea de teste, machete, spionaj și multe altele.

Așa cum o descrie Brendan Higgins:

Un test de unitate ar trebui să testeze o singură unitate de cod în mod izolat, de unde și numele. Nu ar trebui să existe dependențe în afara controlului testului; aceasta înseamnă că nu există dependențe externe, ceea ce face ca ordinarea testelor pentru mărimi să fie mai rapidă.

De asemenea, deoarece nu există dependențe externe, nu există cercuri la care să sară pentru a rula testele. De asemenea, face ca testele unitare să fie deterministe - un test unitar eșuat indică întotdeauna o problemă.

În cele din urmă, deoarece testele unitare au în mod necesar o granularitate mai fină, ele sunt capabile să testeze toate căile de cod rezolvând cu ușurință problema clasică.

Dificultate în exercitarea codului de tratare a erorilor.

Testează nucleul

Brende scrie:

„În plus, KUnit este rapid: de la invocare până la finalizare, KUnit poate rula câteva zeci de teste în mai puțin de o secundă. În prezent, întreaga suită de testare KUnit pentru KUnit rulează în mai puțin de o secundă de la invocarea inițială (cu excepția timpului de compilare) «.

Când a fost întrebat dacă KUnit va înlocui celelalte cadre de testare pentru kernel-ul Linux, Brenden a negat-o, spunând:

„Majoritatea testelor existente pentru kernel-ul Linux sunt teste end-to-end, care își au locul lor. Un sistem bine testat are o mulțime de teste unitare, un număr rezonabil de teste de integrare și unele teste end-to-end.

KUnit încearcă doar să abordeze spațiul de testare a unității care nu este abordat în prezent.

KUnit o soluție pentru testarea Linux 

KUnit rezolvă problema pentru a putea rula teste fără a fi nevoie de o mașină virtuală sau hardware real, cum ar fi ARM, x86, X64, printre altele.

Cu toate acestea, spre deosebire de alte arhitecturi, acesta este compilat într-un program separat care poate fi rulat ca orice alt program direct în cadrul unui sistem de operare gazdă; Pentru a fi clar, nu necesită suport pentru virtualizare; Este doar un spectacol obișnuit.

KUnit este rapid. Cu excepția timpului de compilare, de la execuție până la finalizare, KUnit poate rula câteva zeci de teste în doar 10-20 de secunde.

Acest lucru s-ar putea să nu pară o mare problemă pentru unii oameni, dar a avea teste atât de rapide și ușor de rulat schimbă fundamental modul unde testarea și chiar scrierea codurilor se fac mai întâi.

În afara KUnit, în prezent nu există cadre de testare disponibile pentru nucleu care nu necesită instalarea nucleului pe o mașină de testat sau o mașină virtuală și toate necesită ca testele să fie scrise în spațiul utilizatorului care rulează în nucleu; Acest lucru este valabil pentru Autotest și kselftest, descalificând oricare dintre ele pentru a fi considerate cadre de testare unitară.


Lasă comentariul tău

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *

*

*

  1. Responsabil pentru date: Miguel Ángel Gatón
  2. Scopul datelor: Control SPAM, gestionarea comentariilor.
  3. Legitimare: consimțământul dvs.
  4. Comunicarea datelor: datele nu vor fi comunicate terților decât prin obligație legală.
  5. Stocarea datelor: bază de date găzduită de Occentus Networks (UE)
  6. Drepturi: în orice moment vă puteți limita, recupera și șterge informațiile.