Resultados de Pruebas

Casos de Uso del Sistema

1. Carga de archivos CSV

Diagrama de Secuencia y Cursos Alternativos

Curso Principal de Eventos

1. El Recepcionista selecciona la opción "Archivo -> Cargar Habitaciones" o "Archivo -> Cargar Reservas" en el menú de la aplicación.
Paso 1: Menú Cargar HabitacionesPaso 1A: Menú Cargar Reservas
2. El Sistema abre una ventana de diálogo para que el Recepcionista pueda seleccionar el archivo deseado.

3. El Recepcionista busca y selecciona el archivo .CSV que contiene los datos válidos de habitaciones y/o reservas que desea cargar.
Paso 2: Diálogo para seleccionar HABITACIONES.csvPaso 2A: Diálogo para seleccionar RESERVAS.csv
4. El Sistema valida la estructura interna y el formato de los datos del archivo CSV seleccionado para asegurar su compatibilidad.

5. El Sistema lee los datos línea por línea del archivo CSV y almacena esta información en memoria.

6. El Sistema actualiza las tablas de habitaciones y/o reservas en la base de datos con los datos importados.
Paso 3: Habitaciones cargadas y mostradasPaso 3A: Reservas cargadas y mostradas

Curso Alternativo de Eventos

Escenario de Error: Archivo de Reservas Inválido

1A1. El Recepcionista selecciona un archivo con una extensión o formato general inválido (ej. .txt, .pdf), o un archivo .CSV que no corresponde (por ejemplo, intenta cargar "RESERVAS.csv" cuando se esperaba "HABITACIONES.csv").
ERROR_1: Intento de cargar RESERVAS.csv como Habitaciones

Escenario de Error: Estructura de Datos Inválida

2A2. El Sistema notifica con un mensaje de error específico que la estructura del archivo no es válida y detiene el proceso de carga.
ERROR_2: Mensaje de error por estructura de archivo inválida

2. Consultar estado de todas las habitaciones

Diagrama de Secuencia y Cursos Alternativos

Curso Principal de Eventos

1. El Recepcionista ingresa las fechas de inicio (17-07-2025) y fin (20-07-2025) de la búsqueda y pulsa el botón "Mostrar todas las habitaciones".
Paso 1: Ingreso de fechas
2. El Sistema verifica que el rango de fechas ingresado es válido y coherente.

3. El Sistema recupera todas las habitaciones registradas en la base de datos.

4. Para cada habitación, el Sistema verifica su estado de ocupación dentro del rango de fechas especificado.
5. El Sistema muestra una tabla con todas las habitaciones y su estado (Disponible/Ocupada) para el rango de fechas consultado.
Paso 5: Resultado de la consulta

Curso Alternativo de Eventos

Escenario de Error: Rango de Fechas Inválido

1A1. Se ingresa un rango de fechas inválido (ej. fecha de fin anterior a fecha de inicio o formato incorrecto).

2A1. El Sistema muestra un mensaje de error indicando que el rango de fechas es inválido.
ERROR: Rango de fechas inválido

3. Consultar solo habitaciones disponibles

Diagrama de Secuencia y Cursos Alternativos

Curso Principal de Eventos

1. El Recepcionista ingresa las fechas de búsqueda (17-07-2025 a 20-07-2025) y pulsa el botón "Mostrar habitaciones disponibles".
Paso 1: Ingreso de fechas
2. El Sistema verifica que el rango de fechas es válido.

3. El Sistema recupera todas las habitaciones registradas.

4. El Sistema filtra las habitaciones verificando su disponibilidad en el rango especificado.
5. El Sistema muestra una tabla solo con las habitaciones disponibles (ej. 101, 102, 103, etc.) excluyendo las ocupadas (ej. 205).
Paso 5: Resultado con solo habitaciones disponibles

Curso Alternativo de Eventos

Escenario de Error: Rango de Fechas Inválido

1A1. Se ingresa un rango inválido (04-07-2025 a 02-07-2025) donde la fecha final es anterior a la inicial.

2A1. El Sistema muestra mensaje de error: "Rango de fecha incorrecto" y no realiza la consulta.
ERROR: Rango de fechas inválido

4. Consultar habitaciones disponibles por calendario

Diagrama de Secuencia y Cursos Alternativos

Curso Principal de Eventos

1. El Recepcionista selecciona la ventana "Calendario" en la interfaz.
Paso 1: Interfaz de calendario
2. El Recepcionista selecciona fecha de inicio (04-07-2025) en el primer calendario.

