01 - Introducción al Testing
El testing de software es el proceso de verificar que una aplicación funcione de acuerdo con los requisitos establecidos y que su comportamiento sea el esperado en diferentes escenarios.
No se trata solo de encontrar errores, sino también de aumentar la confianza en la calidad del software y asegurar su mantenibilidad.
Objetivos principales del testing:
- Detectar y prevenir defectos lo antes posible.
- Garantizar la calidad del código y del producto final.
- Facilitar el mantenimiento y la evolución del software.
- Servir como documentación viva del comportamiento del sistema.
Importancia del Testing en Java
En proyectos de Java, que suelen ser grandes y de larga duración, el testing cobra un papel esencial. Algunas ventajas clave:
- Reducción de costes: un error detectado en producción cuesta mucho más que uno detectado en la fase de desarrollo.
- Confianza en el código: permite refactorizar y añadir nuevas funcionalidades sin miedo a romper lo existente.
- Automatización: las pruebas pueden ejecutarse de forma automática en cada compilación o despliegue (CI/CD).
- Mejores prácticas de desarrollo: promueve un diseño más modular, desacoplado y fácil de probar.
Tipos de pruebas más comunes en Java
- Pruebas unitarias: verifican el comportamiento de una unidad de código (normalmente un método o clase).
- Pruebas de integración: comprueban la interacción entre distintos módulos del sistema.
- Pruebas de aceptación/funcionales: validan que el sistema cumple con los requisitos funcionales del cliente.
En este curso/noteo nos centraremos especialmente en pruebas unitarias y en cómo hacerlas efectivas.
Herramientas principales
JUnit
JUnit es el framework estándar de testing en Java. Con JUnit podremos:
- Escribir pruebas unitarias de forma sencilla.
- Ejecutar pruebas automáticamente.
- Validar resultados mediante aserciones.
- Integrarlo con herramientas de construcción (Maven, Gradle) y CI/CD.
Actualmente, la versión más utilizada es JUnit 5 (Jupiter), que trae anotaciones modernas como @Test, @BeforeEach, @AfterEach, entre otras.
Mockito
Mockito es el framework más popular de mocking en Java. Permite, entre otras cosas:
- Crear objetos simulados (mocks) para reemplazar dependencias reales en las pruebas.
- Definir comportamientos esperados en esos mocks.
- Verificar la interacción entre los objetos de nuestro sistema.
Mockito es especialmente útil en pruebas unitarias donde no queremos depender de bases de datos, servicios externos o lógica compleja.