diff --git a/images/05_DiagramaL1.png b/images/05_DiagramaL1.png index e05a8e4b..5f4a5682 100644 Binary files a/images/05_DiagramaL1.png and b/images/05_DiagramaL1.png differ diff --git a/images/05_DiagramaL2.png b/images/05_DiagramaL2.png index 87613db3..59f84497 100644 Binary files a/images/05_DiagramaL2.png and b/images/05_DiagramaL2.png differ diff --git a/images/05_DiagramaL3.png b/images/05_DiagramaL3.png index 14a94b57..a994f010 100644 Binary files a/images/05_DiagramaL3.png and b/images/05_DiagramaL3.png differ diff --git a/images/Sequence diagram.png b/images/Sequence diagram.png index cd514fd0..227dd067 100644 Binary files a/images/Sequence diagram.png and b/images/Sequence diagram.png differ diff --git a/images/Sequence diagram1.png b/images/Sequence diagram1.png index 4d6ea782..169265dc 100644 Binary files a/images/Sequence diagram1.png and b/images/Sequence diagram1.png differ diff --git a/images/Sequence diagram2.png b/images/Sequence diagram2.png index 79c9fc4c..863400df 100644 Binary files a/images/Sequence diagram2.png and b/images/Sequence diagram2.png differ diff --git a/images/coverage1.png b/images/coverage1.png new file mode 100644 index 00000000..1c4208f3 Binary files /dev/null and b/images/coverage1.png differ diff --git a/images/coverage2.png b/images/coverage2.png new file mode 100644 index 00000000..a2961390 Binary files /dev/null and b/images/coverage2.png differ diff --git a/images/coverage3.png b/images/coverage3.png new file mode 100644 index 00000000..3f3c9eef Binary files /dev/null and b/images/coverage3.png differ diff --git a/images/coverage4.png b/images/coverage4.png new file mode 100644 index 00000000..2f7d57c5 Binary files /dev/null and b/images/coverage4.png differ diff --git a/images/coverage5.png b/images/coverage5.png new file mode 100644 index 00000000..8416f5ea Binary files /dev/null and b/images/coverage5.png differ diff --git a/images/coverage6.png b/images/coverage6.png new file mode 100644 index 00000000..f99716c6 Binary files /dev/null and b/images/coverage6.png differ diff --git a/images/coverage7.png b/images/coverage7.png new file mode 100644 index 00000000..fd95ff29 Binary files /dev/null and b/images/coverage7.png differ diff --git a/images/diagramaDespliegue.png b/images/diagramaDespliegue.png index 8f3baadd..985b449b 100644 Binary files a/images/diagramaDespliegue.png and b/images/diagramaDespliegue.png differ diff --git a/images/distribucion.png b/images/distribucion.png new file mode 100644 index 00000000..ba8c4a50 Binary files /dev/null and b/images/distribucion.png differ diff --git a/images/peticiones.png b/images/peticiones.png new file mode 100644 index 00000000..0677f337 Binary files /dev/null and b/images/peticiones.png differ diff --git a/images/pico.png b/images/pico.png new file mode 100644 index 00000000..40cadd43 Binary files /dev/null and b/images/pico.png differ diff --git a/images/respuestas.png b/images/respuestas.png new file mode 100644 index 00000000..c51f3b34 Binary files /dev/null and b/images/respuestas.png differ diff --git a/index.html b/index.html index 1b4b0032..15884e1b 100644 --- a/index.html +++ b/index.html @@ -506,6 +506,14 @@

