Inventario de pruebas 3 - sjfuentes-uniandes/ing-sw-app-moviles GitHub Wiki

HU-008: Agregar Track a Álbum - Pruebas con Espresso

Historia de Usuario: HU-008
Funcionalidad: Agregar Track a un Álbum
Versión del documento: 1.0
Fecha: 29 de Noviembre de 2025


1. Introducción y Objetivos

1.1 Descripción de la Funcionalidad

La historia de usuario HU-008 permite a los coleccionistas agregar nuevas canciones (tracks) a un álbum existente en su catálogo. La funcionalidad incluye:

  • Navegación desde el detalle de un álbum hacia un formulario de creación de track
  • Captura de datos del track: nombre de la canción y duración
  • Validación de campos obligatorios y formato de duración (M:SS o MM:SS)
  • Persistencia del track mediante integración con API REST
  • Confirmación visual del éxito de la operación
  • Actualización de la lista de tracks en el detalle del álbum

1.2 Objetivos de las Pruebas

Las pruebas de UI con Espresso para HU-008 tienen los siguientes objetivos:

  1. Validar el flujo de navegación completo desde la lista de álbumes hasta la pantalla de agregar track y viceversa
  2. Verificar la presencia y correcta visualización de todos los elementos de interfaz
  3. Comprobar las validaciones de campos obligatorios y formatos de entrada
  4. Asegurar la integración correcta con el backend para la persistencia de datos
  5. Detectar regresiones en funcionalidades relacionadas (navegación, detalle de álbum)
  6. Establecer una línea base de calidad automatizada para futuros cambios

2. Casos de Prueba

Caso de Prueba 1: Navegación Completa

ID: TC-HU008-001
Descripción: Verificar la navegación desde la lista de álbumes hasta la pantalla de agregar track

Precondiciones:

  • Aplicación instalada en el dispositivo de prueba
  • Backend accesible y con datos de prueba
  • Al menos un álbum disponible en el catálogo

Pasos:

  1. Iniciar la aplicación
  2. Navegar a la pestaña "Albums"
  3. Esperar la carga completa de la lista de álbumes
  4. Seleccionar el primer álbum de la lista
  5. Verificar que se muestra el detalle del álbum
  6. Verificar que el botón FAB de agregar track está visible
  7. Pulsar el botón FAB
  8. Verificar que se abre la pantalla de agregar track

Resultado Esperado:

  • La pantalla de agregar track se muestra correctamente
  • Todos los elementos de la interfaz están presentes: imagen del álbum, nombre del álbum, campos de entrada, botón "Save Song"

Estado: ✅ PASS


Caso de Prueba 2: Verificación de Elementos UI

ID: TC-HU008-002
Descripción: Validar que todos los elementos de la pantalla de agregar track están presentes y visibles

Precondiciones:

  • Usuario ubicado en la pantalla de agregar track

Pasos:

  1. Verificar presencia de imagen del álbum (ImageView)
  2. Verificar presencia del nombre del álbum (TextView)
  3. Verificar presencia del campo "Nombre de la canción" (EditText)
  4. Verificar presencia del campo "Duración" (EditText)
  5. Verificar presencia del botón "Save Song" (Button)

Resultado Esperado:

  • Todos los elementos están presentes y visibles en pantalla
  • Los campos de entrada tienen hints apropiados
  • El botón tiene el texto correcto según strings.xml

Estado: ✅ PASS


Caso de Prueba 3: Validación de Campos Vacíos

ID: TC-HU008-003
Descripción: Verificar que no se puede guardar un track sin llenar los campos obligatorios

Precondiciones:

  • Usuario en la pantalla de agregar track
  • Campos de formulario vacíos

Pasos:

  1. Dejar ambos campos vacíos (nombre y duración)
  2. Pulsar el botón "Save Song"
  3. Verificar que no se navega a otra pantalla
  4. Verificar que los campos siguen visibles

Resultado Esperado:

  • La validación previene el guardado
  • Usuario permanece en la pantalla de agregar track
  • No se realiza llamada al backend

Estado: ✅ PASS


Caso de Prueba 4: Validación de Formato de Duración Inválido

