Trabajando para varios clientes desde los últimos 5 años, los siguientes son los desafíos clave en la entrega de aplicaciones de calidad:
Rendimiento de la aplicación:
Dado que la aplicación móvil se ejecuta con recursos limitados, presenta desafíos de rendimiento únicos de las aplicaciones web. Nadie puede negar el papel del código limpio, claro y altamente optimizado, pero el equipo de desarrollo de aplicaciones debe ser consciente y respetuoso de los recursos limitados. El rendimiento de la aplicación móvil se mide por la capacidad de respuesta a las acciones del usuario, como:
- Cómo transmitir un video en vivo usando el protocolo RTMP en Android
- Cómo hacer que mi aplicación de Android utilice una base de datos única en lugar de una base de datos local
- ¿Cuándo mejorará el emulador de Android?
- ¿Cuáles son algunas soluciones de registro remoto para aplicaciones móviles?
- ¿Cómo debo desarrollar la aplicación de Android? ¿Qué idiomas debo aprender?
- qué tan rápido comienza
- qué tan bien usa la memoria del dispositivo
- qué tan bien usa la energía del dispositivo (batería)
y, en el caso de una animación o juego,
qué tan alta es su velocidad de fotogramas o
- qué tan suave se comporta la animación o el juego.
Los usuarios de aplicaciones móviles ya han establecido un conjunto de expectativas que debes cumplir o simplemente te encontrarás con una crítica negativa de la App Store.
Por lo tanto, el desarrollo de aplicaciones móviles debe tener la experiencia del usuario como foco principal. Todas las llamadas de red y los cálculos complejos deben realizarse en un hilo de fondo y, mientras espera una respuesta del servidor, muestra un indicador de ocupado para informar al usuario que la aplicación está funcionando. Además de esto, intente cargar los datos suficientes para dibujar una pantalla en su aplicación y permitir que el usuario comience a trabajar mientras los datos restantes se cargan en segundo plano.
Es un acto de equilibrio raro entre el tiempo de inicio, el almacenamiento de memoria del dispositivo y el uso de la memoria, pero necesita tener recursos básicos disponibles y cargados en la memoria cuando se inicia la aplicación. La clave es mostrarle al usuario algo lo más rápido posible y luego hacer que su aplicación sea interactiva.
Uso de memoria:
Dado que los dispositivos móviles tienen recursos de memoria limitados en comparación con las aplicaciones de computadoras portátiles y de escritorio, el equipo de la aplicación debe considerar el uso de la memoria desde el principio al diseñar su aplicación. La clave para administrar la memoria es mantener el estado del usuario en la memoria. Cargar datos del almacenamiento en cada interacción dañará la experiencia del usuario, por lo que debe usar memoria cuando sea necesario. Es una buena idea tener un estado de usuario requerido para construir la pantalla en la memoria, pero al mismo tiempo debe tener en cuenta que la memoria es un recurso limitado y valioso para la aplicación móvil y cargar todo lo que una aplicación requiere en la memoria puede provocar un bloqueo frecuente de la aplicación. .
Uso de energía (consumo de batería):
Las principales causas del agotamiento de la batería son:
- Llamadas intensivas de CPU y renderizado de video complejo
- Llamadas de red
Es posible que un desarrollador de aplicaciones no tenga mucho control sobre la complejidad de su interfaz de usuario y los algoritmos necesarios para construir sus pantallas, como con los videojuegos. Esto lleva a escribir código menos eficiente y aún lograr resultados adecuados, pero a costa del uso de la CPU. Si el código se optimiza con los algoritmos de mejor rendimiento, minimizará el uso de la CPU del dispositivo móvil y, por lo tanto, mejorará la vida útil de la batería. La otra causa principal del consumo de energía es el uso de la red. El costo de realizar llamadas de red es alto, y de hecho puede agotar la batería en unas pocas horas.
Estabilidad:
Obtener una mala revisión de la tienda de aplicaciones es la peor pesadilla que puede tener un equipo de desarrollo. ¿Cómo podemos evitar la revisión, ya que la aplicación no funciona bien en ciertos dispositivos o se bloquea en ciertas circunstancias? La respuesta es que no hay nada que pueda hacer a menos que sepa lo que está sucediendo en su aplicación móvil. Es esencial evaluar el rendimiento de la aplicación móvil, capturar informes de errores y fallas y correlacionar el rendimiento de la aplicación móvil con el rendimiento del servidor. Sería útil capturar la siguiente información del tiempo de ejecución
- Informes de errores y fallas
- Rendimiento del dispositivo (uso de CPU, uso de memoria, etc.)
- Tiempo de respuesta de la aplicación
- Tiempo de respuesta del servidor
- Datos demográficos (sistema operativo, tipo de dispositivo, operador, etc.)
Cada vez que una aplicación falla, se genera un informe de bloqueo o error y la aplicación tiene acceso a él. La aplicación debe capturar este informe y enviarlo al servidor con datos demográficos relevantes, como
- el sistema operativo del dispositivo
- tipo de dispositivo
- tipo de conección
- Portador etc.
Esta información puede ser útil para saber qué sucedió durante el bloqueo y la correlación con otros bloqueos determina si existe o no una causa raíz específica del dispositivo o sistema operativo.
Fragmentación de dispositivos, varios sistemas operativos y multitud de dispositivos:
Según este informe de opensignal y este panel de control, la fragmentación es la razón principal del dolor de cabeza para el equipo de desarrollo de aplicaciones. Los dispositivos con diferentes formas y tamaños, diferentes niveles de rendimiento y tamaños de pantalla, diferentes versiones del sistema operativo que están simultáneamente activos en cualquier momento, agregan otro nivel de fragmentación. Esto hace que el desarrollo de aplicaciones que funcionen en toda la gama de dispositivos pueda ser extremadamente desafiante y llevar mucho tiempo. He descubierto que los clientes informan que problemas como la aplicación es lenta o no funciona en los dispositivos que no se usan para las pruebas. La matriz de dispositivos con la lista de dispositivos bajo los cuales se debe probar una aplicación es una forma efectiva de cubrir la mayoría de la base de usuarios de la aplicación.
Las aplicaciones se están volviendo más sofisticadas y complejas:
El éxito de la aplicación móvil depende en gran medida de la rica interfaz de usuario que ofrece. El retraso de más de un par de segundos es inaceptable y el usuario puede cambiar la preferencia sobre la aplicación en función de esto. Las experiencias sofisticadas del usuario con el tacto, los gestos, la ubicación GPS, el audio, los sensores, las acciones físicas (NFC) pueden requerir pruebas personalizadas en dispositivos reales.
A medida que las aplicaciones se vuelven más complejas, las pruebas en dispositivos reales son mucho más importantes que los emuladores o dispositivos remotos. Los errores pequeños y los casos extremos se pierden sin probar en los dispositivos reales. Problemas contextuales como
- si el texto en pantalla es legible
- si los botones de pantalla y los hipervínculos están lo suficientemente separados, etc.
Crea un desafío único. Esto restringe el uso de la automatización en las pruebas de aplicaciones y depende de los humanos para los resultados.
Gran número de operadores de redes móviles:
Diferentes operadores de redes móviles utilizan diferentes estándares de red y diferentes tipos de infraestructura de red. Exhiben amplias variaciones en la latencia y confiabilidad del ancho de banda.
La conexión lenta puede verse como un problema para el equipo de la aplicación, ya que el usuario requiere una conexión a Internet para obtener datos del back-end que sirve al usuario con actualizaciones e información.
Uno de los escenarios importantes a considerar es el comportamiento de la aplicación a diferentes velocidades de conexión a Internet (ya sea que funcione o se bloquee).
Conclusión:
La entrega de calidad de las aplicaciones móviles es diferente de las aplicaciones tradicionales de escritorio o basadas en la web. Los dispositivos móviles debido a la diversidad de dispositivos, sistema operativo, CPU de menor potencia y menor memoria, requieren pensar de manera diferente sobre el desarrollo de aplicaciones.