Skip to content

javiertuya/samples-test-spring

Repository files navigation

Build Status Quality Gate Status Javadoc

samples-test-spring

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

Contenido

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):
    • 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)

Requisitos e Instalación

  • 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/**
  • 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)

Reports

La instalacion anterior compilará, ejecutará pruebas y dispondrá de los reports en target:

  • reports/surefire.html: report estandar de las pruebas unitarias
  • site/junit*: report consolidado de todas las pruebas con el formato que genera junit
  • site/screenshot: Imagenes tomadas durante las pruebas web con Selenium
  • site/jacoco: reports de cobertura de código.
  • reports/cucumber*.html: reports estandar de cucumber
  • zerocode-junit*.html: reports estandar de zerocode
  • reports/testapidocs/index.html: javadoc del proyecto (generados en la fase package)

About

Ejemplos de automatización de pruebas con Spring Boot

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Packages

 
 
 

Contributors