ID: TC-HU008-004
Descripción: Comprobar que se rechaza un formato de duración inválido

Precondiciones:

  • Usuario en la pantalla de agregar track

Pasos:

  1. Ingresar un nombre válido en el campo "Nombre de la canción" (ej: "Test Track")
  2. Ingresar un formato de duración inválido (ej: "999", "abc", "12:999")
  3. Pulsar el botón "Save Song"
  4. Verificar que la validación falla

Resultado Esperado:

  • El track no se guarda
  • Usuario permanece en la pantalla de agregar track
  • La validación detecta el formato incorrecto

Estado: ✅ PASS


Caso de Prueba 5: Agregar Track con Datos Válidos

ID: TC-HU008-005
Descripción: Validar el flujo exitoso de agregar un track con datos correctos

Precondiciones:

  • Usuario en la pantalla de agregar track
  • Backend disponible

Pasos:

  1. Ingresar nombre de track: "Espresso Test Track"
  2. Ingresar duración válida: "3:45"
  3. Pulsar el botón "Save Song"
  4. Esperar confirmación visual (Snackbar)
  5. Verificar regreso al detalle del álbum

Resultado Esperado:

  • El track se guarda exitosamente en el backend
  • Se muestra un Snackbar con mensaje de éxito
  • Navegación automática de regreso al detalle del álbum
  • El nuevo track aparece en la lista de tracks del álbum

Estado: ✅ PASS


Caso de Prueba 6: Navegación de Regreso

ID: TC-HU008-006
Descripción: Verificar que el botón de regreso funciona correctamente

Precondiciones:

  • Usuario en la pantalla de agregar track

Pasos:

  1. Pulsar el botón de navegación "back" del sistema
  2. Verificar que regresa al detalle del álbum
  3. Verificar que los elementos del detalle están visibles

Resultado Esperado:

  • Navegación correcta al detalle del álbum
  • Estado de la pantalla anterior se mantiene
  • Botón FAB visible nuevamente

Estado: ❌ FAIL (requiere corrección - ver sección 5.1)


Caso de Prueba 7: Visualización de Lista de Tracks

ID: TC-HU008-007
Descripción: Comprobar que la lista de tracks se muestra en el detalle del álbum

Precondiciones:

  • Álbum seleccionado tiene al menos un track

Pasos:

  1. Navegar al detalle de un álbum
  2. Esperar carga completa
  3. Verificar presencia del RecyclerView de tracks
  4. Verificar visibilidad del header "Tracks"

Resultado Esperado:

  • RecyclerView de tracks está visible
  • Header "Tracks" se muestra correctamente
  • Lista contiene al menos un elemento si el álbum tiene tracks

Estado: ❌ FAIL (timing issue - ver sección 5.1)


Caso de Prueba 8: Reconocimiento de FAB en Todos los Álbumes

ID: TC-HU008-008
Descripción: Verificar que el botón FAB aparece en el detalle de todos los álbumes

Precondiciones:

  • Al menos 3 álbumes disponibles en el catálogo

Pasos:

  1. Navegar al detalle del primer álbum
  2. Verificar presencia del FAB
  3. Regresar a la lista
  4. Navegar al detalle del segundo álbum
  5. Verificar presencia del FAB
  6. Regresar a la lista
  7. Navegar al detalle del tercer álbum
  8. Verificar presencia del FAB

Resultado Esperado:

  • El botón FAB está presente en todos los detalles de álbum
  • El comportamiento es consistente

Estado: ✅ PASS


Caso de Prueba 9: Labels y Hints Correctos

ID: TC-HU008-009
Descripción: Validar que los textos y etiquetas son correctos según localización

Precondiciones:

  • Usuario en la pantalla de agregar track

Pasos:

  1. Verificar texto del botón "Save Song" según strings.xml
  2. Verificar hints de los campos de entrada
  3. Verificar que el nombre del álbum se muestra correctamente

Resultado Esperado:

  • Todos los textos coinciden con los definidos en strings.xml
  • La localización es correcta
  • No hay textos hardcodeados

Estado: ✅ PASS


Caso de Prueba 10: Formato de Duración Válido (Edge Case)

ID: TC-HU008-010
Descripción: Verificar que se aceptan diferentes formatos válidos de duración

Precondiciones:

  • Usuario en la pantalla de agregar track

Pasos:

  1. Ingresar nombre: "Edge Case Track"
  2. Ingresar duración en formato M:SS: "5:30"
  3. Guardar track
  4. Verificar éxito

Resultado Esperado:

  • El formato M:SS se acepta correctamente
  • El track se guarda exitosamente
  • Navegación de regreso funciona

Estado: ✅ PASS


Caso de Prueba 11: Validación de Espacios Vacíos (Edge Case)

ID: TC-HU008-011
Descripción: Comprobar que no se acepta un nombre con solo espacios

Precondiciones:

  • Usuario en la pantalla de agregar track

Pasos:

  1. Ingresar solo espacios en el campo nombre: " "
  2. Ingresar duración válida: "3:00"
  3. Intentar guardar
  4. Verificar que la validación falla

Resultado Esperado:

  • La validación detecta espacios vacíos
  • El track no se guarda
  • Usuario permanece en la pantalla

Estado: ✅ PASS


Caso de Prueba 12: Navegación Múltiple

ID: TC-HU008-012
Descripción: Verificar estabilidad al navegar múltiples veces entre pantallas

Precondiciones:

  • Usuario en detalle de álbum

Pasos:

  1. Abrir pantalla de agregar track (FAB)
  2. Regresar con botón back
  3. Volver a abrir pantalla de agregar track
  4. Verificar que todo funciona correctamente

Resultado Esperado:

  • Navegación múltiple funciona sin errores
  • Estado de las pantallas se mantiene
  • No hay memory leaks o crashes

Estado: ❌ FAIL (timing issue - ver sección 5.1)


Caso de Prueba 13: Nombre del Álbum Visible

ID: TC-HU008-013
Descripción: Validar que el nombre del álbum se muestra en la pantalla de agregar track

Precondiciones:

  • Usuario en pantalla de agregar track desde un álbum conocido

Pasos:

  1. Verificar que el TextView del nombre del álbum está visible
  2. Verificar que contiene texto (no está vacío)

Resultado Esperado:

  • El nombre del álbum es visible
  • Proporciona contexto al usuario sobre qué álbum está editando

Estado: ✅ PASS


Caso de Prueba 14: Agregar Múltiples Tracks Consecutivos

ID: TC-HU008-014
Descripción: Verificar que se pueden agregar varios tracks seguidos

Precondiciones:

  • Usuario en detalle de álbum
  • Backend disponible

Pasos:

  1. Agregar primer track: "Track 1", "3:00"
  2. Esperar regreso al detalle
  3. Abrir nuevamente pantalla de agregar track
  4. Agregar segundo track: "Track 2", "4:15"
  5. Verificar regreso al detalle

Resultado Esperado:

  • Ambos tracks se agregan exitosamente
  • No hay conflictos entre operaciones consecutivas
  • Lista de tracks se actualiza cada vez

Estado: ✅ PASS


Caso de Prueba 15: Actualización de Lista de Tracks

ID: TC-HU008-015
Descripción: Comprobar que la lista de tracks se actualiza después de agregar uno nuevo

Precondiciones:

  • Álbum con tracks existentes

Pasos:

  1. Navegar al detalle del álbum
  2. Observar número de tracks actual
  3. Agregar un nuevo track: "New Test Track", "2:30"
  4. Verificar regreso al detalle
  5. Verificar que el RecyclerView está visible

Resultado Esperado:

  • La lista de tracks sigue visible después de agregar
  • El nuevo track aparece en la lista (requiere refresh o recarga)

Estado: ✅ PASS


Caso de Prueba 16: Edge Cases Adicionales

ID: TC-HU008-016
Descripción: Validación de otros casos límite no cubiertos anteriormente

Precondiciones:

  • Variadas según sub-caso

Casos incluidos:

  • Duración con segundos en límite superior (59)
  • Nombres de tracks muy largos
  • Caracteres especiales en nombres

Resultado Esperado:

  • Comportamiento robusto ante diferentes entradas
  • Validaciones apropiadas funcionan

Estado: ✅ PASS


3. Implementación Técnica

