KUnit : Linux 커널을위한 새로운 단위 테스트 프레임 워크

턱시도

지난 화요일, Google 엔지니어 Brendan Higgins는 KUnit을 소개 할 때 31 개의 실험적인 패치 세트를 발표했습니다. 커널 코드의 품질을 보존하고 개선하는 데 도움이되는 새로운 Linux 커널 단위 테스트 프레임 워크입니다.

이 패치 세트 KUnit이 Linux 커널 용 테스트 프레임 워크라고 제안합니다.

Autotest 및 kselftest와 달리 KUnit은 테스트 머신이나 가상 머신에 커널을 설치할 필요가없는 진정한 테스트 프레임 워크입니다. 또한 호스트에서 실행되는 사용자 공간에 테스트를 기록 할 필요가 없습니다.

KUnit 소개

KUnit은 Linux 커널 용으로 설계된 경량 드라이브 시뮬레이션 및 테스트 프레임 워크입니다.. 단위 테스트는 필연적으로 세분화되어 있으며 오류 처리 코드를 실행하는 데 어려움이있는 고전적인 문제를 쉽게 해결하기 위해 모든 코드 경로를 테스트 할 수 있습니다.

KUnit JUnit, Python의 unittest.mock 및 Googletest / Googlemock에서 매우 영감을 받았습니다. C ++의 경우. KUnit은 단위 테스트 케이스를 정의하고, 관련 테스트 케이스를 테스트 스위트로 그룹화하고, 테스트, 목업, 감시 등을 실행하기위한 공통 인프라를 제공하는 기능을 제공합니다.

Brendan Higgins는 다음과 같이 설명합니다.

단위 테스트는 단일 코드 단위를 격리하여 테스트해야하므로 이름이됩니다. 테스트의 제어를 벗어나는 종속성이 없어야합니다. 즉, 외부 종속성이 없으므로 규모에 대한 주문 테스트가 더 빨라집니다.

또한 외부 종속성이 없기 때문에 테스트를 실행하기 위해 이동할 수있는 골칫거리가 없습니다. 또한 단위 테스트를 결정적으로 만듭니다. 실패한 단위 테스트는 항상 문제를 나타냅니다.

마지막으로 단위 테스트는 반드시 더 세분화되어 있기 때문에 모든 코드 경로를 테스트하여 고전적인 문제를 쉽게 해결할 수 있습니다.

오류 처리 코드를 실행하는 데 어려움이 있습니다.

커널 테스트

Brende는 다음과 같이 씁니다.

“또한 KUnit은 빠릅니다. 호출부터 완료까지 KUnit은 XNUMX 초 이내에 수십 개의 테스트를 실행할 수 있습니다. 현재 KUnit의 전체 KUnit 테스트 스위트는 초기 호출 (컴파일 시간 제외)«.

KUnit이 Linux 커널의 다른 테스트 프레임 워크를 대체 할 것인지 묻는 질문에 Brenden은 다음과 같이 거부했습니다.

“리눅스 커널에 대한 대부분의 기존 테스트는 그 자리를 차지하는 종단 간 테스트입니다. 잘 테스트 된 시스템에는 많은 단위 테스트, 합리적인 수의 통합 테스트 및 일부 종단 간 테스트가 있습니다.

KUnit은 현재 주소가 지정되지 않은 드라이브 테스트 공간에만 주소를 지정하려고합니다.

Linux 테스트를위한 솔루션 인 KUnit 

KUnit이 문제를 해결합니다 가상 머신이나 ARM, x86, X64와 같은 실제 하드웨어없이 테스트를 실행할 수 있습니다.

그러나 다른 아키텍처와 달리 호스트 운영 체제 내에서 직접 다른 프로그램처럼 실행할 수있는 별도의 프로그램으로 컴파일됩니다. 분명히 말하면 가상화 지원이 필요하지 않습니다. 그것은 단지 정규 쇼입니다.

KUnit은 빠릅니다. 실행에서 완료까지 컴파일 시간을 제외하고 KUnit은 10 ~ 20 초 만에 수십 개의 테스트를 실행할 수 있습니다.

이것은 어떤 사람들에게는 큰 문제처럼 보이지 않을 수 있지만 테스트를 너무 빠르고 쉽게 실행하면 근본적으로 방식이 바뀝니다. 테스트 및 코드 작성이 먼저 수행됩니다.

KUnit 외부에서 현재 커널을 테스트 시스템 또는 VM에 설치할 필요가없는 커널에 사용할 수있는 테스트 프레임 워크가 없습니다. 그리고 그것들은 모두 커널에서 실행되는 사용자 공간에 쓰여질 테스트를 요구합니다. 이는 Autotest 및 kselftest의 경우에 해당되며 둘 중 하나가 단위 테스트 프레임 워크로 간주되지 않습니다.


코멘트를 남겨주세요

귀하의 이메일 주소는 공개되지 않습니다. 필수 필드가 표시되어 있습니다 *

*

*

  1. 데이터 책임자 : Miguel Ángel Gatón
  2. 데이터의 목적 : 스팸 제어, 댓글 관리.
  3. 합법성 : 귀하의 동의
  4. 데이터 전달 : 법적 의무에 의한 경우를 제외하고 데이터는 제 XNUMX 자에게 전달되지 않습니다.
  5. 데이터 저장소 : Occentus Networks (EU)에서 호스팅하는 데이터베이스
  6. 권리 : 귀하는 언제든지 귀하의 정보를 제한, 복구 및 삭제할 수 있습니다.