Este es un proyecto de Automatización que utiliza Serenity BDD y Rest Assured para la creación de un framework de automatización que permita probar la API RESTFUL - BOOKER
Este proyecto ha sido desarrollado por Camila Dimas para mejorar el desarrollo en pruebas avanzadas de api automation.
- Name:
Camila Dimas
- Country:
Colombia
- City:
Bogotá
- LinkedIn: https://www.linkedin.com/in/camiladimas/
Este proyecto utiliza los siguientes lenguajes y frameworks:
-
Serenity BDD como framework de pruebas automatizadas.
-
Rest Assured como framework para probar y validar servicios REST en Java.
-
Cucumber como software de testing BDD que permite elaborar pruebas a partir de AC.
-
Gson como una biblioteca para convertir objetos Java a JSON (serialización) y JSON a objetos Java (deserialización)
-
Jayway JsonPath como forma estandarizada para consultar elementos de un objeto JSON por medio de expresiones.
-
Java 17 como lenguaje de programación.
-
Screen Play como el patrón de diseño.
-
Gradle como herramienta de compilación.
- Descargar la última versión estable de Java JDK aquí
- Instalar git desde aquí
- Instalar Gradle Buil Tool desde aquí
🗒️ Nota: build.gradle
tiene toda la configuración del proyecto instalada, ejecutar el siguiente comando para
iniciar todas las tareas (Incluidos los test).
👀 Adicional en su IDE de preferencia deberá tener instalados los siguientes plugins:
- JUnit
- Cucumber for Java
- Gherkin
- Lombok
Con GitHub Actions, puedes crear flujos de trabajo de integración continua (IC) directamente en tu repositorio de GitHub.
Para este proyecto se hace uso de GitHUb Actions como herramienta para la integración continua del framework de automatización desarrollado.
La ruta del pipeline se encuentra en: .github/workflows/automated-testing-integration.yml
develop | status |
---|---|
Pruebas de integración |
⏱️ Ejecución automatizada:
El pipepile se ejecutará periódicamente de forma automática por medio la siguiente 'cron schedule expression':
on:
schedule:
- cron: "00 13 * * TUE"
📄️ Generando los reportes de prueba:
Con la ejecución del pipepile se generará un artefacto testing-reports
donde se alojarán los reportes con los
resultados de esa ejecución realizada.
Test diseñados para validar los escenarios Happy Paths 😃
✨ FEATURE: Booking | Confirmar funcionamiento de la api
- [YP-001] Confirmar si la api está en funcionamiento
✨ FEATURE: Booking | Generar token de autenticación
- [YP-002] Validar la creación de token de autenticación
✨ FEATURE: Booking | Crear una reserva
- [YP-003] Validar la creación de una nueva reserva
✨ FEATURE: Booking | Consultar una reserva
- [YP-004] Validar que se pueda consultar una reserva por su BookingId
- [YP-005] Validar que se puedan consultar todas las reservas existentes
- [YP-006] Validar que se pueda consultar una reserva por los nombres del cliente
- [YP-007] Validar que se pueda consultar una reserva por un rango de fechas específicas
- [YP-008] Ver todos los ID's de las reservas consultando por fechas específicas
✨ FEATURE: Booking | Actualizar una reserva
- [YP-009] Validar la actualización de una reserva actual
- [YP-010] Validar la actualización parcial una reserva actual
✨ FEATURE: Booking | Eliminar una reserva
- [YP-011] Validar la eliminación de una reserva actual
Test diseñados para validar los escenarios UNHappy Paths 🤡
✨ FEATURE: UnHappy Paths | Validar que no se puedan crear/consultar/actualizar/eliminar reservas
- [YP-012] Validar que no se pueda crear un reserva al no enviar un campo obligatorio
- [YP-013] Validar que no se pueda consultar una reserva eliminada
- [YP-014] Validar que no se pueda actualizar una reserva eliminada
- [YP-015] Validar que no se pueda eliminar una reserva sin estar autenticado
El proyecto tiene scripts de compilación para Gradle y sigue la estructura la siguiente estructura basada en el patrón de diseño de Screenplay:
src
+ main | Source main
+ test |
+ java | Test runners and supporting code
+ org.api.testing.demo | Package base
+ assertions | Assertions of the test
+ interactions | Simple interaction class for REST requests.
+ model | DTOs, Pojos, Builders, etc ...
+ questions | Different types of test validation questions
+ runners | Responsible for executing feature scenario
+ steps | Sets of test steps
+ {feature_name} | Feature name
+ booking | Utility class for definition steps
+ hooks | Definition of Hooks
+ tasks | High-level actions that define a set of actor interactions
+ utils | General utility class
+ resources |
+ features |
feature files+ {booking} | Feature folder specific
{feature_name}.feature
| Features name
+ serenity.conf | Config file for Serenity
+ logback-test.xml | Config logs file
+ serenity.properties | General properties Serenity
- Descarga el proyecto desde GitHub
- Opción 1 (HTTPS):
https://github.com/CAMIDIMAS18/api-automation-solution-reto-qa.git
- Opción 2 (SSH):
git@github.com:CAMIDIMAS18/api-automation-solution-reto-qa.git
- Opción 3: Descárgalo como archivo Zip y extráelo
- Opción 1 (HTTPS):
- CD en la carpeta
api-automation-solution-reto-qa > serenity-restful-booker-reto
. - Configurar Gradle
- Ejecute el siguiente comando en el terminal:
./gradlew build
.
- Ejecute el siguiente comando en el terminal:
-
Ejecutar las pruebas en el proyecto
- Opción 1: ejecutar
./gradlew clean test aggregate
en la ruta del proyecto o puede hacerlo por medio de este comando:
gradle clean test --no-build-cache -Denvironment=dev -Dcucumber.filter.tags="@integrationTest"
- Opción 1: ejecutar
- Opción 2: Ir a las clases de la carpeta runners
src/test/java/org/api/testing/demo/runners
y ejecutar cada Runner.
El informe al detalle con los pasos y resultados de las pruebas que se registrará en la ruta:
target/site/serenity/index.html
.
Adicional se genera un reporte single page si se desea una revisión de alto nivel sobre los resultados de los test, el
cual se registrará en la ruta:
target/site/serenity/serenity-summary.html
.
Este comando permitirá generar ambos reportes:
./gradlew reports