3.1 Estructura de las Pruebas

Las pruebas de Espresso para HU-008 están implementadas en el paquete:

app/src/androidTest/java/com/example/vinilos/HU-008-AgregarTrack/

Este paquete contiene dos clases principales de prueba:

3.1.1 AddTrackFlowTest.kt

Clase enfocada en validar el flujo principal de la funcionalidad:

Responsabilidades:

  • Navegación completa desde álbumes hasta agregar track
  • Verificación de elementos UI
  • Validaciones de formulario (campos vacíos, formato inválido)
  • Flujo exitoso de agregar track
  • Navegación de regreso
  • Visualización de lista de tracks

Características técnicas:

  • Anotación @LargeTest para pruebas de integración
  • Uso de ActivityScenarioRule para gestión del ciclo de vida
  • Implementación de ViewAction personalizado para clicks en RecyclerView
  • Esperas explícitas con Thread.sleep() para sincronización con backend

Número de tests: 7

3.1.2 AddTrackRecognitionTest.kt

Clase enfocada en pruebas de reconocimiento y edge cases:

Responsabilidades:

  • Reconocimiento de elementos en múltiples contextos
  • Validación de labels y hints
  • Edge cases (formatos límite, espacios, navegación múltiple)
  • Operaciones consecutivas

Características técnicas:

  • Patrón similar a AddTrackFlowTest
  • Mayor énfasis en iteraciones y casos límite
  • Reutilización de métodos auxiliares

Número de tests: 9

3.2 Componentes Principales

3.2.1 Reglas de Prueba

@Rule
@JvmField
var activityRule = ActivityScenarioRule(MainActivity::class.java)

Utiliza ActivityScenarioRule para:

  • Iniciar automáticamente la MainActivity
  • Gestionar el ciclo de vida de la Activity
  • Limpiar recursos después de cada test

3.2.2 Matchers de Espresso Utilizados

  • withId(): Localización de vistas por ID de recurso
  • withText(): Verificación de textos
  • isDisplayed(): Validación de visibilidad
  • isCompletelyDisplayed(): Verificación de visibilidad completa (sin recortes)

3.2.3 Acciones de Espresso

  • click(): Simulación de clicks
  • typeText(): Ingreso de texto en campos
  • closeSoftKeyboard(): Cierre del teclado virtual
  • clearText(): Limpieza de campos de texto
  • scrollTo(): Scroll hacia elementos no visibles

3.2.4 Assertions Principales

onView(withId(R.id.viewId))
    .check(matches(isDisplayed()))

Patrón estándar de verificación:

  1. Localizar vista con onView()
  2. Aplicar assertion con .check()
  3. Usar matcher con matches()

3.3 Métodos Auxiliares Reutilizables

3.3.1 navigateToAddTrackScreen()

Método helper que encapsula la navegación completa:

private fun navigateToAddTrackScreen() {
    onView(withId(R.id.navigation_albums)).perform(click())
    Thread.sleep(3000)
    onView(withId(R.id.albumsRv))
        .perform(clickOnRecyclerViewItem(0))
    Thread.sleep(2000)
    onView(withId(R.id.fabAddTrack)).perform(click())
    Thread.sleep(1000)
}

Propósito: Reducir duplicación de código en tests que requieren estar en la pantalla de agregar track.

3.3.2 clickOnRecyclerViewItem()

ViewAction personalizado para interactuar con RecyclerView:

private fun clickOnRecyclerViewItem(position: Int): ViewAction {
    return object : ViewAction {
        override fun getConstraints(): Matcher<View> {
            return isAssignableFrom(RecyclerView::class.java)
        }
        
        override fun perform(uiController: UiController, view: View) {
            val recyclerView = view as RecyclerView
            val viewHolder = recyclerView.findViewHolderForAdapterPosition(position)
            viewHolder?.itemView?.performClick()
        }
    }
}

Propósito: Hacer click en items de RecyclerView sin depender de espresso-contrib.

3.4 Gestión de Sincronización

Las pruebas utilizan esperas explícitas debido a:

  1. Carga de datos desde backend: El backend puede estar en cold start
  2. Animaciones de navegación: Transiciones entre fragments requieren tiempo
  3. Renderizado de RecyclerView: Poblado de listas requiere espera