3. El Recepcionista selecciona fecha de fin (11-07-2025) en el segundo calendario.
Paso 2-3: Selección de fechas
4. El Sistema verifica que el rango de fechas es válido.

5. El Sistema recupera todas las habitaciones registradas.

6. El Sistema verifica disponibilidad para cada habitación en el rango seleccionado.
7. El Sistema muestra tabla con solo habitaciones disponibles (101, 102, etc.) para las fechas seleccionadas.
Paso 7: Resultado de disponibilidad

Curso Alternativo de Eventos

Escenario de Error: Rango de Fechas Inválido

1A1. El Recepcionista selecciona un rango inválido (fecha fin anterior a inicio).

2A1. El Sistema muestra mensaje de error sobre rango inválido y no realiza la consulta.
ERROR: Rango de fechas inválido

5. Agregar Reservaciones

Diagrama de Secuencia y Cursos Alternativos

Curso Principal de Eventos

1. El Recepcionista selecciona una habitación disponible (ej. 105) y presiona "Reservar".
Paso 1: Selección de habitación
2. El Sistema abre formulario con datos pre-cargados (habitación 105, fechas 04-07 a 11-07-2025).

3. El Recepcionista ingresa nombre (Víctor Santos) y selecciona servicios adicionales (Desayuno).
Paso 2-3: Formulario de reserva
4. El Sistema calcula automáticamente el precio total ($819,000) incluyendo servicios.

5. El Recepcionista confirma la reserva presionando "Aceptar".

6. El Sistema verifica disponibilidad y crea la reserva.
7. El Sistema actualiza las tablas mostrando la habitación 105 como ocupada y registrando la reserva.
Paso 7: Actualizacion tabla habitaciones Paso 7: Reserva creada en lista

Curso Alternativo de Eventos

Escenario de Error: No selección de habitación

1A1. El Recepcionista presiona "Reservar" sin seleccionar ninguna habitación en la tabla.
ERROR: No se seleccionó habitación
2A1. El Sistema muestra mensaje de error: "No se ha seleccionado una habitación".
Mensaje de error: No selección

Escenario de Error: Habitación ocupada

1A2. El Recepcionista selecciona una habitación que aparece como ocupada (ej. 105) e intenta reservar.
ERROR: Habitación ocupada seleccionada
2A2. El Sistema muestra inmediatamente error: "Habitación ocupada".
Mensaje error: Habitación ocupada

Escenario de Error: Tabla desactualizada

1A3. El Recepcionista selecciona habitación que aparece disponible pero está ocupada (tabla no actualizada).
ERROR: Tabla desactualizada
2A3. El Sistema abre formulario normalmente (no detecta error inicialmente).
Formulario abierto normalmente
3A3. Recepcionista ingresa nombre y servicios (el sistema calcula precio normalmente).
Datos completados normalmente
4A3. Al confirmar, el Sistema detecta conflicto y muestra: "Error: No se ha creado la reserva".
Error final: Habitación ocupada

6. Eliminar Reserva

Diagrama de Secuencia y Cursos Alternativos

Curso Principal de Eventos

1. El Recepcionista selecciona la ventana "Reservaciones" en la interfaz.
Paso 1: Vista de reservaciones
2. El Recepcionista selecciona una reserva (ej. Alex Carrasco - Hab. 903) en la tabla.

3. El Recepcionista pulsa el botón "Eliminar".
Paso 2-3: Selección de reserva
4. El Sistema muestra ventana de confirmación: "¿Eliminar esta reserva?"

5. El Recepcionista confirma la eliminación.
Paso 4-5: Confirmación de eliminación
6. El Sistema verifica la reserva en la base de datos.

7. El Sistema elimina la reserva.

8. El Sistema actualiza la tabla de reservas, mostrando el cambio.
Paso 8: Tabla actualizada

Curso Alternativo de Eventos

Escenario de Error: No selección de reserva

1A1. El Recepcionista pulsa "Eliminar" sin haber seleccionado una reserva.

2A1. El Sistema muestra error: "Seleccione una reserva para eliminar".
ERROR: No se seleccionó reserva

Escenario de Error: Cancelación de eliminación

1A2. El Recepcionista no confirma la eliminación cuando el sistema lo solicita.

2A2. El Sistema mantiene la reserva sin cambios.
Reserva no eliminada

7. Guardado de archivos CSV

Diagrama de Secuencia y Cursos Alternativos

Curso Principal de Eventos

