7.3. Monitoreo
8. Conceptos Transversales 🧭
8.1. Modelo de Dominio
-Representación UML de las entidades que conforman el sistema.
-8.2. Experiencia de Usuario
+8.1. Experiencia de Usuario
La Experiencia de Usuario en nuestra aplicación es la impresión general que los usuarios tienen al interactuar con ella. Se trata de cómo se sienten y qué piensan cuando utilizan nuestra aplicación web. Esto incluye aspectos como la facilidad para registrarse o iniciar sesion o lo intiutivo que es la parte del juego de preguntas.
+La Experiencia de Usuario en nuestra aplicación es la impresión general que los usuarios tienen al interactuar con ella. Se refiere a cómo se sienten y qué piensan cuando utilizan nuestra aplicación web. Esto incluye aspectos como la facilidad para registrarse o iniciar sesión, o lo intuitivo que es el juego de preguntas.
Para nuestra aplicacion, la Experiencia de Usuario significa entender profundamente las necesidades y expectativas de nuestros usuarios y diseñar cada aspecto de la interfaz para satisfacer esas necesidades de la manera más efectiva y agradable posible. Esto implica asegurarse de que la navegación sea intuitiva, que la información esté presentada de manera clara y accesible, que las acciones sean fáciles de realizar y que el sistema responda de manera rapida y confiable a las interacciones del usuario.
+Para nuestra aplicación, la Experiencia de Usuario significa comprender profundamente las necesidades y expectativas de nuestros usuarios. Siguiendo la regla de "Keep It Simple Stupid" (KISS), hemos diseñado cada aspecto de la interfaz para que sea lo más sencillo y directo posible, facilitando una experiencia efectiva y agradable. Esto implica asegurar que la navegación sea intuitiva, que la información esté presentada de manera clara y accesible, que las acciones sean fáciles de realizar y que el sistema responda de manera rápida y confiable a las interacciones del usuario.
Nos esforzamos por crear una experiencia de usuario comoda y accesible, donde cada detalle esté cuidadosamente diseñado para brindar una experiencia fluida y satisfactoria. Nuestro objetivo es ofrecer un juego entretenido, a la par que funcional y educativo.
+Nos esforzamos por crear una experiencia de usuario cómoda y accesible, donde cada detalle esté cuidadosamente diseñado para brindar una experiencia fluida y satisfactoria. Nuestro objetivo es ofrecer un juego entretenido y funcional, manteniendo siempre la simplicidad en cada elemento.
8.3. Arquitectura y Patrones de Diseño
+8.2. Arquitectura
Se usará una aquitectura basada en microservicios, para mantener la independencia entre las distintas partes de la aplicación. Esto nos permite tener una arquitectura flexible y modular que puede brindar beneficios significativos en términos de escalabilidad, flexibilidad tecnológica, agilidad en el desarrollo, resistencia a fallos y mantenibilidad del software.
+Utilizaremos una arquitectura basada en microservicios para mantener la independencia entre las distintas partes de la aplicación. Esta estructura ofrece una arquitectura flexible y modular, con beneficios significativos en términos de escalabilidad, flexibilidad tecnológica, agilidad en el desarrollo, resistencia a fallos y mantenimiento del software.
8.4. Desarrollo
+8.3. Desarrollo
En el desarrollo de nuestra aplicación, nos centramos en varios aspectos para garantizar su eficacia y fiabilidad:
+En el desarrollo de nuestra aplicación, nos centramos en varios aspectos para garantizar su eficacia:
-
-
Arquitectura escalable: Diseñamos la arquitectura de nuestra aplicación de manera que pueda crecer y adaptarse a medida que aumenta el número de usuarios y funciones. Esto nos permite mantener un rendimiento óptimo incluso en momentos de alta demanda.
-
- -
-
Mantenibilidad del código: Escribimos nuestro código de manera clara y organizada, siguiendo las mejores prácticas de desarrollo, para facilitar su mantenimiento y futuras actualizaciones. Esto incluye el uso de comentarios claros, la modularización del código y la adopción de patrones de diseño eficientes.
+Mantenibilidad del código: Escribimos nuestro código de manera clara y organizada, siguiendo las mejores prácticas de desarrollo, para facilitar su mantenimiento y futuras actualizaciones.
-
Automatización de pruebas: Implementamos pruebas automatizadas para garantizar que nuestra aplicación funcione correctamente en diferentes situaciones y escenarios. Esto nos ayuda a identificar y corregir errores de manera oportuna, manteniendo la calidad del software.
-
-
Integración continua: La implementación exitosa de CI/CD proporciona un camino continuo hacia la entrega de software de alta calidad, permitiendo la automatización de pruebas, integración y despliegue, agilizando así el ciclo de vida del desarrollo y garantizando una entrega rápida y confiable de valor al cliente,
+Integración continua: La implementación exitosa de CI/CD proporciona un camino continuo hacia la entrega de software de alta calidad, permitiendo la automatización de pruebas, integración y despliegue, agilizando así el ciclo de vida del desarrollo y garantizando una entrega rápida y confiable de valor al cliente.
-
-
Optimización de rendimiento: Nos esforzamos por mejorar el rendimiento de nuestra aplicación, optimizando el tiempo de carga, la velocidad de respuesta y el consumo de recursos. Esto garantiza una experiencia fluida para los usuarios, incluso en dispositivos y conexiones de red menos potentes.
+Optimización de rendimiento: Nos esforzamos por mejorar el rendimiento de nuestra aplicación, optimizando el tiempo de carga, la velocidad de respuesta y el consumo de recursos.
En resumen, en el desarrollo de nuestra aplicación nos esforzamos por crear una arquitectura escalable, un código mantenible, pruebas automatizadas y un rendimiento aceptable . Esto nos permite ofrecer una aplicación confiable y de alta calidad a nuestros usuarios.
+En resumen, en el desarrollo de nuestra aplicación nos esforzamos por mantener un código mantenible, implementar pruebas automatizadas, lograr una integración continua eficiente y optimizar el rendimiento. Esto nos permite ofrecer una aplicación confiable y de alta calidad a nuestros usuarios.
8.5. Operaciones
+8.4. Gestión del proyecto
En las operaciones de nuestra aplicación, nos enfocamos en garantizar un entorno de producción estable y eficiente:
+En la gestión de nuestro proyecto, nos enfocamos en garantizar un entorno de producción estable y eficiente:
-
-
Gestión de infraestructura: Administramos la infraestructura de nuestra aplicacion con servicios en la nube, para garantizar su disponibilidad y rendimiento óptimo.
+Gestión de infraestructura: Utilizamos una máquina virtual de Azure para administrar la infraestructura de nuestra aplicación, garantizando así su disponibilidad y un rendimiento óptimo.
-
-
Gestión de versiones: Utilizamos herramientas de control de versiones para gestionar el ciclo de vida del software y asegurarnos de que las actualizaciones se implementen de manera controlada y sin interrupciones en el servicio.
+Gestión de versiones: Gestionamos las versiones utilizando etiquetas (tags) en nuestro proyecto de GitHub, que luego se despliegan en la máquina virtual, asegurando actualizaciones controladas y sin interrupciones en el servicio.
-
-
Capacitación de los integrantes del grupo: Brindamos capacitación regular al personal de operaciones para garantizar que estén familiarizados con el proyecto lo que ayuda a mantener un entorno operativo eficiente.
+Desarrollo del equipo: Nuestro equipo ha progresado en el proyecto mediante el autoaprendizaje de las tecnologías utilizadas. Esto garantiza una comprensión profunda de la aplicación y contribuye a mantener un entorno operativo eficiente.
En resumen, en las operaciones de nuestra aplicación nos enfocamos en garantizar la disponibilidad y el rendimiento. Implementamos prácticas y herramientas que nos permiten monitorear, gestionar y mantener nuestra aplicación de manera efectiva y eficiente.
-8.6. Seguridad
+8.5. Seguridad
Nos comprometemos a proteger la información personal y sensible de nuestros usuarios, así como a prevenir vulnerabilidades que pueda comprometer su seguridad mientras utilizan nuestra aplicación web dentro de nuetras capacidades y conocimientos.
+Nos comprometemos a proteger la información personal y sensible de nuestros usuarios, así como a prevenir vulnerabilidades que puedan comprometer su seguridad mientras utilizan nuestra aplicación web, dentro de nuestras capacidades y conocimientos.
Para ello, implementamos medidas de seguridad, como la encriptación de datos y la autenticación de usuarios mediante contraseñass.
+Para ello, implementamos medidas de seguridad como la encriptación de datos y la autenticación de usuarios mediante contraseñas.
Queremos que nuestros usuarios se sientan seguros y protegidos mientras utilizan nuestra aplicación.
@@ -1125,6 +1102,11 @@10. Requisitos de Calidad 🌟
10.1. Árbol de Calidad
+El árbol de calidad se organiza con "calidad" como raíz, desglosándose en varias ramas principales, que representan categorías de calidad relevantes para el proyecto WIQ. Estas ramas incluyen:
10.1. Árbol de Calidad
Seguridad: Implica proteger la información y los sistemas contra accesos no autorizados, divulgación, alteración o destrucción, garantizando la confidencialidad, integridad y disponibilidad de los datos.
Fiabilidad: La capacidad del sistema de funcionar correctamente y sin fallos durante un período determinado bajo condiciones específicas. La fiabilidad se centra en la consistencia del rendimiento y la prevención de fallos.
-Mantenibilidad: Se refiere a la facilidad con la que un sistema puede ser modificado para corregir fallos, mejorar su funcionamiento o adaptarse a un entorno cambiante. Una alta mantenibilidad facilita las actualizaciones y reduce los costos a largo plazo.
Portabilidad: La capacidad de un sistema para ser utilizado en diferentes entornos operativos con mínimas modificaciones. La portabilidad permite que el software sea compatible con diversos dispositivos, sistemas operativos o navegadores web.
+Portabilidad: La capacidad de un sistema para ser utilizado en diferentes entornos operativos con mínimas modificaciones. La portabilidad permite que el software sea compatible con diversos dispositivos, sistemas operativos o navegadores webs.
10.2. Escenarios de Calidad
@@ -1163,7 +1137,7 @@10.2.1. Usabilidad
-
-
Escenario: Un nuevo usuario puede registrarse e iniciar a jugar en menos de 5 minutos después de su primer acceso al sitio web. La interfaz intuitiva y la guía de inicio rápido facilitan este proceso.
+Escenario: Un nuevo usuario puede registrarse e iniciar a jugar en menos de 2 minutos después de su primer acceso al sitio web. La interfaz intuitiva y la guía de inicio rápido facilitan este proceso.
10.2.2. Rendimiento
-
-
Escenario: El sistema responde a las solicitudes de los usuarios en menos de 2 segundos bajo condiciones normales de carga, asegurando una experiencia de juego fluida.
+Escenario: El sistema responde a las solicitudes de los usuarios en menos de 0,5 segundos bajo condiciones normales de carga, asegurando una experiencia de juego fluida.
10.2.4. Mantenibilidad
10.2.5. Fiabilidad
--
-
-
-
Escenario: En caso de fallo del sistema, este debe ser capaz de recuperarse y volver a estar operativo en menos de 5 minutos, garantizando una alta disponibilidad.
-
-
10.2.6. Portabilidad
+10.2.5. Portabilidad
-
@@ -1223,7 +1187,7 @@
10.2.6. Portabilidad
11. Riesgos y Deuda Técnina ⚠️
+11. Riesgos y Deuda Técnica ⚠️
11.1. Riesgos
@@ -1279,7 +1243,7 @@11.1. Riesgos
11.2. Deuda Tecnica
+11.2. Deuda Técnica
Deuda Técnina | +Deuda Técnica | Descripción | |
---|---|---|---|
Uso del proyecto base creado por los profesores |
-Para no tener que realizar la creacion del proyecto hemos decidido usar el proyecto ya creado. Esto implica tener que revisar codigo ya creado y entender su funcionamiento, asi como ampliarlo con codigo propio, dando lugar a errores y perdidas de tiempo. Tambien requiere tener que aprender tecnologias nuevas y como usarlas. |
+Para evitar la creación del proyecto desde cero, hemos decidido utilizar el proyecto ya creado por los profesores. Esto implica revisar y comprender el código existente, así como ampliarlo con nuestro propio código, lo que puede llevar a errores y pérdida de tiempo. Además, requiere aprender nuevas tecnologías y cómo utilizarlas. |
|
Uso de React |
-El uso del framework nos puede facilitar el desarrolo en algunas etapas, pero nos lo puede complicar al no estar familiarizados con esta tecnologia y todas sus características. |
+El uso de este framework puede facilitar el desarrollo en algunas etapas, pero también puede complicarlo al no estar familiarizados con esta tecnología y todas sus características. |
|
Dependencias desactualizadas |
-Usar versiones obsoletas de bibliotecas, frameworks o plataformas puede resultar en vulnerabilidades de seguridad o limitaciones de rendimiento que deben abordarse en el futuro. |
+Utilizar versiones obsoletas de bibliotecas, frameworks o plataformas puede resultar en vulnerabilidades de seguridad o limitaciones de rendimiento que deben abordarse en el futuro. |
|
Falta de una abundancia de pruebas automatizada |
-A medida que avanza el proyecto la falta de pruebas pude hacer que se acumule deuda tecnica al no poder realizarse cambios de manera rapida y eficaz sin, ya que no se podran probar de manera inmediata. |
+Falta de una abundancia de pruebas automatizadas |
+A medida que avanza el proyecto, la falta de pruebas puede acumular deuda técnica al no poder realizarse cambios de manera rápida y eficaz sin la capacidad de probarlos de inmediato. |
Empezar desde el principio de nuevo |
-Debido a problemas este grupo ha tenido que volver a partir desde un proyecto desde 0 haciendo quecontemos con un retraso con lo que todo esto conlleva. |
+Debido a problemas, el grupo ha tenido que reiniciar el proyecto desde cero, lo que ha provocado un retraso significativo con todas las implicaciones que esto conlleva. |
11.2. Deuda Tecnica
12. Glosario ⁉️
+12. Glosario
Término | -Definicion | +Definición |
---|---|---|
React |
-Biblioteca de Javascript que se encarga en la creación de interfaces de usuario de una manera fácil. Es eficiente y se puede incorporar -al código de una forma sencilla. |
+Biblioteca de JavaScript que facilita la creación de interfaces de usuario de manera sencilla y eficiente. Se integra fácilmente en el código. |
Node.js |
-Entorno que usa Javascript, donde destaca en la creación de servidores web. Su programación es dirigida por eventos, es multi-plataforma, open-source -y soporta la concurrencia. |
+Entorno de ejecución de JavaScript, destacado en la creación de servidores web. Su programación es dirigida por eventos, es multiplataforma, de código abierto y compatible con la concurrencia. |
Microservicio |
-Enfoque arquitectónico, donde el software se va a dividir en servicios de tamaño pequeño, que estarán unidos por la intervención de API’s -(en nuestro caso Wikidata). Son rápidos, sencillos a la hora de su desarrollo y autonómos cuando estos están en ejecución. |
+Enfoque arquitectónico donde el software se divide en servicios pequeños, conectados mediante APIs (En nuestro caso usamos un gateway). Son rápidos, simples de desarrollar y autónomos en ejecución. |
API |
-También llamado Application Programming Interface, es un intermediario que ayuda a las diferentes aplicaciones del proyecto a posibilitar la comunicación -entre ellas. Favorece a la eficiencia y agilidad del funcionamiento de dichas aplicaciones. |
+Interfaz de programación de aplicaciones, que facilita la comunicación entre diferentes servicios del proyecto, mejorando su eficiencia y agilidad. |
MongoDB |
-Es uno de los tantos tipos de bases de datos, como MariaDB. Usa NoSQL, soporta múltiples lenguajes de programación y también soporta su funcionamiento en gran variedad de sistemas operativos. Algo a tener en cuenta es que MongoDB realiza el guardado de datos de una forma distinta a la de las bases de datos de tipo relacional, con tablas de datos, este lo guarda en archivos BSON, que es un derivado de JSON. |
+Tipo de base de datos NoSQL, compatible con múltiples lenguajes de programación y sistemas operativos. Almacena datos en archivos BSON, un formato derivado de JSON. |
BSON |
-Conocido como Binary JSON, son los archivos que usa la base de datos MongoDB para almacenar los datos de una manera más ágil y sencilla que con las tablas. Una curiosidad de este tipo de archivo es que no tiene un tipo de MIME definido, mientras que JSON sí que lo tiene. |
+Formato de archivo usado por MongoDB para almacenar datos de manera eficiente. No tiene un tipo MIME definido como JSON. |
Mongoose |
-Biblioteca que es encargada de crear una conexión con la base de datos MongoDB con el entorno de Node.js. Hace que el acceso y creación de los datos de MongoDB sea más fácil de realizar que con MongoDB en sí. |
+Biblioteca que facilita la conexión entre Node.js y MongoDB, simplificando el acceso y la manipulación de datos en la base de datos. |
Docker |
-Aplicación que realiza el despliegue de cualquier aplicación en formato de contenedores, similares a los contenedores que tienen los barcos. Es open-source y permite que el proceso de desplegar una aplicación sea bastante más fácil y ordenado. |
+Plataforma que despliega aplicaciones en contenedores, similares a los contenedores de carga de los barcos. Es de código abierto y facilita el despliegue ordenado de aplicaciones. |
GitHub Actions |
-Plataforma que ayuda a automatizar los proyectos, haciendo posible el despliegue de estos desde el mismo Github. Soporta una gran variedad de lenguajes de programación y sistemas operativos. |
+Plataforma que automatiza proyectos, permitiendo el despliegue desde GitHub. Es compatible con diversos lenguajes y sistemas operativos. |
+
Integración continua/despliegue continuo (CI/CD) |
+CI/CD es una práctica de desarrollo de software que combina la integración continua (CI) y la implementación continua (CD). La CI implica la integración automática y frecuente de cambios de código en un repositorio compartido, mientras que la CD automatiza el proceso de implementación de esos cambios en entornos de producción. |
+|
Interfaz de Usuario (UI) |
+La Interfaz de Usuario (UI) se refiere a la parte visual y tangible de un sistema informático a través de la cual los usuarios interactúan con él. Esto incluye elementos como botones, menús, formularios y cualquier otro componente con el que los usuarios puedan interactuar para utilizar el sistema. |
+|
Express (en el contexto de Node.js) |
+Express es un framework de desarrollo web para Node.js, que proporciona una serie de características y herramientas para crear aplicaciones web y APIs de manera más fácil y rápida. |
12. Glosario ⁉️
13. Pruebas 🔍
Para asegurarnos del correcto funcionamiento de la aplicación y encontrar mejores para la misma se han realizado pruebas de todo tipo aqui están los resultados obtenidos.
+Para asegurarnos del correcto funcionamiento de la aplicación y encontrar maneras de mejorarla, se han realizado pruebas de todo tipo. Aquí están los resultados obtenidos.
13.1. Pruebas de Cobertura (Tests Unitarios)
Estas pruebas se han realizado para la comprobacion de cada componente de manera individual evaluando los diferentes casos de uso. Estas son las pruebas realizadas, divididas por componente.
+Estas pruebas se han realizado para la comprobación de cada componente de manera individual, evaluando los diferentes casos de uso. A continuación, se detallan las pruebas realizadas, divididas por componente.
13.1.1. Tests Gateway Service
-
-
should forward login request to auth service: Verifica que las solicitudes de inicio de sesión sean correctamente reenviadas al servicio de autenticación y que el token esperado sea retornado si las credenciales son correctas.
+Should forward login request to auth service: Verifica que las solicitudes de inicio de sesión sean correctamente reenviadas al servicio de autenticación y que el token esperado sea retornado si las credenciales son correctas.
-
-
should forward add user request to user service: +
Should forward add user request to user service: Comprueba que las solicitudes para agregar un nuevo usuario sean reenviadas al servicio de usuarios y que se reciba un ID de usuario como respuesta.
-
-
should handle errors from the auth service on login: +
Should handle errors from the auth service on login: Asegura que se manejen adecuadamente los errores durante el proceso de inicio de sesión, como credenciales incorrectas, y que se retorne el mensaje de error apropiado.
-
-
should validate a token successfully: +
Should validate a token successfully: Verifica que el servicio pueda validar correctamente un token, devolviendo un estado de validez.
-
-
should handle validation error: +
Should handle validation error: Comprueba que se manejen correctamente los errores al validar tokens inválidos, retornando el mensaje de error adecuado.
-
-
should forward get random questions request to generate service: +
Should forward get random questions request to generate service: Asegura que las solicitudes para obtener preguntas aleatorias sean correctamente reenviadas al servicio de generación y que las preguntas esperadas sean retornadas.
-
-
should forward get questions request to generate service: +
Should forward get questions request to generate service: Verifica que las solicitudes para obtener preguntas sean correctamente reenviadas al servicio de generación y que se retornen las preguntas adecuadas.
-
-
should forward create question request to generate service: +
Should forward create question request to generate service: Comprueba que las solicitudes para crear una nueva pregunta sean correctamente reenviadas al servicio de generación y que se devuelva un estado de éxito y el ID de la pregunta.
-
-
should forward update question request to generate service: +
Should forward update question request to generate service: Asegura que las solicitudes para actualizar una pregunta existente sean reenviadas al servicio de generación y que se retorne un estado de "OK".
-
-
should forward save history request to history service: +
Should forward save history request to history service: Verifica que las solicitudes para guardar el historial de acciones del usuario sean correctamente reenviadas al servicio de historial y que se retorne un estado de éxito.
-
-
should forward get history request to history service: +
Should forward get history request to history service: Comprueba que las solicitudes para obtener el historial de un usuario sean correctamente reenviadas al servicio de historial y que se retornen los datos esperados.
-
-
should handle error getting random questions from generate service: +
Should handle error getting random questions from generate service: Asegura que se manejen correctamente los errores al obtener preguntas aleatorias del servicio de generación, retornando el mensaje de error apropiado.
-
-
should handle error getting questions from generate service: +
Should handle error getting questions from generate service: Verifica que se manejen correctamente los errores al obtener preguntas del servicio de generación, retornando el mensaje de error adecuado.
-
-
should handle error creating question in generate service: +
Should handle error creating question in generate service: Comprueba que se manejen correctamente los errores al crear una nueva pregunta en el servicio de generación, retornando el mensaje de error correspondiente.
-
-
should handle error updating question in generate service: +
Should handle error updating question in generate service: Asegura que se manejen correctamente los errores al actualizar una pregunta en el servicio de generación, retornando el mensaje de error apropiado.
-
-
should handle error saving history in history service: +
Should handle error saving history in history service: Verifica que se manejen correctamente los errores al guardar el historial en el servicio de historial, retornando el mensaje de error adecuado.
-
-
should handle error getting history from history service with query: +
Should handle error getting history from history service with query: Comprueba que se manejen correctamente los errores al obtener el historial desde el servicio de historial, usando una consulta específica y retornando el mensaje de error correspondiente.
-
-
should handle error deleting non-existent user in user service: +
Should handle error deleting non-existent user in user service: Este test verifica que el servicio de gateway maneje adecuadamente la solicitud para eliminar un usuario que no existe en el servicio de usuarios, asegurando que se propague el mensaje de error correcto y se devuelva el código de estado adecuado.
-
-
should propagate parameters correctly on user update request: +
Should propagate parameters correctly on user update request: Este test asegura que los cambios en los datos de un usuario a través de una solicitud PATCH sean correctamente propagados al servicio de usuarios, validando así que los parámetros se transmitan correctamente y se obtenga una respuesta de éxito.
-
-
should ensure data consistency when retrieving user history: +
Should ensure data consistency when retrieving user history: Este test verifica que el servicio de gateway proporcione una respuesta consistente y completa cuando se solicita el historial de un usuario específico, validando que todos los campos esperados estén presentes y sean correctos.
-
-
should forward delete user request to user service and handle response: +
Should forward delete user request to user service and handle response: Este test verifica que el endpoint de eliminación de usuario (DELETE /user/:id) funcione correctamente, reenviando la solicitud al servicio de usuarios y gestionando la respuesta adecuadamente.
-
-
should forward delete question request to generate service and handle response: +
Should forward delete question request to generate service and handle response: Comprueba que el endpoint para eliminar preguntas (DELETE /question/:id) reenvíe correctamente la solicitud al servicio de generación de preguntas y maneje las respuestas adecuadamente.
-
-
should forward get ranking request to history service and return rankings: +
Should forward get ranking request to history service and return rankings: Asegura que el endpoint para obtener el ranking de usuarios (GET /getranking) reenvíe correctamente la solicitud al servicio de historial y reciba la lista de rankings esperada.
-
-
should handle error deleting user from user service: +
Should handle error deleting user from user service: Este test verifica que el servicio de gateway maneje correctamente los errores retornados por el servicio de usuarios al intentar eliminar un usuario que no existe o cuando hay un fallo en la operación.
13.1.3. Tests llamadas a Wikidata
Preparación de Datos Simulados: Configura un mock de node-fetch para simular una respuesta exitosa de la API de Wikidata. Esto implica establecer un JSON de respuesta que imita los datos que se esperarían de una consulta SPARQL real.
Ejecución y Validación de la Consulta: Ejecuta wikiCall con una consulta SPARQL de prueba para verificar si procesa esta consulta adecuadamente y si retorna los datos correctos. Se espera que la función transforme la respuesta simulada en el formato adecuado para su uso posterior, en este caso, un arreglo que contiene un objeto vacío que representa una fila de resultado SPARQL.
+Ejecución y Validación de la Consulta: Ejecuta wikiCall con una consulta SPARQL de prueba para verificar si procesa esta consulta adecuadamente y si retorna los datos correctos. Se espera que la función transforme la respuesta simulada en el formato adecuado para su uso posterior, en este caso, un arreglo que contiene un objeto vacío que representa una fila de resultados SPARQL.
Verificación de la Llamada a fetch: Confirma que node-fetch se llamó exactamente una vez y con los parámetros correctos, incluyendo la URL de Wikidata con la consulta SPARQL codificada y los headers apropiados para aceptar JSON de resultados SPARQL.
@@ -1551,7 +1523,7 @@13.1.3. Tests llamadas a Wikidata
-
-
debería obtener preguntas de Wikidata y formatearlas correctamente: +
Debería obtener preguntas de Wikidata y formatearlas correctamente: Este test verifica que el método getQuestions de WikiQuery realice correctamente la llamada a wikiCall para obtener datos de Wikidata, y que luego formatee estos datos en el formato esperado para preguntas. Se realiza una configuración previa para simular respuestas de wikiCall que contienen preguntas y respuestas en un formato específico. El test comprueba que:
-
@@ -1582,15 +1554,15 @@
13.1.4. Tests Auth Service
-
Should reject login with incorrect credentials: -Este test se asegura de que el endpoint /login rechace el intento de inicio de sesión cuando las credenciales son incorrectas. En este caso, se envía una contraseña errónea para un nombre de usuario existente. El test verifica que el servidor responda con un estado 401 y que el cuerpo de la respuesta contenga el mensaje de error 'Invalid credentials', indicando que las credenciales proporcionadas no son válidas.
+Este test se asegura de que el endpoint /login rechace el intento de inicio de sesión cuando las credenciales son incorrectas. En este caso, se envía una contraseña errónea para un nombre de usuario existente. El test verifica que el servidor responda con un estado 401 y que el cuerpo dé la respuesta contenga el mensaje de error 'Invalid credentials', indicando que las credenciales proporcionadas no son válidas. -
Should require username and password fields for login: -Este test evalúa que el endpoint /login requiera tanto el nombre de usuario como la contraseña para procesar una solicitud de inicio de sesión. Aquí se envía solo el nombre de usuario sin proporcionar una contraseña. El test verifica que el servidor responda con un estado 500 y que el cuerpo de la respuesta contenga un mensaje de error, indicando que la solicitud está incompleta o mal formada.
+Este test evalúa que el endpoint /login requiera tanto el nombre de usuario como la contraseña para procesar una solicitud de inicio de sesión. Aquí se envía solo el nombre de usuario sin proporcionar una contraseña. El test verifica que el servidor responda con un estado 500 y que el cuerpo dé la respuesta contenga un mensaje de error, indicando que la solicitud está incompleta o mal formada. -
Should validate a JWT token: -Este test primero realiza un inicio de sesión válido para obtener un token JWT y luego verifica la validez de ese token a través de otro endpoint. Tras obtener el token, se realiza una solicitud de validación para dicho token y se verifica que el servidor responda con un estado 200 y que el cuerpo de la respuesta indique que el token es válido (valid: true).
+Este test primero realiza un inicio de sesión válido para obtener un token JWT y luego verifica la validez de ese token a través de otro endpoint. Tras obtener el token, se realiza una solicitud de validación para dicho token y se verifica que el servidor responda con un estado 200 y que el cuerpo dé la respuesta indique que el token es válido (valid: true). -
Should reject an invalid JWT token: @@ -1607,46 +1579,46 @@
13.1.5. Tests History Service
POST /savehistory:
-
-
should save history entry for a new user that plays a game: Este test verifica que el endpoint /savehistory pueda crear una nueva entrada de historial para un usuario que no existía previamente en la base de datos. Evalúa si la entrada se almacena correctamente y si los datos devueltos en la respuesta coinciden con los datos enviados, incluyendo la correcta diferenciación entre preguntas acertadas y falladas.
+Should save history entry for a new user that plays a game: Este test verifica que el endpoint /savehistory pueda crear una nueva entrada de historial para un usuario que no existía previamente en la base de datos. Evalúa si la entrada se almacena correctamente y si los datos devueltos en la respuesta coinciden con los datos enviados, incluyendo la correcta diferenciación entre preguntas acertadas y falladas.
-
-
should update history entry for an existing user: Este test comprueba que el endpoint /savehistory actualice correctamente una entrada de historial existente para un usuario, sumando correctamente las nuevas jugadas, preguntas jugadas, preguntas acertadas y preguntas falladas a los totales previos.
+Should update history entry for an existing user: Este test comprueba que el endpoint /savehistory actualice correctamente una entrada de historial existente para un usuario, sumando correctamente las nuevas jugadas, preguntas jugadas, preguntas acertadas y preguntas falladas a los totales previos.
-
-
should reject history entry with missing data: Este test verifica que el endpoint /savehistory maneje adecuadamente situaciones donde los datos esenciales como NumPreguntasJugadas o NumAcertadas no se proporcionen en la solicitud. Se espera que el servidor responda con un código de estado 400 y un mensaje de error claro indicando qué dato falta.
+Should reject history entry with missing data: Este test verifica que el endpoint /savehistory maneje adecuadamente situaciones donde los datos esenciales como NumPreguntasJugadas o NumAcertadas no se proporcionen en la solicitud. Se espera que el servidor responda con un código de estado 400 y un mensaje de error claro indicando qué dato falta.
-
GET /gethistory:
-
-
should get history entry for an existing user: Este test verifica que el endpoint /gethistory (con un query param) recupere correctamente la entrada de historial de un usuario existente. Evalúa si los datos devueltos coinciden exactamente con los que están almacenados en la base de datos.
+Should get history entry for an existing user: Este test verifica que el endpoint /gethistory (con un query param) recupere correctamente la entrada de historial de un usuario existente. Evalúa si los datos devueltos coinciden exactamente con los que están almacenados en la base de datos.
-
-
should create new history entry for a non-existing user: Este test comprueba que el endpoint /gethistory sea capaz de manejar solicitudes para usuarios no existentes correctamente, retornando una entrada de historial con contadores en cero.
+Should create new history entry for a non-existing user: Este test comprueba que el endpoint /gethistory sea capaz de manejar solicitudes para usuarios no existentes correctamente, retornando una entrada de historial con contadores en cero.
-
-
should handle non-existent username on get history: Este test verifica que el endpoint /gethistory responda adecuadamente cuando se consulta el historial de un usuario que no existe. Se espera que el servidor responda con un código de estado 404.
+Should handle non-existent username on get history: Este test verifica que el endpoint /gethistory responda adecuadamente cuando se consulta el historial de un usuario que no existe. Se espera que el servidor responda con un código de estado 404.
-
GET /gethistory/:username:
-
-
should get history entry for an existing user: Similar al test anterior bajo el endpoint /gethistory, pero esta vez utilizando una ruta con parámetro. Verifica si la solicitud a /gethistory/:username recupera correctamente la entrada de historial para un usuario específico usando la identificación del usuario en la URL, asegurándose de que todos los datos devueltos coincidan con los almacenados.
+Should get history entry for an existing user: Similar al test anterior bajo el endpoint /gethistory, pero esta vez utilizando una ruta con parámetro. Verifica si la solicitud a /gethistory/:username recupera correctamente la entrada de historial para un usuario específico usando la identificación del usuario en la URL, asegurándose de que todos los datos devueltos coincidan con los almacenados.
-
GET /getranking:
-
-
should handle insufficient data for rankings: Verifica que cuando no hay datos suficientes para calcular un ranking, el servicio devuelve correctamente un arreglo vacío, lo cual es importante para evitar errores en la visualización del cliente cuando no hay datos disponibles.
+Should handle insufficient data for rankings: Verifica que cuando no hay datos suficientes para calcular un ranking, el servicio devuelve correctamente un arreglo vacío, lo cual es importante para evitar errores en la visualización del cliente cuando no hay datos disponibles.
-
-
should return a correct ranking of players based on their scores: Asegura que el servicio calcula y devuelve el ranking de los jugadores de manera correcta basándose en sus respuestas acertadas y el total de preguntas jugadas, ordenando los jugadores según sus rendimientos.
+Should return a correct ranking of players based on their scores: Asegura que el servicio calcula y devuelve el ranking de los jugadores de manera correcta basándose en sus respuestas acertadas y el total de preguntas jugadas, ordenando los jugadores según sus rendimientos.
-
-
should correctly calculate posterior probabilities in rankings: Este test evalúa si se calcula adecuadamente las probabilidades a posteriori basadas en las estadísticas de juego de los jugadores, asegurando que los resultados del ranking sean justos y precisos.
+Should correctly calculate posterior probabilities in rankings: Este test evalúa si se calcula adecuadamente las probabilidades a posteriori basadas en las estadísticas de juego de los jugadores, asegurando que los resultados del ranking sean justos y precisos.
-
-
should handle server error during ranking calculation: Este test asegura que /getranking maneje correctamente los errores internos durante el cálculo del ranking, devolviendo un estado de error 500 para indicar problemas en el proceso.
+Should handle server error during ranking calculation: Este test asegura que /getranking maneje correctamente los errores internos durante el cálculo del ranking, devolviendo un estado de error 500 para indicar problemas en el proceso.
13.1.6. Tests User Service
-
-
should add a new user on POST /adduser: -Esta prueba verifica que un usuario nuevo se pueda añadir correctamente mediante el endpoint /adduser. Al enviar una solicitud POST con un nombre de usuario y contraseña válidos, se espera que el servidor responda con un código de estado 200 y que el cuerpo de la respuesta contenga el nombre de usuario que fue añadido.
+Should add a new user on POST /adduser: +Esta prueba verifica que un usuario nuevo se pueda añadir correctamente mediante el endpoint /adduser. Al enviar una solicitud POST con un nombre de usuario y contraseña válidos, se espera que el servidor responda con un código de estado 200 y que el cuerpo dé la respuesta contenga el nombre de usuario que fue añadido.
-
-
should reject a user without a username: +
Should reject a user without a username: Prueba la validación del campo requerido para el nombre de usuario. Al intentar registrar un usuario sin proporcionar un nombre de usuario, se espera que el servidor responda con un código de estado 400 y un mensaje de error indicando que falta el campo requerido "username".
-
-
should reject a user without a password: +
Should reject a user without a password: Verifica que el servicio rechace las solicitudes para crear un usuario que no incluyan una contraseña. Si se envía una solicitud sin una contraseña, el servidor debe responder con un código de estado 400 y un mensaje de error que indique que falta el campo requerido "password".
-
-
should not allow adding a user with an existing username: -Asegura que no se pueda registrar más de un usuario con el mismo nombre de usuario. l intentar añadir un usuario que ya existe en la base de datos, el servidor debe responder con un código de estado 400 y un mensaje indicando que el usuario ya existe.
+Should not allow adding a user with an existing username: +Asegura que no se pueda registrar más de un usuario con el mismo nombre de usuario. Al intentar añadir un usuario que ya existe en la base de datos, el servidor debe responder con un código de estado 400 y un mensaje indicando que el usuario ya existe.
-
-
should get all users correctly: -Este test verifica que el endpoint /user funcione correctamente al recuperar todos los usuarios registrados. Se espera que el servidor responda con un código de estado 200 y que el cuerpo de la respuesta contenga una lista de usuarios, mostrando únicamente sus nombres de usuario y fechas de creación.
+Should get all users correctly: +Este test verifica que el endpoint /user funcione correctamente al recuperar todos los usuarios registrados. Se espera que el servidor responda con un código de estado 200 y que el cuerpo dé la respuesta contenga una lista de usuarios, mostrando únicamente sus nombres de usuario y fechas de creación.
-
-
should update an existing user: -Este test verifica que el endpoint /user/:id actualice correctamente un usuario existente. Al enviar una solicitud PATCH con un nuevo nombre de usuario, se espera que el servidor responda con un código de estado 200 y que el cuerpo de la respuesta refleje la actualización.
+Should update an existing user: +Este test verifica que el endpoint /user/:id actualice correctamente un usuario existente. Al enviar una solicitud PATCH con un nuevo nombre de usuario, se espera que el servidor responda con un código de estado 200 y que el cuerpo dé la respuesta refleje la actualización.
-
-
should handle deletion of a non-existent user correctly: +
Should handle deletion of a non-existent user correctly: Este test asegura que el servidor responda correctamente cuando se intenta eliminar un usuario que no existe. Al enviar una solicitud DELETE a /user/:id con un ID inexistente, se espera que el servidor responda con un código de estado 404 y un mensaje de error indicando que el usuario no fue encontrado.
-
-
should handle internal server error when getting users: +
Should handle internal server error when getting users: Verifica que el servicio maneje correctamente los errores internos al intentar obtener la lista de usuarios. Si ocurre un error interno (simulado mediante un fallo en la conexión a la base de datos, por ejemplo), se espera que el servidor responda con un código de estado 500.
13.1.6. Tests User Service
13.1.7. Tests Componentes React
Estas pruebas han sido diseñadas para mejorar el coverage de la aplicacion y no tienen mayor objetivo que comprobar que los componentes se cargan de manera correcta, sin probar la funcionalidad, ya que de esta sen encargan los servicios, estos componentes son:
+Estas pruebas han sido diseñadas para mejorar el coverage de la aplicación y no tienen mayor objetivo que comprobar que los componentes se cargan de manera correcta, sin probar la funcionalidad, ya que de esta sen encargan los servicios, estos componentes son:
-
@@ -1707,7 +1679,7 @@
-
-
Creditos
+Créditos
-
Página de Error (404)
@@ -1746,7 +1718,7 @@13.1.7. Tests Componentes React
13.2. Pruebas e2e
-Estas pruebas estan enfocadas en el correcto funcionamiento de la aplicacion cuando el usuario interactua con ella. Haciendo que las páginas muestren los resultados esperados y redirijan de manera correcta.
+Estas pruebas están enfocadas en el correcto funcionamiento de la application cuando el usuario interactúa con ella. Haciendo que las páginas muestren los resultados esperados y redirijan de manera correcta.
Las features son:
@@ -1803,16 +1775,16 @@13.2. Pruebas e2e
13.1.7. Tests Componentes React
Ayuda