Tiempos de espera utilizados:

  • 3000ms: Carga de listas desde backend
  • 2000ms: Navegación y carga de detalles
  • 1000ms: Transiciones simples

Mejora futura: Implementar IdlingResources para esperas más inteligentes.


4. Ejecución de las Pruebas

4.1 Requisitos Previos

4.1.1 Entorno de Desarrollo

  • Android Studio: Arctic Fox (2020.3.1) o superior
  • Gradle: 8.12
  • Android Gradle Plugin (AGP): 8.7.3
  • Kotlin: 2.0.21
  • JDK: Java 11 o superior

4.1.2 Dispositivo de Prueba

  • Dispositivo físico o emulador con:
    • Android API Level 24 (Android 7.0) mínimo
    • API Level 35 (Android 15) recomendado
    • Modo de desarrollador activado
    • Depuración USB habilitada (para dispositivos físicos)

4.1.3 Configuración de Red

4.2 Ejecución desde Android Studio

4.2.1 Ejecutar Todas las Pruebas de HU-008

  1. En el Project Explorer, navegar a:

    app/src/androidTest/java/com/example/vinilos/HU-008-AgregarTrack/
    
  2. Clic derecho en la carpeta HU-008-AgregarTrack

  3. Seleccionar: "Run 'Tests in 'HU-008-AgregarTrack''"

  4. Seleccionar dispositivo/emulador de destino

  5. Esperar resultados en la ventana "Run"

4.2.2 Ejecutar Una Clase Específica

  1. Abrir el archivo AddTrackFlowTest.kt o AddTrackRecognitionTest.kt

  2. Hacer clic en el ícono verde (▶️) junto al nombre de la clase

  3. Seleccionar: "Run 'AddTrackFlowTest'"

4.2.3 Ejecutar Un Test Individual

  1. Ubicar el método de test específico (ej: addTrack_withValidData_succeeds())

  2. Hacer clic en el ícono verde junto al método

  3. Seleccionar: "Run 'addTrack_withValidData_succeeds'"

4.3 Ejecución por Línea de Comandos (Gradle)

4.3.1 Ejecutar Todas las Pruebas de Instrumentación

# En la raíz del proyecto
./gradlew connectedAndroidTest

Resultado: Ejecuta TODAS las pruebas de instrumentación del proyecto (todas las HU).

4.3.2 Ejecutar Solo Pruebas de HU-008 (mediante ADB)

# Opción 1: Ejecutar una clase específica
adb shell am instrument -w -r -e class \
  'com.example.vinilos.HU_008_AgregarTrack.AddTrackFlowTest' \
  com.example.vinilos.test/androidx.test.runner.AndroidJUnitRunner

# Opción 2: Ejecutar ambas clases de HU-008
adb shell am instrument -w -r -e package \
  'com.example.vinilos.HU_008_AgregarTrack' \
  com.example.vinilos.test/androidx.test.runner.AndroidJUnitRunner

4.3.3 Ejecutar Un Test Específico

adb shell am instrument -w -r -e class \
  'com.example.vinilos.HU_008_AgregarTrack.AddTrackFlowTest#addTrack_withValidData_succeeds' \
  com.example.vinilos.test/androidx.test.runner.AndroidJUnitRunner

4.3.4 PowerShell (Windows)

# Todas las pruebas de instrumentación
.\gradlew connectedAndroidTest

# Solo pruebas de HU-008 (usando adb)
$ADB = "C:\Users\[usuario]\AppData\Local\Android\Sdk\platform-tools\adb.exe"
& $ADB shell am instrument -w -r -e package `
  'com.example.vinilos.HU_008_AgregarTrack' `
  com.example.vinilos.test/androidx.test.runner.AndroidJUnitRunner

4.4 Configuración del Test Runner

El proyecto utiliza AndroidJUnitRunner como test runner predeterminado.

Configuración en build.gradle.kts:

android {
    defaultConfig {
        testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
    }
}

No requiere configuración adicional para ejecutar las pruebas de HU-008.

4.5 Visualización de Resultados

4.5.1 Reportes HTML

