Estrategia de pruebas - dfgoUniandes/proyecto-final-uniandes-grupo-02 GitHub Wiki

Estrategia de pruebas

1. Sistema bajo pruebas

1.1. Nombre Sistema: Dermo App

1.2. Versión: 1.0.2

1.3. Descripción

DermoApp es un emprendimiento de base tecnológica que desea incursionar en el campo de la telemedicina, particularmente en el campo de la tele-dermatología. Donde sirva de puente entre paciente y especialista, encontrar especialistas cercanos a la zona de vivienda y seguimiento remoto a problemas dermatológicos. Es importante anotar que un tipo de pacientes al que está dirigida la aplicación habita en zonas geográficamente distantes, donde un dermatólogo es difícil o imposible de conseguir.

1.4. Funcionalidades Core

1.4.1. Funcionalidades App Web

  • DermoApp permite que los médicos registrados pueden ver los casos enviados por los pacientes, siempre y cuando la especialidad del médico y los síntomas del paciente coincidan. Este relacionamiento lo hace automáticamente la aplicación.
  • Si un caso remitido por el sistema le interesa a un médico, lo selecciona y analiza la información enviada por el paciente, tal como su ficha personal y las fotos de las lesiones enviadas. Si el médico se siente interesado por el caso, lo reclama, de lo contrario, lo libera para que otro médico lo tomé en caso de estar interesado
  • En caso de estar interesado, el médico realiza el análisis del caso y elabora un diagnóstico y lo comunica al paciente, quien lo recibe en su aplicación móvil.
  • La aplicación central recibe las solicitudes de los pacientes y las procesa de diferentes formas. En primer lugar, si el paciente solicita un diagnóstico automático, la aplicación se encarga de enviar los datos de la consulta a un servicio de ontología en línea.
  • Las ontologías permiten inferir conocimiento a partir de datos de consulta. El resultado arrojado por la ontología es un conjunto de diferentes diagnósticos con porcentajes de certitud.
  • Si el paciente solicita un diagnóstico de un médico, el sistema busca médicos que se hayan declarado expertos en el tipo de lesión asociada a la consulta.
  • Si el paciente declara que está interesado en acudir posteriormente a consulta con el médico, un segundo criterio de selección son los médicos que se encuentren a un determinado rango de distancia del lugar donde vive el paciente.
  • Si el paciente indica que no puede asistir a una cita con el médico, el criterio de cercanía no es tenido en cuenta para la selección de los médicos.

1.4.2. Funcionalidades App Móvil

  • Al iniciar el uso de la aplicación, el paciente acepta los términos y condiciones, así como los términos legales correspondientes que exoneran a los médicos tratantes y en donde queda claro que la herramienta se usa bajo el riesgo del paciente.
  • Un paciente puede crear consultas desde la aplicación móvil. Lo primero que hace es diligenciar un perfil de usuario, en el que se capturan los datos personales como nombre, edad y lugar de residencia. Adicionalmente, el paciente crea un perfil dermatológico en el que especifica su tipo de piel (Foto tipo – Tipo de piel de Fitzpatrick). Una vez los datos básicos han sido capturados el paciente puede crear consultas sobre problemas dermatológicos.
  • La aplicación móvil permite al usuario crear solicitudes de diagnóstico a partir de la descripción de una lesión.
  • La aplicación le permite al usuario seleccionar si desea que su consulta sea resuelta de forma automática mediante el uso de ontologías ofrecidas por terceros o si desea que sea un médico quien haga el diagnóstico.
  • Si decide que sea un médico y el paciente estaría dispuesto a ir a una consulta presencial, la aplicación recibe el diagnóstico de un médico que reclamó su caso. El paciente decide si desea continuar con el médico. La aplicación le permite agendar la cita con el médico.
  • Si el paciente decide el uso de un diagnóstico automático, la aplicación muestra los resultados obtenidos por el servicio de ontología para que el paciente pueda ver la descripción y tratamiento sugerido en cada caso. Se muestran los resultados cuyo porcentaje de certitud sea superior a un cierto valor.
  • La aplicación le debe permitir a un usuario incluir fotografías de las áreas afectadas, validando que el tamaño de las imágenes no supere un cierto valor límite.
  • La aplicación móvil debe tener en cuenta que la zona en la que se está utilizando el celular no cuente con servicio de internet. En ese caso, las consultas deben quedar almacenadas hasta que haya conectividad.
  • La aplicación tiene la opción de recibir un tratamiento propuesto por un médico y ayudar al paciente con recordatorios sobre los medicamentos o cremas que deba aplicarse.
  • La aplicación debe poder manejar acciones de seguimiento asociadas a un diagnóstico. Es decir el paciente puede tomar conjuntos de fotos periódicamente para ser enviadas a su médico tratante e ir analizando la evolución de la lesión.

