KUnit: et nytt enhetstestingsrammeverk for Linux-kjernen

Tux

Sist tirsdag, Googles ingeniør Brendan Higgins kunngjorde et eksperimentelt sett med 31 oppdateringer da han introduserte KUnit som et nytt Linux-rammeverk for testing av kjerneenheter for å bevare og forbedre kvaliteten på kjernekoden.

Dette settet med lapper foreslår at KUnit er et testrammeverk for Linux-kjernen.

I motsetning til Autotest og kselftest, KUnit er et ekte testrammeverk som ikke krever installasjon av kjernen på en testmaskin eller en virtuell maskin og det krever heller ikke at det skrives tester til brukerområdet som kjører på en vert.

Om KUnit

KUnit er et lett rammesimulerings- og testrammeverk designet for Linux-kjernen. Enhetstester har nødvendigvis en finere granularitet, de er i stand til å teste alle kodebaner som lett løser det klassiske problemet med problemer med å utøve feilhåndteringskode.

KUnit det er veldig inspirert av JUnit, Pythons unittest.mock og Googletest / Googlemock for C ++. KUnit tilbyr fasiliteter for å definere enhetstestsaker, gruppere relaterte testsaker i testsuiter, tilby en felles infrastruktur for å kjøre tester, mockups, spionasje og mye mer.

Som Brendan Higgins beskriver det:

En enhetstest er ment å teste en enkelt kodeenhet isolert, derav navnet. Det skal ikke være noen avhengigheter utenfor testens kontroll; Dette betyr at det ikke er noen eksterne avhengigheter, noe som gjør bestillingstester for størrelser raskere.

Siden det ikke er noen eksterne avhengigheter, er det ingen ringer å hoppe til for å kjøre testene. Det gjør også enhetstester deterministiske - en mislykket enhetstest indikerer alltid et problem.

Til slutt, fordi enhetstester nødvendigvis har finere granularitet, er de i stand til å teste alle kodestier som enkelt løser det klassiske problemet.

Vanskeligheter med å utøve feilhåndteringskoden.

Test kjernen

Brenden skriver:

I tillegg er KUnit raskt: fra påkallelse til fullføring kan KUnit kjøre flere dusin tester på mindre enn et sekund. Foreløpig kjører hele KUnit-testpakken for KUnit på mindre enn et sekund fra første påkallelse (kompileringstid ekskludert) «.

På spørsmål om KUnit ville erstatte de andre testrammene for Linux-kjernen, nektet Brenden det og sa:

“De fleste av de eksisterende testene for Linux-kjernen er end-to-end-tester, som har sin plass. Et godt testet system har mange enhetstester, et rimelig antall integrasjonstester og noen end-to-end-tester.

KUnit prøver bare å adressere stasjonstestområdet som for øyeblikket ikke adresseres.

KUnit en løsning for Linux-testing 

KUnit løser problemet å kunne kjøre tester uten behov for en virtuell maskin eller ekte maskinvare som ARM, x86, X64 blant andre.

Imidlertid, i motsetning til andre arkitekturer, er det samlet i et eget program som kan kjøre som alle andre programmer direkte i et vertsoperativsystem; For å være klar, krever det ikke støtte for virtualisering; Det er bare et vanlig show.

KUnit er rask. Unntatt kompileringstid, fra utførelse til ferdigstillelse, kan KUnit kjøre flere titalls tester på bare 10-20 sekunder.

Dette kan ikke virke som en stor sak for noen mennesker, men å ha tester så raske og enkle å kjøre, endrer grunnleggende veien hvor testing og til og med kodeskriving gjøres først.

Utenfor KUnit, det er for øyeblikket ingen testrammer tilgjengelig for kjernen som ikke krever kjerneinstallasjon på en testmaskin eller en VM og alle krever at testene skrives til brukerområdet som kjører i kjernen; Dette gjelder Autotest og kselftest, og diskvalifiserer en av dem fra å bli ansett som enhetstestrammer.


Legg igjen kommentaren

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *

*

*

  1. Ansvarlig for dataene: Miguel Ángel Gatón
  2. Formålet med dataene: Kontroller SPAM, kommentaradministrasjon.
  3. Legitimering: Ditt samtykke
  4. Kommunikasjon av dataene: Dataene vil ikke bli kommunisert til tredjeparter bortsett fra ved juridisk forpliktelse.
  5. Datalagring: Database vert for Occentus Networks (EU)
  6. Rettigheter: Når som helst kan du begrense, gjenopprette og slette informasjonen din.