Después de la ejecución, Gradle genera reportes HTML en:

app/build/reports/androidTests/connected/debug/index.html

Contenido del reporte:

  • Resumen de tests ejecutados, pasados y fallidos
  • Tiempo de ejecución por test
  • Stack traces detallados de fallos
  • Screenshots (si están configurados)

4.5.2 Reportes XML (para CI/CD)

Formato JUnit XML compatible con Jenkins, GitLab CI, etc.:

app/build/outputs/androidTest-results/connected/

4.5.3 Logs en Consola

Durante la ejecución, se muestran logs en tiempo real:

> Task :app:connectedDebugAndroidTest
Starting 16 tests on CPH2699 - 15

CPH2699 - 15 Tests 1/16 completed. (0 skipped) (0 failed)
CPH2699 - 15 Tests 2/16 completed. (0 skipped) (0 failed)
...

5. Resultados

5.1 Resumen de Ejecución

Fecha de última ejecución: 29 de Noviembre de 2025
Dispositivo utilizado: Oppo Reno 13F (CPH2699) - Android 15
Tiempo total de ejecución: 4 minutos 1 segundo

Métrica Valor
Tests ejecutados 16
Tests pasados 12
Tests fallidos 4
Tests omitidos 0
Tasa de éxito 75%

5.2 Desglose por Clase de Prueba

AddTrackFlowTest

  • Total: 7 tests
  • Pasados: 5 (71.4%)
  • Fallidos: 2

AddTrackRecognitionTest

  • Total: 9 tests
  • Pasados: 7 (77.8%)
  • Fallidos: 2 (incluyendo 1 compartido con AddTrackFlowTest)

5.3 Incidencias Detectadas

Incidencia 1: Navegación con Toolbar

Test afectado: addTrackScreen_backButton_navigatesToAlbumDetail()
Severidad: Media
Estado: Identificada - Requiere corrección

Descripción: El test intenta hacer click en toolbar para regresar, pero el selector es demasiado genérico y no encuentra el elemento correcto después de la navegación.

Causa raíz: Uso de selector withId(R.id.toolbar) en lugar de pressBack() o withId(R.id.btnBack).

Solución propuesta:

// Cambiar:
onView(withId(R.id.toolbar)).perform(click())

// Por:
Espresso.pressBack()

Impacto: No afecta la funcionalidad, solo la prueba automatizada.


Incidencia 2: Visibilidad de RecyclerView de Tracks

Test afectado: albumDetail_displaysTracksList()
Severidad: Baja
Estado: Identificada - Timing issue

Descripción: El RecyclerView de tracks puede no estar completamente visible cuando se ejecuta la verificación, causando que falle la assertion de isDisplayed().

Causa raíz:

  • El RecyclerView puede estar fuera del viewport inicial
  • Timing entre carga de datos y renderizado de UI
  • Falta de scroll antes de la verificación

Solución propuesta:

// Agregar scroll o espera:
Thread.sleep(1000)
onView(withId(R.id.tracksRecyclerView))
    .perform(scrollTo())
    .check(matches(isDisplayed()))

Impacto: Menor - El RecyclerView funciona correctamente en uso real.


Incidencia 3: Navegación Múltiple

Test afectado: navigation_multipleNavigations_workCorrectly()
Severidad: Baja
Estado: Identificada - Timing issue

Descripción: Después de múltiples navegaciones rápidas, el FAB puede no estar visible inmediatamente al regresar al detalle del álbum.

Causa raíz: Tiempo insuficiente de espera después de navegación pressBack().

Solución propuesta:

// Aumentar tiempo de espera:
Espresso.pressBack()
Thread.sleep(2000) // Era 1000ms
onView(withId(R.id.fabAddTrack)).check(matches(isDisplayed()))

Impacto: Cosmético - No afecta uso real.


Incidencia 4: Impacto en HU-02

Test afectado: AlbumDetailFlowTest.navigateToAlbumDetail_and_backToList (de otra HU)
Severidad: Media
Estado: Identificada - Requiere actualización

Descripción: Los cambios de layout de HU-008 (eliminación del label descriptionLabel en detalle de álbum) afectaron tests de HU-02.

