¿Qué implica diseñar software de apps móviles?

1

Diseño de Software para Apps Móviles: Optimización y Solución de Bugs

2

Diferencias clave: Ingeniería de Software vs. Ingeniería de Framework

3

Componentes Clave en Desarrollo de Apps: Enfoques Diferentes

Diseño de una app móvil

4

Clasificación y ejemplos de requerimientos funcionales y no funcionales

5

Arquitectura de Aplicaciones: Backend a Flujos de Usuario

6

Carga de Imágenes en Android: Uso de Picasso, Glide, Fresco y Coil

7

Optimización de CDN y Push Notifications en aplicaciones móviles

8

Diagramas de Secuencia con Sequence Diagram

Data y Networking

9

Comunicación Servidor: HTTPS vs WebSockets

10

APIs Móviles: Optimización y Buenas Prácticas

11

Diseño Óptimo de JSON para APIs Mobile

12

Estrategias Offline para Aplicaciones Móviles

13

Patrón Repository para Gestión de Datos Mobile

La base de un gran performance

14

Optimización de UIs móviles con Constraint Layout

15

Estrategias de Implementación de Analíticas en Apps Móviles

16

Seguridad en Aplicaciones: Protege Código con Ofuscación en Android

17

Tips esenciales para mejorar la accesibilidad en aplicaciones Android

Herramientas profesionales para el diseño de software móvil

18

Pruebas Unitarias en Android con JUnit y Mockito

19

Test de Instrumentación con Espresso en Android

20

Implementación del Floating Action Button en Android Material Design

21

Internacionalización de Apps: Soporte Multilenguaje y RTL

22

Uso de Charles Proxy para Depuración y Pruebas de APIs

Consideraciones finales para diseñar software móvil

23

Modularización y Arquitectura de Software en Proyectos Escalables

24

Monitoreo de Aplicaciones Android con Android Vitals

25

Buenas Prácticas para Deployment de Apps en Play Store

26

Diseño de Interfaces Móviles con Funcionalidades Offline

No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Test de Instrumentación con Espresso en Android

19/26
Recursos

¿Qué son las pruebas de instrumentación?

Las pruebas de instrumentación permiten validar los eventos visuales dentro de las aplicaciones Android. A diferencia de las pruebas unitarias, estas utilizan el framework Expresso proporcionado por Android. Expresso ofrece acceso a las vistas, permitiendo acciones comunes como hacer clic, realizar scroll, swipe up y swipe down.

Este tipo de prueba se ejecuta en un emulador, lo cual implica algunas consideraciones:

  • Requiere acceso a la interfaz gráfica: Se necesita el sistema operativo de Android, Expresso y un emulador para acceder a elementos visuales como botones y pantallas.
  • Velocidad de ejecución moderada: Aunque las pruebas automatizadas son más rápidas que las manuales, estas pueden ser más lentas debido a la ejecución en un entorno de Android.
  • Consumo de memoria: Requiere varios recursos del sistema y puede ser más exigente en términos de procesamiento.

Estas pruebas son esenciales para validar la parte media de la pirámide de pruebas, abarcando eventos visuales y logrando una alta cobertura de testeo en las aplicaciones.

¿Cómo se utilizan las pruebas end-to-end?

Las pruebas end-to-end (E2E) son fundamentales para validar todo el flujo de usuario, desde el inicio del proceso hasta su finalización. Ejemplos claros incluyen escenarios completos como el inicio de sesión, hacer una compra, o agregar ítems a un carrito y proceder al pago.

Un framework destacado para las pruebas E2E es Appium. Este framework ofrece varias ventajas:

  • Versatilidad de lenguaje: Las pruebas pueden escribirse en distintos lenguajes como Python, Kotlin o Java.
  • Multiplataforma: Permite escribir un script que funcione tanto en Android como en iOS, siempre que la aplicación se comporte igual en ambas plataformas.
  • Ejecución automatizada: Se describe el flujo de interacción con el dispositivo, que puede hacerse tanto en emuladores como en dispositivos físicos.

Un equipo de automatización suele encargarse de estas pruebas, manteniendo un repositorio separado. Las pruebas E2E requieren más procesamiento debido a la validación de flujos completos.

¿Cuál es el papel del manual testing?

El manual testing sigue siendo vital para validar ciertos aspectos de una aplicación que no pueden ser automatizados, como las animaciones y las transiciones visuales. Estas pruebas dependen del juicio humano y abordan experiencias de usuario más subjetivas.

Por ahora, algunas cosas como las animaciones no se pueden automatizar, por lo que el testing manual complementa a los otros tipos de prueba automatizados. Permite verificar que estas experiencias visuales cumplan con las expectativas de los usuarios y mantengan la esencia visual de la aplicación.

