Skip to content

Commit

Permalink
Final review
Browse files Browse the repository at this point in the history
  • Loading branch information
javiertuya committed Nov 20, 2021
1 parent 359db8b commit 5d02be6
Show file tree
Hide file tree
Showing 5 changed files with 31 additions and 78 deletions.
24 changes: 12 additions & 12 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,29 +3,29 @@
## Git Workflow

This project follows the Git Flow Worflow without specific relase branches (in principle), where:
- `develop`: Is the default branch in GitHub. All new features and pull requests are merged into this branch
- `main`: Used for release only
- `develop`: Is the default branch in GitHub. All new features and pull requests are merged into this branch.
- `main`: Used for release deploy only.

## CI/CD Workflow

After a push in any branch, the following jobs are executed:
- `test`: Build and test the applciation(tests that require a broser are separated in src/it and executed in the integration-test maven phase).
Artifact `test-reports` contains al surefire, failsafe, junit reports, screenshots and recordings
After a push to any branch, the following jobs are executed:
- `test`: Build and test the application (tests that require a browser are separated in src/it and executed in the integration-test maven phase).
Artifact `test-reports` contains all surefire, failsafe and junit reports as well as screenshots and recordings.
- Static tests
- `sonarqube`: SonarQube analysis at [sonarcloud.io](https://sonarcloud.io/project/overview?id=my%3Asamples-test-spring)
- `dependency-check`: OWASP dependency check. Artifact `dependency-check` contains the generated reports
- `sonarqube`: SonarQube analysis is sent to [sonarcloud.io](https://sonarcloud.io/project/overview?id=my:samples-test-spring).
- `dependency-check`: OWASP dependency check. Artifact `dependency-check` contains the generated reports.
- `deploy`: Depoloys the application to Heroku and runs post-deploy smoke tests. Artifact `deploy-test-reports` contains the results.
Deployment is made to one of the following environments:
- Producction ([samples-test-spring-main](https://samples-test-spring-main.herokuapp.com/)): Deployed after each push to main branch.
- Pre-Producction/Integration ([samples-test-spring-develop](https://samples-test-spring-develop.herokuapp.com/)): Deployed after each push to any other branch branch.
- Production ([samples-test-spring-main](https://samples-test-spring-main.herokuapp.com/)): Deployed after each push to main branch.
- Pre-Producction/Integration ([samples-test-spring-develop](https://samples-test-spring-develop.herokuapp.com/)): Deployed after each push to any other branch.

## Pull requests

- Before creating a new pull request:
- Ensure you have an updated version of the `develop` branch. Only fast-forward merges are allowed.
- Ensure that each PR will submit only one or a few commits, and the comment is appropriate. Squash your local branch if needed.
- Ensure that each PR will submit only one or a few significant commits, and the comment is appropriate. Squash your local branch if needed.
- Although the documentation is still written in Spanish, all PRs and commits should be written in english.
- Each pull request must pass the the following checks before merge to ensure:
- All dynamic and static tests are passing
- All dynamic and static tests are passing.
- Deployment succeded.
- See the CI/CD worflow
- See the CI/CD worflow section.
25 changes: 16 additions & 9 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,19 +17,26 @@ Este proyecto ilustra:
- Utilización de mocks
- Pruebas de servicios rest y controladores (MockMvc)
- Pruebas de un interfaz de usuario web con Selenium
- Automatización de pruebas BDD con JBehave (unitarias y de interfaz de usuario)
- 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)
- Otors reports (resultados de test en formato JUnit html)
- Proceso completo de integración continua con GigHub Actions:
- 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
- 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](https://sonarcloud.io/organizations/giis/projects))
- Análisis estático de calidad del código
(SonarQube alojado en [sonarcloud.io](https://sonarcloud.io/project/overview?id=my:samples-test-spring))
- Análisis estático de vulnerabilidad de dependencias (OWASP Dependench Check)
- Despliegue de la aplicación (producción y preproducción/integración) y post-deploy test
- Despliegue de la aplicación en Heroku:
- En diferentes entornos: [producción](https://samples-test-spring-main.herokuapp.com/)
y [preproducción/integración](https://samples-test-spring-develop.herokuapp.com/)
- Post-deploy test
- Integración continua con Jenkins (para ejecución on-premise):
- Fichero Jenkinsfile con la configuración de la pipeline
- Incluye las mismas acciones que con GitHub Actions (excepto despliegue)

## Requisitos e Instalación

Expand All @@ -49,14 +56,14 @@ Desde la raiz del proyecto:

Configuración con la que se ha probado: Windows 10/Ubuntu 18. Apache Maven 3.6.3 o Eclipse IDE for Java EE Developers (jee-2019-03-R)
con plugin Spring Tools 3.
Spring Boot 2.0.4. Base de datos embebida H2. El resto de dependencias son las especificadas en pom.xml.
Spring Boot 2.4.13. Base de datos embebida H2. El resto de dependencias son las especificadas en pom.xml.

## Reports
La instalacion anterior compilará, ejecutará pruebas y dispondrá de los reports en `target/site`:

- apidocs/index.html: javadoc del proyecto
- 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-ut, jacoco-it: reports de cobertura de código consolidado, y separado para ut e it
- reports estandar de jbehave en `target`
- jacoco, jacoco-it: reports de cobertura de código. separado para ut e it
- reports estandar de jbehave en `target/jbehave`
- apidocs/index.html: javadoc del proyecto (generados en la fase `install`)
File renamed without changes.
2 changes: 1 addition & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -431,7 +431,7 @@
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>3.3.1</version>
<version>3.0.1</version>
<configuration>
<overview>${basedir}/src/main/java/overview.html</overview>
<sourcepath>${basedir}/src/main/java;${basedir}/src/test/java;${basedir}/src/it/java</sourcepath>
Expand Down
58 changes: 2 additions & 56 deletions src/main/java/overview.html
Original file line number Diff line number Diff line change
Expand Up @@ -5,62 +5,8 @@

<h2>Contenido</h2>
<p>
Permite ilustrar diferentes configuraciones para la automatización de pruebas de aplicaciones Spring Boot:
Permite ilustrar diferentes configuraciones para la automatización de pruebas de aplicaciones Spring Boot.
Ver mas informacion en GitHub: https://github.com/javiertuya/samples-test-spring/blob/main/README.md
</p>
<ul>
<li>Pruebas unitarias con JUnit</li>
<li>Utilización de mocks</li>
<li>Pruebas de servicios rest</li>
<li>Pruebas de un interfaz de usuario web con Selenium</li>
<li>Automatización de pruebas BDD con JBehave (unitarias y de interfaz de usuario)</li>
<li>Uso de lombok para generar automaticamente getters y setters de entidades y DTOs</li>
</ul>

<p>La estructura es la estándar de maven:</p>
<ul>
<li>src/main/java: Codigo fuente de aplicación</li>
<li>src/test/java: Pruebas unitarias</li>
<li>src/it/java: Pruebas de integración con el interfaz de usuario</li>
<li>target: Generado con el codigo objeto y reports
</ul>

<h2>Requisitos e Instalación</h2>
<ul>
<li>Java 8 JDK</li>
<li>Opción 1: Apache Maven:
<ul>
<li>Asegurarse de que JAVA_HOME apunta a un JDK y no JRE</li>
<li>Ejecutar <code>mvn install</code></li>
<li>(solo pruebas unitarias con <code>test</code>, todas las pruebas con <code>verify</code>)</li>
</ul>
</li>
<li>Opción 2: Eclipse con M2Eclipse instalado (algunas distribuciones como Oxigen IDE for Java EE Developers ya lo incluyen).
Desde la raiz del proyecto:
<ul>
<li>Asegurarse de que esta configurado JDK: Desde build path, editar JRE System Library y en Environment
comprobar que JavaSE-1.8 apunta a un JDK en vez de un JRE</li>
<li><em>Maven->Update Project</em></li>
<li><em>Run As->Maven install</em></li>
<li>Para ejecutar desde el entorno (run as JUnit Test o run as Spring Boot App)
se requiere la instalacion de Lombok. Ver: https://projectlombok.org/setup/eclipse</li>
</ul>
</li>
</ul>

<p>Configuración con la que se ha probado: Windows 10. Apache Maven 3.5.0 o Eclipse IDE for Java EE Developers (Versión Oxygen 3a)
con plugin Spring Tools 3.
Spring Boot 2.0.4. Base de datos embebida H2. El resto de dependencias son las especificadas en pom.xml.
<p>

<h2>Reports</h2>
<p>La instalacion anterior compilará, ejecutará pruebas y dispondrá de los reports en <code>target/site</code>:
<ul>
<li>apidocs/index.html: javadoc del proyecto</li>
<li>surefire-report.html: report de las pruebas unitarias (ut)</li>
<li>failsafe-report.html: report de las pruebas del interfaz de usuario (it)</li>
<li>junit*: report consolidado de todas las pruebas con el formato que genera junit</li>
<li>jacoco, jacoco-ut, jacoco-it: reports de cobertura de código consolidado, y separado para ut e it</li>
<li>reports estandar de jbehave en <code>target</code></li>
</ul>

</body>

0 comments on commit 5d02be6

Please sign in to comment.