1. El Recepcionista selecciona "Archivo" → "Guardar Reservas" en el menú principal.
Paso 1: Menú Guardar Reservas
2. El Sistema muestra diálogo para seleccionar ubicación y nombre de archivo (RESERVAS.csv).

3. El Recepcionista selecciona ubicación y confirma el guardado.

4. El Sistema valida el formato y agrega extensión .csv si es necesario.
Paso 2: Diálogo de guardado
5. El Sistema crea/sobrescribe el archivo CSV con los datos actuales.

6. El Sistema muestra confirmación: "Reservas guardadas correctamente".
Paso 6: Confirmación de guardado

8. Guardar archivo CSV al cerrar aplicación

Diagrama de Secuencia y Cursos Alternativos

Curso Principal de Eventos

1. El Recepcionista intenta cerrar la aplicación (haciendo clic en la "X" de la ventana).
Paso 1: Intento de cierre
2. El Sistema detecta cambios no guardados y muestra diálogo: "¿Desea guardar los datos antes de salir?".
Paso 2: Diálogo de confirmación
3. El Recepcionista selecciona "Sí" para guardar.

4. El Sistema muestra diálogo estándar de guardado de archivo CSV.
Paso 4: Diálogo de guardado
5. El Sistema valida el nombre del archivo (agrega .csv si es necesario).

6. El Sistema guarda los datos y muestra confirmación: "Datos guardados correctamente".

7. El Sistema cierra la aplicación.

Dificultades del desarrollo

  1. Extracción de datos vía servidor o nube:

    El sistema requiere de una carga de archivos con habitaciones, y si es que existen, de reservas. La idea inicial consistía en que estos archivos estuvieran almacenados en la nube o en un servidor, simulando de esta forma el funcionamiento de la aplicación en un entorno empresarial. En este contexto se requeriría de una sincronización con los datos de la red, permitiendo así múltiples recepcionistas generando reservas a la vez. Por simplicidad se decidió hacer la extracción de datos de archivos guardados de forma local en el dispositivo, por lo que este sería un aspecto a mejorar en futuras versiones.
  2. Modificar reservas existentes:

    En un inicio se tenia planeado la opción de editar una reserva desde la pestaña de reservas, permitiendo modificar la habitación, las fechas y los servicios incluidos. Esto presentaba multiples dificultades ya que desde el formulario se debía verificar que la nueva habitación existiera y que además estuviera disponible en las nuevas fechas escogidas. Esta funcionalidad presentaba inconsistencias con el diseño del formulario, el cual fue pensado en primera instancia para crear reservas desde la pestaña de habitaciones, donde ya se validaba la disponibilidad. Por esta razón se decidió eliminar la opción de modificar reserva, optando por el flujo de eliminar la reserva y reservar nuevamente desde la pestaña de habitaciones, manteniendo las funciones criticas del sistema.
  3. Consideración de casos críticos del sistema:

    Durante el desarrollo, se identificaron y solucionaron varios escenarios considerados como casos críticos que podrían afectar la funcionalidad del sistema. Para esto se implementaron soluciones que incluyen: Verificación del archivo de origen a cargar en la aplicación, ingreso erróneo de fechas, disponibilidad de habitaciones, actualización de las tablas, entre otros.

Bugs presentes

  1. Problema: Realizar cambios en las fechas de búsqueda y no actualizar la tabla de habitaciones.

    Descripcion: Este problema consiste en que cuando no se actualiza la tabla luego de hacer un cambio de fechas, puede que aparezcan disponibles algunas habitaciones que en realidad están ocupadas en ese nuevo rango de fechas, lo que permite acceder al formulario para hacer la reserva de esa habitación. A pesar de que el sistema permite acceder al formulario de la reserva, cuando se desea efectuar la reserva el sistema está diseñado para impedir que se efectúen reservas de habitaciones ya ocupadas, por lo que se despliega una ventana de error. Por lo tanto aunque el sistema tiene soporte para evitar reservas invalidas es importante actualizar la tabla de habitaciones disponibles cada vez que se haga un cambio en las fechas, evitando errores de este tipo.

  2. Problema: Reservar una habitación previo a la carga del archivo de reservas.

    Descripción: Este problema consiste en que si se realiza una reserva previo a cargar la lista con todas las reservas, cuando se efectué la carga del archivo la reserva inicial será sobrescrita con las del archivo, por tanto es indispensable que si existe un archivo con reservas sea cargado al iniciar el programa, evitando este tipo de errores.