1.4.3. Funcionalidades Backend

  • La aplicación debe ser capaz de guardar un nuevo médico en el sistema.
  • La aplicación debe poder guardar y gestionar (CRUD) las historias clínicas.
  • La aplicación debe poder filtrar y consultar los casos médicos.
  • La aplicación debe poder gestionar (CRUD) las agendas.
  • La aplicación debe poder filtrar y consultar las agendas.
  • La aplicación debe ser capaz de guardar un nuevo usuario.
  • La aplicación debe ser capaz de generar un diagnóstico según los síntomas del paciente.

2. Contexto de la estrategia de pruebas

2.1. Objetivos:

2.1.1. Objetivos Backend:

  • B1. Definir y ejecutar pruebas unitarias en unittest de Python para cada función desarrollada de los componentes de backend
  • B2. Definir y ejecutar pruebas de carga a través de JMeter hacía el Backend de la aplicación.

2.1.2. Objetivos App Móvil:

  • M1. Definir y ejecutar pruebas unitarias usando el framework de pruebas de Jasmine (Pruebas de Ionic/Angular) para cada componente desarrollado en la aplicación móvil.
  • M2. Diseñar y ejecutar pruebas E2E usando Cypress para validar las funcionalidades de la app móvil en un ambiente real.
  • M3. Realizar pruebas manuales para identificar posibles problemas de usabilidad y accesibilidad que pueden afrontar los pacientes que usan la App móvil.
  • M4. Realizar pruebas de reconocimiento automático usando el Monkey_Cypress para identificar posibles errores que no fueron identificados mediante las pruebas manuales y las pruebas E2E en la aplicación móvil.
  • M5. Diseñar y ejecutar pruebas E2E usando Cypress para validar las funcionalidades de internacionalización en la aplicación movil

2.1.3. Objetivos App Web:

  • W1. Definir y ejecutar pruebas unitarias usando el framework de pruebas de Jasmine (Pruebas de Angular) para cada componente desarrollado en la aplicación web.
  • W2. Diseñar y ejecutar pruebas E2E usando Cypress para validar las funcionalidades de la app web en un ambiente real.
  • W3. Realizar pruebas manuales para identificar posibles problemas de usabilidad y accesibilidad que pueden afrontar los médicos que usan la aplicación web.
  • W4. Realizar pruebas de reconocimiento automático usando el Monkey_Cypress para identificar posibles errores que no fueron identificados mediante las pruebas manuales y las pruebas E2E en la aplicación web.
  • W5. Diseñar y ejecutar pruebas E2E usando Cypress para validar las funcionalidades de internacionalización en la aplicación web

2.2. Duración de la iteración de pruebas: 27 Febrero 2023 - 19 Marzo 2023.

2.3.Presupuesto de pruebas:

2.3.1. Recursos Humanos

Para el desarrollo e implementación de la estrategia de pruebas se cuenta con los siguientes perfiles de testers:

  • Tester 1: Tiene experiencia en el diseño y ejecución de pruebas usando APIs de automatización para pruebas como playwright y cypress para la ejecución de pruebas de reconocimiento y generación de reportes.
  • Tester 2: Tiene experiencia en el diseño y ejecución de pruebas unitarias en Angular y Ionic/Angular usando el framework para pruebas de Jasmine.
  • Tester 3: Tiene experiencia en diseño y ejecución de pruebas unitarias en Python usando las librerías de pruebas unitarias Unittest.
  • Tester 4: Tiene experiencia en la instalación, configuración y ejecución de monkeys usando Monkey_Cypress para la realización de pruebas de reconocimiento automáticas.

