Skip to content

Commit

Permalink
Merge branch 'master' into UO289659
Browse files Browse the repository at this point in the history
  • Loading branch information
UO289659 authored Apr 27, 2024
2 parents 048efe3 + 55ce549 commit 3217af5
Show file tree
Hide file tree
Showing 43 changed files with 695 additions and 94 deletions.
45 changes: 38 additions & 7 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,22 +1,53 @@
# wiq_es3a
# wiq_es3a

[![Deploy on release](https://github.com/Arquisoft/wiq_es3a/actions/workflows/release.yml/badge.svg)](https://github.com/Arquisoft/wiq_es3a/actions/workflows/release.yml)
[![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=Arquisoft_wiq_es3a&metric=alert_status)](https://sonarcloud.io/summary/new_code?id=Arquisoft_wiq_es3a)
[![Coverage](https://sonarcloud.io/api/project_badges/measure?project=Arquisoft_wiq_es3a&metric=coverage)](https://sonarcloud.io/summary/new_code?id=Arquisoft_wiq_es3a)

This is a base repo for the [Software Architecture course](http://arquisoft.github.io/) in [2023/2024 edition](https://arquisoft.github.io/course2324.html).
Contributors:
- <a href="https://github.com/uo287998"><img src="https://img.shields.io/badge/Ángel-fuchsia?logo=github"></a>
- <a href="https://github.com/UO289659"><img src="https://img.shields.io/badge/Carmen-fuchsia?logo=github"></a>
- <a href="https://github.com/UO285267"><img src="https://img.shields.io/badge/Felipe-fuchsia?logo=github"></a>
- <a href="https://github.com/UO277382"><img src="https://img.shields.io/badge/Laureano-fuchsia?logo=github"></a>
- <a href="https://github.com/marcosMachadoMenendez"><img src="https://img.shields.io/badge/Marcos-fuchsia?logo=github"></a>

## Guide for USERS
You can access the game through the following URL -> [WIQ_es3a](http://74.249.118.115:3000 "WIQ")

------------

### Gameplay Instructions
To play, you'll need to follow these steps:
1. If you're not registered, you'll need to sign up.
2. Once registered, you'll need to log in.
3. On the main page, you can select the game parameters you want.
3.1. Short game
3.2. Medium game
3.3. Long game
3.4. Default game
4. You'll be able to select the game mode you want.
4.1. Battery of Wise Men
4.2. Discovering Cities
4.3. Discarding
4.4. Images Only
5. Then, just select PLAY.

After playing, you'll be able to view your game statistics and compare yourself with other users on a ranking.

------------

## Guide for DEVELOPERS

This repo is a basic application composed of several components.

- **Gateway service**. Express service that is exposed to the public and serves as a proxy to the two previous ones.
- **User service**. Express service that handles the insertion of new users in the system.
- **Auth service**. Express service that handles the authentication of users.
- **Generator service**. Express service that handles the selection and execution of questions.
- **Statistics service**. Express service that handles the statistics of users in the game.
- **API services**. Services that provide data on all generated questions and all users.
- **Webapp**. React web application that uses the gateway service to allow basic login and new user features.

Both the user and auth service share a Mongo database that is accessed with mongoose.

## Quick start guide

### Using docker

The fastest way for launching this sample project is using docker. Just clone the project:
Expand Down
4 changes: 2 additions & 2 deletions docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -126,7 +126,7 @@ services:
prometheus:
image: prom/prometheus
container_name: prometheus-${teamname:-defaultASW}
profiles: ["dev"]
profiles: ["dev", "prod"]
restart: always
networks:
- mynetwork
Expand All @@ -141,7 +141,7 @@ services:
grafana:
image: grafana/grafana
container_name: grafana-${teamname:-defaultASW}
profiles: ["dev"]
profiles: ["dev", "prod"]
restart: always
networks:
- mynetwork
Expand Down
Binary file added docs/images/coverage1.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/images/coverage2.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/images/coverage3.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/images/coverage4.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/images/coverage5.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/images/coverage6.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/images/coverage7.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified docs/images/diagramaDespliegue.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/images/distribucion.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/images/peticiones.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/images/pico.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/images/respuestas.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
3 changes: 3 additions & 0 deletions docs/index.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -96,4 +96,7 @@ include::src/11_technical_risks.adoc[]
// 12. Glossary
include::src/12_glossary.adoc[]

<<<<
// 13. Test Report
include::src/13_test_report.adoc[]

100 changes: 100 additions & 0 deletions docs/src/13_test_report.adoc
Original file line number Diff line number Diff line change
@@ -0,0 +1,100 @@
ifndef::imagesdir[:imagesdir: ../images]

[[section-test-report]]
== Informe de pruebas

=== Pruebas unitarias

Para este proyecto decidimos hacer pruebas unitarias para cada servicio creado y para cada componente de react del frontend.
Estas pruebas se ejecutan obligatoriamente al realizar un commit en la rama main del repositorio y al hacer una release permitiendo asegurarnos del correcto funcionamiento de la aplicación.

==== Pruebas servicios

Este proyecto consta de 6 servicios, Gateway , User , Auth , Generator , Question y Statistics.

Gateway::

Las pruebas de este servicio constan de probar que las diferentes rutas al resto de servicios estén disponibles y retornen los datos correctos. Ademas también se prueban casos de errores
En total se realizan 46 pruebas.

User::

Para este servicio se prueba que se registre bien los usuarios almacenando sus datos. También se prueba caso negativo de que no se introduzcan todos los campos.
En total se realizan 3 pruebas.
Auth::

Este servicio se prueba que el acceso de usuario sea correcto cuando los credenciales sean correctas. En total se realizan 3 pruebas.

Generartor::

Las pruebas unitarias de este servicio constan de probar que a partir de las plantillas de preguntas se haga la consulta a la api y se le de el formato correcto al resultado.
En total se realizan 10 pruebas.

Question::

Las pruebas de este servicio nos asegura que sea capaz de retornar las diferentes preguntas generadas. Tiene una única prueba.

Statistics::

Las pruebas unitarias de este servicio se encargan de probar a obtener las estadísticas del los usuarios con el formato correcto.En total se realizan 7 pruebas.

==== Pruebas Webapp

En la aplicación se realizó pruebas en cada uno de los componentes de react donde se realizan 12 conjuntos de prueba con un total de 40 pruebas ejecutadas.

=== Pruebas de aceptación

Se han realizado un total de 2 pruebas de aceptación con puppeteer. Las pruebas fueron realizadas para la acción de iniciar sesión y de registro.

Registro::

Para probar el registro se rellenan todos los campos del registro y se presiona el botón, posteriormente se comprueba que exista el usuario en la base de datos.

Inicio de sesión::

Para el inicio de sesión se introduce un usuario en la base de datos y posteriormente se prueba el registro introduciendo el usuario y la contraseña.


=== Cobertura de código

Con las pruebas unitarias se puede observar el porcentaje del código se ha cubierto con estas. Para este proyecto decidimos usar el quality gate de aws donde se necesita mas de un 80% de cobertura. Conseguimos una cobertura total del 83,8% y de nuevo código generado 82,2%

A continuación se mostrara cobertura de los diferentes módulos servicios y de la aplicación.

Gateway::
image:coverage1.png[Cobertura Gateway]

User::
image:coverage2.png[Cobertura User]

Auth::
image:coverage3.png[Cobertura Auth]

Generartor::
image:coverage4.png[Cobertura Generartor]

Question::
image:coverage5.png[Cobertura Question]

Statistics::
image:coverage6.png[Cobertura Statistics]

Webapp::
image:coverage7.png[Cobertura Webapp]


=== Pruebas de carga

La prueba de carga han sido realizadas con gatlin y esta consta de iniciar sesión y jugar una partida enviando durante 60 segundos 2 usuarios por segundo.

En los resultados obtenemos que todas las peticiones realizadas al servidor, que son 4270 se realizaron en menos de 800ms con 98% de respuestas correctas y 2% de respuestas que fallan como se muestra en la siguiente imagen.
image:respuestas.png[Tiempos de respuesta]

Como pico de usuarios se obtienen 117 usuarios activos y durante 66 segundos hay más de 50 usuarios simultáneos. como se muestra en la siguiente gráfica.
image:pico.png[Pico usuarios]

En la siguiente gráfica vemos la distribución en el tiempo de respuesta donde observamos que hay dos picos uno en el menor y otro en 252ms por lo que se puede concluir que los tiempos excesivos no es algo común.
image:distribucion.png[Distribución tiempo de respuesta]

Finalmente, en las gráficas posteriores se muestra el número de peticiones y respuestas en relación con el tiempo y el número de usuarios en el sistema. Se ve que el número de pericones va en relación con el número de usuarios y en las respuestas los diferentes valles que hay son fallos por lo general.
image:peticiones.png[Peticiones y respuestas]
Loading

0 comments on commit 3217af5

Please sign in to comment.