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 4 con JUnit 6:
- Pruebas unitarias de acceso a la base de datos
- Pruebas parametrizadas (JUnit 6 y Junit 4 con JUnitParams)
- Utilización de mocks
- Pruebas de servicios rest y controladores (MockMvc)
- Pruebas de un interfaz de usuario web con Selenium, Selema, Page Objects y Page Factory
- Pruebas del API con Zerocode
- Automatización de pruebas BDD con Cucumber (unitarias y de interfaz de usuario)
- Estructura de un proyecto maven y configuración del pom.xml:
- Pruebas unitarias (ut), de integración (it) y sistema (st)
- Generación de reports estandar (Surefire)
- Generación de reports de cobertura de código (JaCoCo)
- Reports de 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 Selenium Dynamic Grid como servicio de navegadores y grabación de video
- 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 (usando Docker Hardened Images):
- En diferentes entornos:
- rama main: producción
- otras ramas: preproducción/integración
- NOTA: el primer acceso a estos despliegues puede tardar bastantes segundos hasta que el container esté listo
- Prueba Post-deploy de sistema (st) con selenium y zerocode
- En diferentes entornos:
- Ejemplo de despliegue en Heroku (obsoleto)
- 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
- Todas las pruebas y javadoc:
mvn install - Solo javadoc:
mvn package -DskipTests=true - Solo pruebas unitarias (ut):
mvn test -Dtest=**/ut/** - Solo pruebas de integración (it) web con Selenium:
mvn test -Dtest=**/it/** - Solo pruebas de sistema (st) para postdeploy:
- Arrancar el servidor en
src/main/java mvn test -Dtest=**/st/**
- Arrancar el servidor en
- 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 test
- Para ejecutar desde el entorno (run as JUnit Test)
La instalacion anterior compilará, ejecutará pruebas y dispondrá de los reports en target:
reports/surefire.html: report estandar de las pruebas unitariassite/junit*: report consolidado de todas las pruebas con el formato que genera junitsite/screenshot: Imagenes tomadas durante las pruebas web con Seleniumsite/jacoco: reports de cobertura de código.reports/cucumber*.html: reports estandar de cucumberzerocode-junit*.html: reports estandar de zerocodereports/testapidocs/index.html: javadoc del proyecto (generados en la fasepackage)