Acción requerida: Actualizar tests de HU-02 para reflejar el nuevo layout sin descriptionLabel.

Impacto: No afecta HU-008 directamente, pero requiere coordinación entre equipos.


5.4 Estado de Correcciones

Incidencia Prioridad Estado ETA
Navegación con Toolbar Alta Pendiente Sprint actual
Visibilidad RecyclerView Media Pendiente Sprint actual
Navegación Múltiple Baja Pendiente Próximo sprint
Impacto HU-02 Alta Pendiente Sprint actual

5.5 Validación de Funcionalidad

A pesar de los 4 tests fallidos, la funcionalidad HU-008 opera correctamente según:

  1. Validación manual: Todos los flujos funcionan en dispositivo real
  2. 12 de 16 tests pasaron: 75% de cobertura automatizada exitosa
  3. Fallos son de prueba, no de funcionalidad: Problemas de timing/selectores
  4. Validaciones core pasaron: Campos vacíos, formato, guardado exitoso

Conclusión: HU-008 está lista para producción. Las correcciones de tests son recomendadas pero no bloqueantes.


6. Conclusiones y Recomendaciones

6.1 Conclusiones

  1. Cobertura automatizada establecida: 16 casos de prueba cubren el flujo completo de HU-008
  2. Funcionalidad validada: El flujo principal de agregar tracks funciona correctamente
  3. Calidad de código: Tests bien estructurados siguiendo patrones del proyecto
  4. Fallos menores identificados: Problemas de timing y selectores, fácilmente corregibles

6.2 Recomendaciones Inmediatas

  1. ⚠️ Corregir los 4 tests fallidos según soluciones propuestas (estimado: 2-3 horas)
  2. ⚠️ Actualizar tests de HU-02 para compatibilidad con nuevos layouts
  3. ⚠️ Re-ejecutar suite completa después de correcciones

6.3 Recomendaciones a Futuro

  1. Implementar IdlingResources: Eliminar Thread.sleep() con esperas basadas en estado de la aplicación
  2. Agregar tests de performance: Medir tiempos de respuesta y detectar regresiones
  3. Screenshots automáticos: Capturar pantallas en fallos para debugging más rápido
  4. Integración CI/CD: Ejecutar tests automáticamente en cada Pull Request

6.4 Lecciones Aprendidas

  • Timing es crítico: Backend en cold start requiere esperas generosas
  • Selectores específicos: Usar IDs específicos en lugar de clases genéricas como toolbar
  • RecyclerView requiere scroll: No asumir visibilidad automática de items
  • Impacto cross-HU: Cambios de layout pueden afectar tests de otras historias

7. Referencias

7.1 Documentación Oficial

7.2 Archivos del Proyecto

  • Pruebas: app/src/androidTest/java/com/example/vinilos/HU-008-AgregarTrack/
  • Código fuente: app/src/main/java/com/example/vinilos/ui/albums/
  • Layouts: app/src/main/res/layout/fragment_add_track.xml
  • Strings: app/src/main/res/values/strings.xml

HU-006: Detalle de Coleccionista - Pruebas con Espresso

Historia de Usuario: HU-006
Funcionalidad: Ver Detalle de Coleccionista
Versión del documento: 1.0
Fecha: 29 de Noviembre de 2025


1. Introducción y Objetivos

1.1 Descripción de la Funcionalidad

La historia de usuario HU-006 permite a los usuarios visualizar la información detallada de un coleccionista específico seleccionado desde la lista principal. La funcionalidad incluye:

  • Navegación desde el listado de coleccionistas hacia la vista de detalle
  • Visualización de datos de contacto: Nombre completo, Teléfono y Email
  • Visualización de la lista de álbumes favoritos asociados al coleccionista
  • Navegación de regreso al listado general

1.2 Objetivos de las Pruebas

Las pruebas de UI con Espresso para HU-006 tienen los siguientes objetivos:

  1. Validar el flujo de navegación desde la pestaña de coleccionistas hasta el detalle individual
  2. Verificar la presencia y correcta visualización de los datos del coleccionista (Email, Teléfono)
  3. **Comprobar la carga de la lista de álbum
⚠️ **GitHub.com Fallback** ⚠️