-
Notifications
You must be signed in to change notification settings - Fork 0
Testing
Para la gestión de la implementación de los test ha sido necesaria la creación de una nueva tarea en Jira, en la cual se han añadido una sub-tarea por cada uno de los casos de uso que hay en la aplicación.
Esta tarea ha sido llamada "Testing" y ha quedado configurada como muestra la imagen siguiente.
Cada test se ha estimado en unas 2 horas. Esta estimación es fruto de tener en cuenta el tiempo para formarse en Espresso o JUnit, la gestión de las ramas pertinentes y la propia grabación y/o creación de los test.
Para los test unitarios no ha sido necesaria la creación de ninguna subtarea, ya que se hicieron en el pasado en una tarea propia de testing relacionada con la tarea de la implementación de la búsqueda de sets.
Tras una reunión del equipo, se ha decidido repartir los test de manera igualitaria, ya que todos hemos participado en la implementación de todos o casi todos los casos de uso y, tras el reajuste de tiempos del proyecto, si cada persona se hacia responsable del contenido de su Sprint, quedaba una carga de trabajo desigual.
Para las pruebas unitarias, se ha elegido el framework de testing JUnit, ya que viene integrada por defecto en el IDE Android Studio, cosa que asegura su total integración en el mismo junto con la sencillez de no hacer necesario ningún proceso de instalación de librerias externas y/o herramientas.
Se deberá comprobar, como mínimo, que todas las clases con acceso a datos son cubiertas por estos tests, lo cual involucra:
-
com.gd05.brickr.api.RebrickableService
-
com.gd05.brickr.database.BrickrDatabase
Debido a que la parte de los tests a la base de datos son opcionales por el patrón Room, solo se han hecho los test pertinentes en RebrickableService.
Para la prueba de la API, se ha creado un test sobre el servicio que envuelve a la misma. Estos tests comprueban el mapeo de datos entre el cliente (Nosotros) y la API (Rebrickable) al mismo tiempo que la key de seguridad proveída por el servidor.
Para evitar la sobrecarga a la API, se ha añadido una espera de 1 segundo y 1 milisegundo entre tests de cara a no sobrecargar la API.
@Before
fun beforeTest() {
service = RebrickableService
Thread.sleep(1001)
}
Los test están hechos de tal manera que se comprueba que cada petición acepta una serie de parámetros, se mapean correctamente y la consulta acaba siendo correcta, lo que comprobaria que las clases de entrada y salida de la API junto con los end-points atacados son correctos.
@Test
fun test_colors() {
var response = service.getColors(ColorsRequest())
.execute()
if (response.isSuccessful) {
assert(response.body() != null)
} else
assert(false)
}
Finalmente, podremos ver la ejecución correcta del test a pesar de su larga duración debido a la espera entre acciones del mismo.
Como parte de los test funcionales, se ha decidido por la utilización de Espresso debido a que es el framework de testing enseñado en la asignatura de Arquitecturas Software en Entornos Empresariales.
Se ha de crear un test por cada Historia de Usuario, demostrando que se cubren todos los requerimientos pedidos por el cliente al inicio del proyecto. Para cada historia se harán uno o varios test que demuestren que esa funcionalidad existe y funciona en la aplicación.
Las historias de usuario a cubrir son las siguientes:
-
GD05-10: Buscar pieza
-
GD05-11: Guardar pieza en "Mi Inventario"
-
GD05-12: Cambiar tamaño de letra
-
GD05-13: Activar modo oscuro
-
GD05-14: Consultar Inventario
-
GD05-15: Modificar cantidad piezas de "Mi Inventario"
-
GD05-16: Eliminar pieza de "Mi Inventario"
-
GD05-18: Buscar Set
-
GD05-19: Compartir Set
-
GD05-21: Filtrar piezas de Mi Inventario
-
GD05-22: Guardar piezas de Set en Mi Inventario
-
GD05-23: Eliminar piezas de Set en Mi Inventario
-
GD05-24: Ver Favoritos
-
GD05-25: Guardar Favoritos
-
GD05-26: Eliminar Favoritos
-
GD05-27: Verificar piezas
-
GD05-28: Consultar piezas Set
1. GD05-10: Buscar pieza
Descripción: El test Espresso diseñado para la historia de usuario de Buscar pieza se basa en el uso de la barra de búsqueda de la página principal, donde se introduce el nombre de una pieza y se comprueba que existe en la lista de resultados.
Autor: Sr. Naranja
Resultado: Exitoso
Problemas encontrados: Ninguno.
2. GD05-11: Guardar Pieza en Mi Inventario
Descripción: El test Espresso diseñado para la historia de usuario de guardar pieza en mi inventario accede a la vista detalle de una pieza, modifica la cantidad de esta pasando de 0 a 1 y navega a la sección Mi Inventario comprobando que existe el elemento.
Autor: Sr. Marrón
Resultado: Exitoso
Problemas encontrados: El test dio varios problemas debido al uso de tildes en ciertas palabras y no realizar tiempos de espera para que cargasen los datos.
3. GD05-12: Cambiar tamaño de letra
Descripción: El test accede a la pantalla de ajustes, modifica el tamaño de la letra y verifica que se siguen mostrando los textos y se han ampliado
Autor: Sr. Blanco
Resultado: Exitoso
Problemas encontrados: Ha sido complicado verificar el cambio en el tamaño de la letra
4. GD05-13: Activar modo oscuro
Descripción: El test Espresso diseñado para la historia de usuario de cambio al modo oscuro simplemente accede al menú desplegable de la barra superior en la página principal, desde donde accede a la sección de 'Ajustes' para finalmente activar la configuración de modo oscuro. Una vez activado el modo oscuro, se realiza una comprobación para determinar que el modo de la IU es UI_MODE_NIGHT_YES
.
Autor: Sr. Naranja
Resultado: Exitoso
Problemas encontrados: Ninguno.
5. GD05-14: Consultar Inventario
Descripción: El test Espresso simplemente accede al inventario, donde encontramos una pieza previamente cargada, donde comprobamos que la pantalla carga los datos correctamente
Autor: Sr. Azul
Resultado: Exitoso
Problemas encontrados: La ejecución se realizó correctamente.
6. GD05-15: Modificar cantidad piezas en Mi Inventario
Descripción: El test Espresso diseñado para la historia de usuario de modificar cantidad de piezas en mi inventario accede al inventario donde encontramos una pieza previamente cargada, modifica la cantidad sumando uno, comprueba que el resultado es 2 y disminuimos la cantidad en 1 comprobando que el resultado es 1.
Autor: Sr. Marrón
Resultado: Exitoso
Problemas encontrados: Ninguno.
3. GD05-16: Eliminar piezas de "Mi Inventario"
Descripción: El test hace una búsqueda de una pieza llamada "plate", la añade al inventario, la elimina y se comprueba que el cambio esté vacío.
Autor: Sr. Blanco
Resultado: Exitoso
Problemas encontrados: Ha sido complicado verificar que algo no existia
9. GD05-19: Compartir Set
Descripción: El test Espresso diseñado para filtrar piezas comprueba como se filtra una pieza, cargada previamente en el inventario, medianta los diferentes filtros prefijados.
Autor: Sr. Azul
Resultado: Exitoso
Problemas encontrados: El test dio varios problemas debido al uso de tildes en ciertas palabras y no realizar tiempos de espera para que cargasen los datos.
3. GD05-18: Buscar Set
Descripción: El test hace una búsqueda de un set que contenga la palabra "Batman" y comprueba que se haya encontrado el set "Batman Adventure"
Autor: Sr. Blanco
Resultado: Exitoso
Problemas encontrados: Ninguno
9. GD05-21: Filtrar piezas de Mi Inventario
Descripción: El test Espresso diseñado para la historia de usuario de de compartir set accede a un set, el cual buscamos, y en la pantalla de detalles del set se pulsa el botón para compartir, accediendo a las opciones de esta.
Autor: Sr. Azul
Resultado: Exitoso
Problemas encontrados: Ninguno.
11. GD05-22: Guardar piezas de set en Mi Inventario
Descripción: El test Espresso diseñado para la historia de usuario de guardar piezas de set en mi inventario accede a la sección de bricks de un set, pulsa el botón guardar piezas y navega a la sección inventario para comprobar si existe el/los elementos.
Autor: Sr. Marrón
Resultado: Exitoso
Problemas encontrados: El test dio varios problemas debido al uso de tildes en ciertas palabras y no realizar tiempos de espera para que cargasen los datos.
13. GD05-24: Ver Favoritos
Descripción: El test Espresso diseñado para la historia de usuario de Ver favoritos consiste en navegar a la sección favoritos y comprobar que existe el elemento set que hemos cargado previamente.
Autor: Sr. Marrón
Resultado: Exitoso
Problemas encontrados: Ninguno.
3. GD05-25: Guardar favoritos
Descripción: El test hace una búsqueda de un set que contenga la palabra "Batman" y comprueba que se haya encontrado el set "Batman Adventure". Entra en sus detalles y lo marca como favorito.
Autor: Sr. Blanco
Resultado: Exitoso
Problemas encontrados: A veces el test falla debido a que se debe esperar para guardar el set antes de navegar a la pantalla de inventario. Volver a ejecutarlo soluciona el problema.
15. GD05-26: Eliminar favoritos
Descripción: El test Espresso diseñado para la historia de usuario de eliminar un set de favoritos consiste en la búsqueda y marcado de un set como favorito, navegar a la sección de favoritos y eliminar el set de la lista de favoritos. Todo esto se entre comprobaciones de que los botones de favoritos quedan marcados y desmarcados correctamente, además de una comprobación final de que el set no existe en la lista de favoritos.
Autor: Sr. Naranja
Resultado: Exitoso
Problemas encontrados: Ninguno.
16. GD05-27: Verificar piezas
Descripción: El test Espresso de verificar piezas comprueba que al acceder a un set que buscamos, podemos guardar primero las piezas de este set en nuestro inventario, y comprobar luego mediante el botón de verificar piezas que esta existen ya en nuestro inventario.
Autor: Sr. Azul
Resultado: Exitoso
Problemas encontrados: Este test ha sido muy problemático debido a la carga de datos y las demoras que estas provocaban, por lo que se le ha añadido múltiples esperas a lo largo del test.
17. GD05-28: Consultar piezas Set
Descripción: El test Espresso diseñado para la historia de usuario de Consultar piezas Set se basa en la navegación a la sección de bricks de un set y comprobar que existe una pieza concreta y que su cantidad es la esperada.
Autor: Sr. Naranja
Resultado: Exitoso
Problemas encontrados: Este test ha sido especialmente problemático debido a la falta de sincronización entre la API y Espresso, a lo que se le ha añadido múltiples esperas a lo largo del test para asegurar que la API ha cargado los datos.
Además de esto, cabe resaltar que el asistente de grabación de Espresso no ha sido capaz de grabar correctamente la acción de pulsar elementos de las listas de los RecyclerView involucrados, por lo que se han tenido que añadir manualmente.