El tiempo disponible de cada tester para pruebas es de 3h/semana.

2.3.2. Recursos Computacionales

  • 4 computadores personales: Intel core I7 4700, 16 GB RAM, 500 GB de almacenamiento, red de Internet 100 Mbps. Tiempo disponible: 8 horas / semana.

2.4. TNT (Técnicas, Niveles y Tipos) de pruebas:

Técnica Nivel Tipo Objetivo
API Automatización Cypress Sistema Funcionales M2 M5 W2 W5
Librería de Pruebas unitarias de Unittest Unidad Caja blanca B1
Framework de Pruebas unitarias de Jasmine Unidad Caja blanca M1 W1
Pruebas Manuales Sistema Funcionales M3 W3
Pruebas de reconocimiento con Monkey_Cypress Sistema Caja negra M4 W4
Pruebas de carga Sistema Funcionales B2

2.5. Distribución de Esfuerzo

2.5.1 Lista de Actividades

B1. Definir y ejecutar pruebas unitarias en unittest de Python para cada función desarrollada de los componentes de backend:

  • Instalación de la librería de Python Unittest en los proyectos de Python.
  • Creación del archivo de Python para las pruebas unitarias
  • Selección de las funciones a las cuales se le diseñarán las pruebas unitarias.
  • Definición de los casos de prueba que se implementaran en las pruebas unitarias
  • Creación de las pruebas unitarias basado en los casos de prueba definidos.
  • Ejecución de pruebas unitarias y verificación de los resultados de las mismas.

B2. Definir y ejecutar pruebas de carga a través de JMeter hacía el Backend de la aplicación.

  • Instalación de JMeter.
  • Creación del archivo de JMeter con las pruebas de carga.
  • Selección de las funciones a las cuales se le diseñarán las pruebas de carga.
  • Creación de las pruebas de carga basado en los casos de prueba definidos.
  • Ejecución de pruebas de carga y verificación de los resultados de las mismas.

M1. Definir y ejecutar pruebas unitarias usando el framework de pruebas de Jasmine (Pruebas de Ionic/Angular) para cada componente desarrollado en la aplicación móvil

  • Definir los casos de pruebas que se aplicaran sobre el componente o servicio desarrollado.
  • Creación del archivo Spec de pruebas para el componente o servicio desarrollado.
  • Configuración del archivo Spec de pruebas para lograr instanciar correctamente el componente o servicio de pruebas.
  • Implementación del caso de pruebas dentro del archivo Spec de pruebas de acuerdo a la definición de casos realizada previamente.
  • Ejecución y verificación de los resultados de las pruebas.

M2. Diseñar y ejecutar pruebas E2E usando Cypress para validar las funcionalidades de la app móvil en un ambiente real.

  • Preparación y configuración de la herramienta Cypress.
  • Verificación de código para pruebas E2E en la herramienta Cypress.
  • Ejecución de pruebas E2E en la herramienta Cypress.
  • Análisis de resultados de pruebas E2E en la herramienta Cypress.
  • Corrección de código, si es necesario por pruebas fallidas en la herramienta Cypress.
  • Validación de la generación de reportes y tomas de screenshots en la herramienta Cypress.

M3. Realizar pruebas manuales para identificar posibles problemas de usabilidad y accesibilidad que pueden afrontar los pacientes que usan la App móvil.

  • Realizar el inventario de pruebas manuales basado en las funcionalidades desarrolladas para la aplicación móvil
  • Ejecutar las pruebas definidas en el inventario de pruebas.
  • Documentar los resultados de cada prueba en el documento de inventario de pruebas

