Este proyecto es utilizado a modo de ejemplo para ilustrar algunos aspectos del desarrollo y automatización de pruebas para las asignaturas relacionadas con ingenieria del software, sistemas de información y pruebas de softare.
Descargar la última versión publicada - Ver más detalles en el javadoc
Este proyecto ilustra:
- Diferentes configuraciones para la automatización de pruebas de aplicaciones Spring Boot (v3):
- Pruebas unitarias con JUnit
- Pruebas parametrizadas con JUnitParams
- Utilización de mocks
- Pruebas de servicios rest y controladores (MockMvc)
- Pruebas de un interfaz de usuario web con Selenium
- Uso de lombok para generar automaticamente getters y setters de entidades y DTOs
- Automatización de pruebas BDD con JBehave (unitarias y de interfaz de usuario)
- Estructura de un proyecto maven y configuración el pom.xml
- Separación de las pruebas ut e it
- Generación de reports estandar (Surefire y Failsafe)
- Generación de reports de cobertura de código (JaCoCo)
- Otros reports (resultados de test en formato JUnit html)
- Integración continua con GitHub Actions (proceso completo CI/CD):
- Estructuración del worflow con varios jobs que se comunican mediante artefactos
- Publicación de resultados de test que fallan
- Configuración de selenoid como servicio de navegadores, incluyendo grabación de video de las sesiones
- Análisis estático de calidad del código (SonarQube alojado en sonarcloud.io)
- Análisis estático de vulnerabilidad de dependencias (OWASP Dependench Check)
- Despliegue de la aplicación en Azure:
- En diferentes entornos: producción y preproducción/integración
- Post-deploy test
- Ejemplo de despliegue en Heroku (desactivado)
- Integración continua con Jenkins (para ejecución on-premise):
- Fichero Jenkinsfile con la configuración de la pipeline
- Incluye acciones análogas a las usadas en GitHub Actions (excepto despliegue)
- Descargar la última versión y disponer al menos de Java 17 JDK
- Opción 1: Apache Maven:
- Asegurarse de que JAVA_HOME apunta a un JDK y no JRE
- Ejecutar
mvn install
- (solo pruebas unitarias con
test
, todas las pruebas converify
)
- Opción 2: Eclipse con M2Eclipse instalado (distribuciones como Oxigen IDE for Java EE Developers ya lo incluyen).
Desde la raiz del proyecto:
- Asegurarse de que se tiene instalado Lombok. Ver: https://projectlombok.org/setup/eclipse)
- Asegurarse de que se tiene configurado un JDK: Desde build path, editar JRE System Library y en Environment comprobar que JavaSE-17 apunta a un JDK en vez de un JRE
- Maven->Update Project
- Run As->Maven install
- Para ejecutar desde el entorno (run as JUnit Test)
Última configuración con la que se ha probado: Windows 10/Ubuntu 20, Eclipse Temurin 17, Apache Maven 3.9.3 o Eclipse IDE for Java EE Developers (eclipse-jee-2023-06-R), Base de datos embebida H2. El resto de dependencias son las especificadas en pom.xml.
La instalacion anterior compilará, ejecutará pruebas y dispondrá de los reports en target/site
:
- surefire-report.html: report de las pruebas unitarias (ut)
- failsafe-report.html: report de las pruebas del interfaz de usuario (it)
- junit*: report consolidado de todas las pruebas con el formato que genera junit
- jacoco, jacoco-it: reports de cobertura de código. separado para ut e it
- reports estandar de jbehave en
target/jbehave
- testapidocs/index.html: javadoc del proyecto (generados en la fase
install
)