¿Cómo se realiza una prueba unitaria con JUnit 5?

El desarrollo de pruebas unitarias con JUnit 5 es crucial para verificar funciones individuales dentro de una aplicación. Usando un ejemplo de implementación de un repositorio, podemos resaltar algunos pasos clave al crear una prueba unitaria:

  1. Setup de dependencias: Inicializa las dependencias necesarias para la prueba. Esto incluye dependencias de base de datos o remotas que deben ser configuradas antes de las pruebas.
@Before
fun setup() {
    databaseDependency = DatabaseDependencyMock()
    remoteDependency = RemoteDependencyMock()
    repository = CoursesRepositoryImplementation(databaseDependency, remoteDependency)
}
  1. Uso de interfaces y mocks: Se utilizan clases mock para simular el comportamiento de dependencias reales, permitiendo un control total sobre el entorno en el que funciona la prueba.

  2. Estructura given-when-then:

    • Given: Establecimiento de las condiciones iniciales.
    • When: Ejecución del comportamiento que se desea testear.
    • Then: Verificación de la salida o comportamiento esperado.
@Test
fun testObtenerListadoDeCursosSinConexion() {
    val cursos = repository.obtenerCursos()
    assertFalse(cursos.isEmpty(), "Debería obtener cursos del almacenamiento local.")
}
  1. Ejecución y revisión: Asegúrese de que el código pueda compilarse correctamente antes de ejecutar pruebas. La ejecución se puede realizar en modo normal o en modo debug para realizar análisis detallados. Además, valide los resultados esperados para identificar posibles errores en la lógica.

Con estas metodologías bien implementadas, las pruebas unitarias ofrecen un blindaje robusto que puede ayudar a garantizar que los cambios en el código no introduzcan errores inesperados.

Aportes 3

Preguntas 1

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

Los tests de instrumentación en aplicaciones móviles son pruebas automatizadas que se ejecutan en un dispositivo o emulador real. Estas pruebas se realizan para probar la interacción de la aplicación con el sistema operativo y otras aplicaciones, y para verificar el comportamiento de la aplicación en diferentes dispositivos y configuraciones.

Para implementar los tests de instrumentación en aplicaciones móviles se utilizan frameworks de prueba como Espresso, UI Automator, Appium, Calabash, entre otros. Estas herramientas permiten simular la interacción del usuario con la aplicación y verificar que la aplicación funciona correctamente en diferentes dispositivos y configuraciones.

Espresso es un framework de pruebas de interfaz de usuario (UI) para aplicaciones móviles de Android, que permite simular la interacción del usuario con la aplicación y verificar que la aplicación funciona correctamente en diferentes dispositivos y configuraciones.

UI Automator es otro framework de pruebas de interfaz de usuario (UI) para aplicaciones móviles de Android, que permite simular la interacción del usuario con la aplicación y verificar que la aplicación funciona correctamente en diferentes dispositivos y configuraciones.

Appium es un framework de pruebas de interfaz de usuario (UI) para aplicaciones móviles multiplataforma, que permite simular la interacción del usuario con la aplicación en diferentes dispositivos y plataformas, incluyendo iOS, Android y Windows.

Calabash es un framework de pruebas de interfaz de usuario (UI) para aplicaciones móviles multiplataforma, que permite simular la interacción del usuario con la aplicación en diferentes dispositivos y plataformas, incluyendo iOS y Android.

En resumen, los tests de instrumentación en aplicaciones móviles se implementan utilizando frameworks de prueba como Espresso, UI Automator, Appium, Calabash, entre otros, que permiten simular la interacción del usuario con la aplicación y verificar que la aplicación funciona correctamente en diferentes dispositivos y configuraciones.

Testing: instrumentación, end2end y manual.
_
_
Instumentación

  • Valida eventos visuales.

  • Framework Espresso.

  • Ejecutadas en el emulador.

  • Usa el framework de Android.

  • Velocidad de ejecución: alta.

_
_
End 2 End

  • Valida flujos del usuario.

  • Framework Appium.

  • Ejecutadas en el emulador/dispositivo físico.

  • Multiplataforma.

  • Equipo automation.

  • Repositorio separado.

  • Velocidad de ejecución: alto.

_
_
Manual Testing

  • Validan animaciones.

  • Transiciones.

  • Lo que no es posible automatizar hasta ahora.

Cómo sería el test cuando ya tienes implementado el SQLite? es decir, cuando ya estás haciendo el select, insert, etc. Tengo error de dependencias SQL al mockear mi repository. Me puedes ayudar?