-
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
TODO: Añadir capturas de pantalla con los test pasados
1. GD05-13: Activar modo oscuro
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
.