M4. Realizar pruebas de reconocimiento automático usando el Monkey_Cypress para identificar posibles errores que no fueron identificados mediante las pruebas manuales y las pruebas E2E en la aplicación móvil.

  • Preparación y configuración de la herramienta Cypress.
  • Verificación de código para pruebas de reconocimiento usando el Monkey en la herramienta Cypress.
  • Ejecución de pruebas de reconocimiento Monkey en la herramienta Cypress.
  • Análisis de resultados de pruebas en Monkey en la herramienta Cypress.
  • Corrección de código, si es necesario por pruebas fallidas generadas por los Monkey.
  • Validación de la generación de reportes en las pruebas Monkey.

M5. Diseñar y ejecutar pruebas E2E usando Cypress para validar las funcionalidades de internacionalización en la aplicación móvil.

  • Preparación y configuración de la herramienta Cypress.
  • Definición de la prueba E2E orientada a las funcionalidades de internacionalización.
  • Verificación de código para pruebas E2E en la herramienta Cypress.
  • Ejecución de pruebas E2E en la herramienta Cypress.
  • Análisis de resultados de pruebas E2E en la herramienta Cypress.
  • Corrección de código, si es necesario por pruebas fallidas en la herramienta Cypress.
  • Validación de la generación de reportes y tomas de screenshots en la herramienta Cypress.

W1. Definir y ejecutar pruebas unitarias usando el framework de pruebas de Jasmine (Pruebas de Angular) para cada componente desarrollado en la aplicación web.

  • Definir los casos de pruebas que se aplicaran sobre el componente o servicio desarrollado.
  • Creación del archivo Spec de pruebas para el componente o servicio desarrollado.
  • Configuración del archivo Spec de pruebas para lograr instanciar correctamente el componente o servicio de pruebas.
  • Implementación del caso de pruebas dentro del archivo Spec de pruebas de acuerdo a la definición de casos realizada previamente.
  • Ejecución y verificación de los resultados de las pruebas.

W2. Diseñar y ejecutar pruebas E2E usando Cypress para validar las funcionalidades de la app web en un ambiente real.

  • Preparación y configuración de la herramienta Cypress.
  • Verificación de código para pruebas E2E en la herramienta Cypress.
  • Ejecución de pruebas E2E en la herramienta Cypress.
  • Análisis de resultados de pruebas E2E en la herramienta Cypress.
  • Corrección de código, si es necesario por pruebas fallidas en la herramienta Cypress.
  • Validación de la generación de reportes y tomas de screenshots en la herramienta Cypress.

W3. Realizar pruebas manuales para identificar posibles problemas de usabilidad y accesibilidad que pueden afrontar los médicos que usan la aplicación web.

  • Realizar el inventario de pruebas manuales basado en las funcionalidades desarrolladas para la aplicación móvil
  • Ejecutar las pruebas definidas en el inventario de pruebas.
  • Documentar los resultados de cada prueba en el documento de inventario de pruebas

W4. Realizar pruebas de reconocimiento automático usando el Monkey_Cypress para identificar posibles errores que no fueron identificados mediante las pruebas manuales y las pruebas E2E en la aplicación web.

  • Preparación y configuración de la herramienta Cypress.
  • Verificación de código para pruebas de reconocimiento usando el Monkey en la herramienta Cypress.
  • Ejecución de pruebas de reconocimiento Monkey en la herramienta Cypress.
  • Análisis de resultados de pruebas en Monkey en la herramienta Cypress.
  • Corrección de código, si es necesario por pruebas fallidas generadas por los Monkey.
  • Validación de la generación de reportes en las pruebas Monkey.

W5. Diseñar y ejecutar pruebas E2E usando Cypress para validar las funcionalidades de internacionalización en la aplicación web.

  • Preparación y configuración de la herramienta Cypress.
  • Definición de la prueba E2E orientada a las funcionalidades de internacionalización.
  • Verificación de código para pruebas E2E en la herramienta Cypress.
  • Ejecución de pruebas E2E en la herramienta Cypress.
  • Análisis de resultados de pruebas E2E en la herramienta Cypress.
  • Corrección de código, si es necesario por pruebas fallidas en la herramienta Cypress.
  • Validación de la generación de reportes y tomas de screenshots en la herramienta Cypress.

2.5.2 Distribución de esfuerzo - estrategia final

Enlace Diagrama de Gantt Distribucion de esfuerzo Diagrama gantt pruebas 1 0 2