Información general
Las pruebas de mutación evalúan la calidad de las pruebas unitarias desarrolladas. Consisten en introducir pequeños cambios artificiales (mutaciones) en el código fuente, como, por ejemplo, reemplazar “+” por “-” o eliminar una condición "if", con el objetivo de comprobar si las pruebas unitarias existentes detectan esos errores. Como resultado, las pruebas de mutación cumplen varios objetivos:
Evitar que el umbral de cobertura de pruebas unitarias se supere artificialmente mediante pruebas diseñadas únicamente para cumplir dicho umbral, garantizando así la efectividad real de las pruebas unitarias.
Optimizar el tiempo empleado por los equipos en el desarrollo de pruebas unitarias, ayudándoles a identificar situaciones en las que las pruebas están mal diseñadas o no validan todos los escenarios relevantes. De esta forma el equipo mejora sus pruebas unitarias, aprende a diseñarlas correctamente, permitiendo identificar posibles errores en fases tempranas del ciclo de desarrollo.
Durante la ejecución de pipeline de integración continua, y tras el paso de ejecutar las pruebas unitarias, se lanzan las pruebas de mutación. Estas pruebas levantan una serie de mutantes, y se vuelven a lanzar las pruebas unitarias. Si estos mutantes sobreviven (es decir, la prueba unitaria no falla), se considera que la prueba unitaria no es capaz de detectar el escenario de error causado por la mutación y, por tanto, no es completa, por lo que el equipo de desarrollo debe mejorar dicha prueba unitaria.
Las pruebas de mutación permitirán detectar pruebas mal diseñadas o implementadas, aumentando así la fiabilidad del código.
La Plataforma de CI/CD Corporativa utiliza las siguientes herramientas para implementar las pruebas de mutación en los componentes de software según su stack tecnológico:
- Pitest para java: Pitest es una herramienta de pruebas de mutación para aplicaciones en Java, La cual se caracteriza por complementar la cobertura de código con una métrica más útil, asegura que las pruebas realmente validan el comportamiento del código y detecten pruebas mal diseñadas o casos de prueba ausentes y se integra con JUnit, Maven y Gradle, por lo que es fácil de usar en proyectos Java.
- Mutpy para Python: MutPy es una herramienta de pruebas de mutación para Python. La cual se caracteriza por complementar las métricas de coberturas de código con una evaluación más profunda, ayuda a mejorar la efectividad de los tests y facilita el uso con unittest y compatible con Python 3.
- Infection para php: Infection es una herramienta de pruebas de mutación para PHP. La cual se caracteriza por que no solo mide la cobertura, sino la efectividad real de los tests, es compatible con PHPUnit y otras herramientas de testing en PHP y es fácil de integrar en proyectos existentes.
¿A quién va dirigido?
El alcance de esta herramienta se extiende a toda la ADA. Todo componente software desarrollado podrá solicitar su integración en la Plataforma CI/CD corporativa y así hacer uso de la herramienta de pruebas de mutación.
¿Cómo lo solicito?
Para solicitar el uso de la Plataforma CI/CD corporativa se debe realizar a través del siguiente servicio de NAOS:
- Operación: Realizar petición
- Servicio: DSO - Impulso DevSecOps
- Componente: Inclusión de un nuevo sistema/componente en circuito DevSecOps (CI/CD)
- Elemento: (Sin determinar)
Necesito soporte
Se brindará soporte al personal técnico TIC de la ADA mediante solicitud a través de NAOS:
- Operación: Realizar petición
- Servicio: DSO - Impulso DevSecOps
- Componente: Soporte de las herramientas de apoyo DevSecOps
- Elemento: (Sin determinar)
Reglas y pautas
Existen una serie de normas obligatorias y/o recomendadas que deben cumplir los usuarios y sistemas de información que utilicen la herramienta de pruebas de mutación de la Plataforma de CI/CD Corporativa: