Resultado de la estratregia de pruebas Sprint3 - MISW-4203-2023/Vinilos GitHub Wiki

Desarrollo y resultado de la estrategia de pruebas Sprint 3

Pruebas Unitarias

Se realizó el desarrollo y ejecución de pruebas unitarias para comprobar el funcionamiento de los componentes Viewmodel y Repository para las historias de usuario.

Pruebas sobre CollectorsRepository

Para la realización de estas pruebas fue necesario primero modificar un objeto que contenga la lista del objeto Collection esta va a emular los datos que vienen del API Rest, esto se configuró en el archivo FakeDataSource

image

Después se creó un FakeApiService para Coleccionistas, este va a emular el comportamiento del ApiService real que se usó para traer la información de cada una de las listas.

image

image

Al igual que el ApiService es necesario emular el repository

image

Por último se crean las clases que van a contener los test y que probarán el funcionamiento de del repository, dentro de cada prueba se realiza un assertEquals para comparar lo que traen las listas de FakeDataSource versus lo que trae el repository emulado.

Captura de pantalla 2023-12-01 193004

Captura de pantalla 2023-12-01 193217

Captura de pantalla 2023-12-01 193224

Ejecución de las pruebas:

Captura de pantalla 2023-12-01 193429

Pruebas sobre los viewmodels

Se realizaron las pruebas unitarias sobre los viewModel, con el fin de comprobar que cada viewModel cumpla con la función de conectarse con el AppContainer además de guardar las listas en el UiState correspondiente.

Para estas pruebas se reutilizaron el FakeApiService para Collectors así como el FakeNetworkRepository.

Por otro lado, se tuvo que emular el distpacher del main creando uno propio en donde van a contener las rules de starting y finished

image

  • Se crearon las pruebas en el archivo AlbumAddViewModelTest image

  • Se crearon las pruebas en el archivos CollectorsViewModelTest

image

Ejecución de las pruebas:

Captura de pantalla 2023-12-02 173731

Pruebas automatizadas de la interfaz de usuario

Se llevó a cabo una evaluación exhaustiva de la aplicación a través de pruebas automatizadas con el propósito de asegurar tanto la correcta funcionalidad de la navegación como la presentación adecuada de los elementos de la interfaz, como los iconos, en sus respectivas pantallas correspondientes. Durante este proceso de pruebas, se hizo uso de la herramienta de construcción Gradle. Esta herramienta posibilita la compilación de dependencias específicas para pruebas de interfaz de usuario (IU), activándose exclusivamente al ejecutar dichas pruebas.

Las pruebas automatizadas de UI se dividieron principalmente en 2 actividades

Pruebas de navegación

Para llevar a cabo la validación, se empleó el componente Jetpack Navigation. Este componente permitió establecer rutas de navegación mediante clics, asegurando así que el recorrido condujera a las pantallas indicadas. Estos tests abarcaron distintos aspectos para confirmar la efectividad de la aplicación a continuación se mencionan los trabajados:

  1. Verificar que la ruta de navegación coincidiera con cada uno de los botones presentes en la barra inferior (menú).
  2. Comprobar que el botón de salida estuviera exclusivamente presente en las pantallas de listas.
  3. Confirmar que la pantalla de inicio coincidiera con la pantalla que contenía los botones de ingreso.
  4. Validar que el botón “volver” (<-) exista exclusivamente para pantallas de detalle
  5. Validar que el botón de "Album" dirigiera hacia la pantalla de lista, como estaba previsto.
  6. Validar que el botón de "Artista" dirigiera hacia la pantalla de lista, como estaba previsto.
  7. Validar que el botón de "coleccionista" dirigiera hacia la pantalla de lista, como estaba previsto.
  8. Validar que el botón de ">" de la pantalla del album dirigiera hacia la el detalle del album que se seleccionara, como estaba previsto.
  9. Validar que el botón de ">" de la pantalla del artista dirigiera hacia la el detalle del artista que se seleccionara, como estaba previsto.
  10. Validar que el botón de ">" de la pantalla del coleccionista dirigiera hacia la el detalle del coleccionista que se seleccionara, como estaba previsto.
  11. Validar que el menu en el detalle del coleccionista funcionaran adecuadamente los botones como ver los albumes, los comentarios y los artistas favotritos, como estaba previsto.
  12. Validar que permitiera añadir un artista favorito en el detalle de artista y permitir verlo cuando ingresara si el artista era favorito o no.
  13. Validar que permitiera crear un nuevo Album en la lista de albumes.

Pruebas de UI con datos Fake

Adicional al sprint 1, se modificó el repositorio Fake que devolviera de forma aleatoria un listado de 100 coleccionistas además de los albumes y los artistas para cada una de las pantallas de pruebas. Se ejecutaron pruebas de funcionalidad que validaron en este sprint lo siguiente:

Captura de pantalla 2023-12-01 151439

Captura de pantalla 2023-12-01 151746

Video funcionamiento

Video pruebas e2e manuales

Accesibilidad

En el marco de nuestras pruebas de accesibilidad, y en cumplimiento con el plan de pruebas establecido, hemos empleado dos aplicaciones para Android: TalkBack y las pruebas de accesibilidad (AccessibilityScanner). Este proceso ha implicado la minuciosa verificación de las 8 Historias de Usuario (HU) desarrolladas. Durante este análisis, identificamos diversas sugerencias que abordamos de manera exhaustiva, abordando cada una de ellas de forma individual. Nuestra meta ha sido proporcionar soluciones con el objetivo de optimizar la experiencia de navegación en la aplicación, garantizando así la accesibilidad y usabilidad para todos los usuarios.

Para encontrar el detalle de cada prueba se puede evidenciar un video y las Issues creadas para atacar cada sugerencia:

Accesibilidad

Analisis de desempeño

Para nuestra validación de desempeño de la aplicación se hizo uso de Profiler que es una herramienta integrada en Android Studio que permite analizar el rendimiento de la aplicación en términos de uso de CPU, memoria, red y otros recursos.

  • CPU Profiler: permite analizar el uso de la CPU por parte de la aplicación. Se puede ver el tiempo que se gasta en cada método y función, lo que ayuda a identificar cuellos de botella y optimizar el rendimiento.

  • Memory Profiler: ayuda a analizar el uso de la memoria en la aplicación. Se puede identificar las asignaciones de memoria, los objetos no utilizados y otros problemas de gestión de memoria.

  • Network Profiler: Permite analizar el tráfico de red de la aplicación. Se puede ver las solicitudes HTTP, el tiempo de respuesta y otros detalles relacionados con la red.

  • GPU Profiler: ayuda a analizar el rendimiento gráfico de la aplicación. Se puede identificar problemas relacionados con la renderización y la GPU.

  • Energy Profiler: Muestra información sobre el consumo de energía de la aplicación, lo que es crucial para aplicaciones móviles que deben ser eficientes en términos de energía.

Podemos encontrar un video y un analisis realizado de cada uno de estos puntos:

Perfilamiento