arc42 W
  • 11. Riesgos y deudas técnicas
  • 12. Glosario
  • +
  • 13. Informe de pruebas + +
  • @@ -726,6 +734,10 @@

    2.1. Requisitos técnicos

    Pruebas

    Deberán ser implementadas pruebas de cobertura, aceptación y carga.

    + +

    Despliegue

    +

    El sistema debe estar desplegado en un servidor, una máquina virtual.

    + @@ -745,7 +757,7 @@

    2.2. Restricciones organizativas

    Miembros del grupo

    -

    El proyecto se llevará a cabo en un equipo con 6 miembros que trabajarán de forma conjunta.

    +

    El proyecto se llevará a cabo en un equipo con 5-6 miembros que trabajarán de forma conjunta.

    Entregas

    @@ -792,6 +804,18 @@

    2.3. Decisiones tomadas

    Idioma

    La documentación será en español.

    + +

    Actas

    +

    Se rotará el miembro que toma las actas.

    + + +

    Ramas

    +

    Cada miembro del equipo trabajará en su rama de GitHub.

    + + +

    Máquina

    +

    La máquina será desplegada en Azure.

    +
    @@ -945,7 +969,7 @@

    5.1.3. Contained Building Blocks

    Actor principal, interatúa con la aplicación y proporciona sus datos.

    -

    Aplicación

    +

    WIQ

    Se trata de nuestra aplicación, explicada en detalle más adelante.

    @@ -986,12 +1010,24 @@

    5.2.1. Building blocks

    -

    Frontend

    -

    Interfaz de usuario.

    +

    Webapp

    +

    Componente que alberga la interfaz de usuario, con la que interactua el usuario, además de la lógica de la aplicación.

    -

    Backend

    -

    Lógica de negocio y manejo de datos.

    +

    Gateway service

    +

    Maneja y dirige peticiones desde la interfaz de usuario hasta los servicios.

    + + +

    Preguntas

    +

    Contiene dos servicios relacionados con el juego: generatorService y questionService.

    + + +

    Statistics

    +

    Contiene el servicio de las estadísticas.

    + + +

    Users

    +

    Contiene dos servicios: autenticación y usuarios.

    @@ -1021,12 +1057,24 @@

    5.3.1. Contained Building Blocks

    Raíz del proyecto.

    +

    App

    +

    Contiene la estructura del proyecto con enrutamiento y proveedor de autenticación.

    + +

    Inicio

    Link a registro e inicio de sesión.

    +

    Primera

    +

    Pantalla de bienvenida.

    + + +

    Register

    +

    Registro de usuarios.

    + +

    Log in

    -

    Permite al usuario registrarte o iniciar sesión.

    +

    Permite al usuario iniciar sesión.

    Home

    @@ -1037,24 +1085,28 @@

    5.3.1. Contained Building Blocks

    Pantalla donde se mostrarán las preguntas y respuestas.

    -

    Estadísticas

    -

    Pantalla con las estadísticas de los usuarios.

    +

    Game modes

    +

    Permite seleccionar un modo de juego.

    -

    Navbar

    -

    Barra de menú.

    +

    Categories

    +

    Permite seleccionar distintas categorías para jugar.

    -

    Primera

    -

    Pantalla de bienvenida.

    +

    Routes

    +

    Proporciona las distintas rutas existentes.

    -

    Add user

    -

    Registro de usuarios.

    +

    Statistics

    +

    Pantalla con las estadísticas de los usuarios y su correspondiente lógica.

    + + +

    Ranking

    +

    Pantalla con el ranking de los usuarios y su correspondiente lógica.

    Gateway service

    -

    Mnaneja y dirige peticiones.

    +

    Mananeja y dirige peticiones.

    User service

    @@ -1065,16 +1117,16 @@

    5.3.1. Contained Building Blocks

    Manejo de los datos de registro

    -

    Generación preguntas y respuestas

    -

    Lógica para la correcta generación de preguntas y respuestas.

    +

    Generator service

    +

    Servcio para la correcta generación de preguntas y respuestas.

    -

    Esquema

    -

    Plantilla para la generación de preguntas.

    +

    Question service

    +

    Servicio para la correcta generación de la api de preguntas.

    -

    Cálculo de estadísticas

    -

    Lógica para el correcto manejo y cálculo de estadísticas sobre los resultados de los usuarios.

    +

    Statistics service

    +

    Servicio para el correcto manejo de estadísticas sobre los resultados de los usuarios.

    @@ -1465,13 +1517,150 @@

    12. Glosario

    +
    + + +
    +

    13. Informe de pruebas

    +
    +
    +

    13.1. 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.

    +
    +
    +

    13.1.1. 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.

    +
    +
    +
    +
    +
    +

    13.1.2. 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.

    +
    +
    +
    +
    +

    13.2. 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.

    +
    +
    +
    +
    +
    +

    13.3. 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
    +
    +

    Cobertura Gateway

    +
    +
    User
    +
    +

    Cobertura User

    +
    +
    Auth
    +
    +

    Cobertura Auth

    +
    +
    Generartor
    +
    +

    Cobertura Generartor

    +
    +
    Question
    +
    +

    Cobertura Question

    +
    +
    Statistics
    +
    +

    Cobertura Statistics

    +
    +
    Webapp
    +
    +

    Cobertura Webapp

    +
    +
    +
    +
    +
    +

    13.4. 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. +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. +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. +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. +Peticiones y respuestas

    +
    +