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

1

Diseño de Software en Aplicaciones Móviles

2

Diseño de Software: Conceptos y Mejores Prácticas

3

Enfoques de Desarrollo para Diferentes Tipos de Aplicaciones

Diseño de una app móvil

4

Requerimientos Funcionales y No Funcionales en Aplicaciones

5

Componentes de Arquitectura de Aplicaciones Móviles

6

Carga de Imágenes en Android con Librerías Populares

7

Conceptos clave de CDN y Push Notifications en aplicaciones móviles

8

Creación de Diagramas de Secuencia para Flujos de Usuario

Data y Networking

9

Tipos de Comunicación con el Servidor: HTTPS y WebSockets

10

APIs Móviles: Diseño Eficiente y Optimización de Datos

11

Optimización de Modelos de Datos en APIs JSON

12

Implementación de Estrategias Offline en Apps Móviles

13

Patrón Repository para Persistencia de Datos en Apps Móviles

La base de un gran performance

14

Optimización de Performance en Aplicaciones Móviles

15

Implementación de Analíticas en Aplicaciones Móviles

16

Seguridad en el Desarrollo de Aplicaciones Móviles

17

Accesibilidad en Aplicaciones Android: Tips y Herramientas Esenciales

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

18

Introducción al Testing: Garantizar Funcionalidad en Aplicaciones

19

Pruebas de Instrumentación con Espresso en Android

20

Componentes de Android Material Design y su implementación

21

Internacionalización de Aplicaciones Móviles: Idiomas y Formatos de Texto

22

Uso de Charles Proxy y otras herramientas para optimizar desarrollo de apps

Consideraciones finales para diseñar software móvil

23

Arquitectura Modular: Desacoplamiento y Escalabilidad del Código

24

Monitoreo de Aplicaciones Android con Android Vitals

25

Buenas prácticas en el despliegue de aplicaciones móviles

26

Evaluación Final y Certificación en Desarrollo Móvil

No tienes acceso a esta clase

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

Introducción al Testing: Garantizar Funcionalidad en Aplicaciones

18/26
Recursos

¿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:

  1. 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.
  2. Tests de instrumentación: Evalúan el comportamiento de la aplicación en interacción directa con el usuario.
  3. 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.
  4. 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:

  1. Feature (Funcionalidad): Describe qué se está probando (por ejemplo, una búsqueda en Google).
  2. Scenario (Escenario): Define la situación específica a probar.
  3. Given (Dado): Especifica las precondiciones necesarias.
  4. When (Cuando): Detalla la acción que se lleva a cabo.
  5. 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!

Aportes 4

Preguntas 1

Ordenar por:

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

Mockito es un marco de pruebas de unidad para Java que se utiliza para crear objetos simulados (mocks) de dependencias externas de una clase, con el fin de probarla de manera aislada y sin depender de dichas dependencias reales. A continuación, se presentan algunos pasos generales para utilizar e implementar Mockito en el desarrollo de pruebas de unidad:

Agregar Mockito a su proyecto: Para empezar a utilizar Mockito, necesita agregar la dependencia de Mockito a su proyecto. Esto se puede hacer mediante la configuración de la dependencia en su archivo de construcción (por ejemplo, Gradle o Maven).

Crear un objeto Mock: Una vez que ha agregado la dependencia de Mockito a su proyecto, puede crear un objeto Mock de una dependencia externa utilizando la función Mockito.mock(). Esto creará una instancia simulada de la clase que puede ser utilizada para realizar pruebas de unidad.

Configurar el comportamiento del objeto Mock: Después de crear el objeto Mock, puede configurar su comportamiento utilizando la función Mockito.when(). Esta función le permite definir el comportamiento que desea que el objeto Mock tenga cuando se llame a un método específico.

Ejecutar la prueba: Una vez que ha configurado el comportamiento del objeto Mock, puede ejecutar su prueba de unidad como lo haría normalmente. El objeto Mock se utilizará en lugar de la dependencia real durante la prueba, lo que le permite aislar la clase que está probando.

En resumen, para utilizar e implementar Mockito en el desarrollo de pruebas de unidad, debe agregar la dependencia de Mockito a su proyecto, crear un objeto Mock de la dependencia externa, configurar su comportamiento y ejecutar su prueba de unidad.

Funcionalidad: Calculadora básica
Escenario: Sumar dos números

  • Dado que ingreso 5 en la calculadora y que ingreso 3 en la calculadora
  • Cuando presiono el botón de suma
  • Entonces el resultado debe ser 8

Para mi el testing es validar que mi código tenga el funcionamiento que yo espero y además que las pruebas garanticen que las mejoras o correcciones que se le haga obtengan los mismo resultados.

Testing: Garantiza el comportamiento esperado de una funcionalidad.
_
_
Los buenos test son:

  • Rápidos.

  • Aislados.

  • Confiables.

  • Entendibles.

  • Gherking.
    _

Unit testing

  • Aislados completamente del SDK de Android.

  • No activities, no fragments.

  • Ejecutados en la JVM.

  • Framework JUnit.

  • Mockito, Mockk.

  • Velocidad de ejecución: alta.