KUnit: un nuevo marco de prueba de unidades para el Kernel de Linux

Tux

El martes pasado, el ingeniero de Google, Brendan Higgins, anunció un conjunto experimental de 31 parches al presentar KUnit como un nuevo marco de prueba de unidades del Kernel de Linux para ayudar a preservar y mejorar la calidad del código del Kernel.

Este conjunto de parches propone que KUnit es un framework de pruebas para el Kernel de Linux.

A diferencia de Autotest y kselftest, KUnit es un verdadero marco de pruebas que no requiere de la instalación del Kernel en una máquina de prueba o en una máquina virtual y además no requiere que las pruebas se escriban en el espacio de usuario que se ejecuta en un host.

Sobre KUnit

KUnit es un marco de prueba y simulación de unidades ligeras diseñado para el Kernel de Linux. Las pruebas unitarias necesariamente tienen una granularidad más fina, son capaces de probar todas las rutas de código resolviendo fácilmente el problema clásico de dificultad para ejercitar el código de manejo de errores.

KUnit está muy inspirado en JUnit, Python ‘s unittest.mock y Googletest / Googlemock para C ++ . KUnit proporciona facilidades para definir casos de pruebas unitarias, agrupar casos de pruebas relacionados en suites de pruebas, proporcionar una infraestructura común para ejecutar pruebas, simulacros, espionaje y mucho más.

Tal y como lo describe Brendan Higgins:

Se supone que una prueba de unidad prueba una sola unidad de código de forma aislada, de ahí el nombre. No debe haber dependencias fuera del control de la prueba; esto significa que no hay dependencias externas, lo que hace que los pedidos de pruebas De magnitudes más rápidas.

Asimismo, dado que no existen dependencias externas, no hay aros para saltar para ejecutar las pruebas. Además, este hace que las pruebas unitarias sean deterministas: una prueba unitaria fallida siempre indica un problema.

Finalmente, debido a que las pruebas unitarias necesariamente tienen una granularidad más fina, Son capaces de probar todas las rutas de código resolviendo fácilmente el problema clásico.

De dificultad para ejercitar el código de manejo de errores.

Test Kernel

Brenden escribe:

“Además, KUnit es rápido: desde la invocación hasta la finalización, KUnit puede ejecutar varias docenas de pruebas en menos de un segundo. Actualmente, todo el conjunto de pruebas de KUnit para KUnit se ejecuta en menos de un segundo desde la invocación inicial (excluido el tiempo de compilación) «.

Cuando se le preguntó si KUnit reemplazaría los otros marcos de prueba para el Kernel de Linux, Brenden lo negó, diciendo:

“La mayoría de las pruebas existentes para el Kernel de Linux son pruebas de extremo a extremo, que tienen su lugar. Un sistema bien probado tiene muchas pruebas unitarias, un número razonable de pruebas de integración y algunas pruebas de extremo a extremo.

KUnit solo está tratando de abordar el espacio de prueba de la unidad que actualmente no se está abordando «.

KUnit una solución para las pruebas en Linux 

KUnit resuelve el problema de poder ejecutar pruebas sin necesidad de una máquina virtual o hardware real como ARM, x86, X64 entre otras.

Sin embargo, a diferencia de otras arquitecturas, se compila en un programa independiente que puede ejecutarse como cualquier otro programa directamente dentro de un sistema operativo host; para ser claros, no requiere ningún soporte de virtualización; Es solo un programa regular.

KUnit es rápido. Excluyendo el tiempo de compilación, desde la ejecución hasta la finalización, KUnit puede ejecutar varias docenas de pruebas en solo 10 a 20 segundos.

Esto podría no parecer un gran problema para algunas personas, pero tener pruebas tan rápidas y fáciles de ejecutar cambia fundamentalmente la forma en que se realiza la prueba e incluso la escritura de código en primer lugar.

Fuera de KUnit, actualmente no hay marcos de prueba disponibles para el kernel que no requieran la instalación del kernel en una máquina de prueba o en una VM y todos requieren que las pruebas se escriban en el espacio de usuario que se ejecuta en el kernel; Esto es cierto para Autotest, y kselftest, descalificando a cualquiera de ellos de ser considerados marcos de prueba de unidad.


Deja tu comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*

*

  1. Responsable de los datos: Miguel Ángel Gatón
  2. Finalidad de los datos: Controlar el SPAM, gestión de comentarios.
  3. Legitimación: Tu consentimiento
  4. Comunicación de los datos: No se comunicarán los datos a terceros salvo por obligación legal.
  5. Almacenamiento de los datos: Base de datos alojada en Occentus Networks (UE)
  6. Derechos: En cualquier momento puedes limitar, recuperar y borrar tu información.