Introducción al Testing: Garantizar Funcionalidad en Aplicaciones
Clase 18 de 26 • Curso de Diseño de Software para Apps Móviles
Contenido del curso
- 4

Requerimientos Funcionales y No Funcionales en Aplicaciones
04:22 - 5

Componentes de Arquitectura de Aplicaciones Móviles
10:00 - 6

Carga de Imágenes en Android con Librerías Populares
05:38 - 7

Conceptos clave de CDN y Push Notifications en aplicaciones móviles
05:15 - 8

Creación de Diagramas de Secuencia para Flujos de Usuario
11:07
- 9

Tipos de Comunicación con el Servidor: HTTPS y WebSockets
05:17 - 10

APIs Móviles: Diseño Eficiente y Optimización de Datos
04:47 - 11

Optimización de Modelos de Datos en APIs JSON
08:42 - 12

Implementación de Estrategias Offline en Apps Móviles
04:02 - 13

Patrón Repository para Persistencia de Datos en Apps Móviles
24:18
- 18

Introducción al Testing: Garantizar Funcionalidad en Aplicaciones
09:11 - 19

Pruebas de Instrumentación con Espresso en Android
19:41 - 20

Componentes de Android Material Design y su implementación
09:47 - 21

Internacionalización de Aplicaciones Móviles: Idiomas y Formatos de Texto
04:21 - 22

Uso de Charles Proxy y otras herramientas para optimizar desarrollo de apps
05:06
¿Por qué es fundamental el testing en desarrollo de aplicaciones?
El testing es una herramienta indispensable para garantizar que una aplicación funcione como se espera, incluso cuando varias personas realizan cambios en su código. Al realizar tests de manera automatizada, aseguramos el comportamiento esperado de las funcionalidades, protegiendo así nuestro software de posibles errores cuando crece en complejidad.
¿Cómo se estructura la pirámide de testing?
El testing se organiza en una pirámide que nos guía desde la base hasta el vértice en términos de complejidad y costo:
- Tests unitarios: En la base de la pirámide, estos tests validan la lógica de negocio. Son rápidos y no dependen de aspectos específicos de Android o frameworks, sino que se centran en la lógica pura.
- Tests de instrumentación: Evalúan el comportamiento de la aplicación en interacción directa con el usuario.
- Pruebas end-to-end: Validan el flujo completo de la aplicación, desde el inicio hasta el fin, asegurando que todas las partes interactúen correctamente.
- Testing manual: En el vértice, se encuentran las pruebas que aún requieren intervención humana. Algunas situaciones no pueden automatizarse por completo, pero en el futuro es probable que estas pruebas se reduzcan.
¿Qué características deben tener los buenos tests?
Para ser eficaces, los tests deben cumplir con ciertos criterios:
- Rápidos: Si un test es más lento que realizar la tarea manualmente, pierde su eficiencia.
- Aislados: Deben probar funcionalidades específicas sin depender de demasiadas otras partes del sistema.
- Confiables: Deben reflejar casos reales y proporcionar resultados correctos. No sirve un test que siempre tenga éxito sin probar la funcionalidad real.
- Entendibles: Su propósito y resultados deben ser claros para cualquier desarrollador del equipo.
¿Cómo se construyen tests efectivos?
Para crear tests claros y eficaces, utiliza la estructura Gherkin, excelente para organizar y comunicar lo que se está probando:
- Feature (Funcionalidad): Describe qué se está probando (por ejemplo, una búsqueda en Google).
- Scenario (Escenario): Define la situación específica a probar.
- Given (Dado): Especifica las precondiciones necesarias.
- When (Cuando): Detalla la acción que se lleva a cabo.
- Then (Entonces): Describe el resultado esperado de la acción.
Este enfoque estructurado ayuda a asegurar que los tests sean claros y comprendidos fácilmente por el equipo.
¿Cómo implementar unit testing en Android?
Los unit tests son cruciales para verificar la lógica de negocio en Android. Su implementación tiene características específicas:
- Ejecutados en la JVM: No necesitan dispositivos físicos para correr, ya que son ejecutados en la Java Virtual Machine.
- Aislados del SDK: No dependen de elementos del SDK de Android como Fragments o Activities, lo que refuerza su velocidad.
- Framework JUnit: Utiliza JUnit para ejecutar estos tests de manera eficiente.
- Bibliotecas para facilitar el testing: Herramientas como Mockito y MockK ayudan a crear tests más eficaces, sobre todo a la hora de "moquear" comportamientos de clases.
Al integrarse con flujos de trabajo, como los Pull Requests, se asegura que los cambios en el código no afecten negativamente a las pruebas existentes, permitiendo rápidas verificaciones automáticas.
La exploración del testing continuará, abarcando pruebas más avanzadas y ejercicios prácticos que te permitirán seguir perfeccionando tus habilidades. ¡Sigue aprendiendo y motivándote a dominar esta herramienta fundamental en el desarrollo de aplicaciones!