Implementación y pruebas dentro del desarrollo de Apps Móviles

Por

La implementación de aplicaciones para dispositivos móviles se asemeja mucho a la del resto de aplicaciones, aunque, generalmente, se trata de aplicaciones más pequeñas, o bien que tienen ciclos de desarrollo más cortos que las aplicaciones tradicionales. Esto se debe tanto a la propia naturaleza de la aplicación como a las necesidades del mercado que demanda conseguir prototipos o pruebas de concepto rápidas.


Una particularidad de las pruebas es la necesidad de tener un emulador o entorno de pruebas para poder probar aquello que estamos desarrollando. Esta necesidad provoca dificultades (no se puede realizar la prueba si no se dispone de un dispositivo) y ser lentas (por la lentitud de ejecución sobre los dispositivos o emuladores). Por este motivo, se acude a las pruebas unitarias que permiten dividir el desarrollo, con lo que se puede probar de manera desacoplada y desarrollar partes de nuestra aplicación sin la necesidad de pruebas en el emulador, como pueden ser los accesos a bases de datos o bien la lógica de negocio.


De cara a la implementación en el desarrollo de apps, hay una serie de factores que toman especial importancia en el caso de las aplicaciones para dispositivos móviles, y serán primordiales para el éxito del proyecto:

 

Usabilidad

La usabilidad de la aplicación se debe tener muy en cuenta (debemos tener presente que la mayoría de usuarios no tendrán tiempo ni ganas de leer los manuales). Una buena práctica para mejorar la usabilidad es adaptar las aplicaciones a los comportamientos estándares de la plataforma, de manera que el usuario pueda aprovechar reglas mnemotécnicas o hábitos adquiridos.

 

img11.jpg


Responsividad

La aplicación debe responder a las acciones de usuario lo mejor posible y de manera ágil. Es un punto muy importante pues el usuario de dispositivos móviles suele ser más exigente que el de aplicaciones tradicionales en situaciones parecidas. Algunas plataformas, como Android, son muy estrictas a la hora conseguir que la aplicación sea suficientemente responsiva. Si la aplicación no es suficientemente ágil a la hora de responder al usuario, el sistema debe avisarle de esta circunstancia y permitir que la cierre inmediatamente.

MOB_native-vs-web-app-whats-the-diff-which-do-i-need_M-940x400.png


Optimización de recursos

Los dispositivos móviles, incluso los actuales, cuentan con unos recursos mucho más reducidos que las aplicaciones de sobremesa o las páginas web. Esto quiere decir que tenemos que hacer un buen uso de la memoria y del procesador del dispositivo, por lo que es conveniente cerrar los recursos que no se necesiten para evitar los problemas asociados. También es importante prestar mucha atención al consumo de batería de la aplicación. Por ello, es recomendable evitar cálculos excesivos (como los cálculos de coma flotante), el uso de las funciones de vibración o el uso de las conexiones inalámbricas. Cada una de estas recomendaciones se debe adaptar a la plataforma específica donde trabajamos, pues los fabricantes nos darán las recomendaciones concretas. Otra buena práctica, en este sentido, es perfilar la aplicación con las herramientas propias de la plataforma para encontrar problemas.

 

rapidez.jpg

 

Accesibilidad de la aplicación

Debemos tener en cuenta al diseñar la aplicación que los usuarios pueden necesitar acceder a ella de diferentes maneras. Por ejemplo, si tenemos una aplicación con formularios, es ideal que sea accesible tanto a través de las pantallas táctiles como de los trackballs.

 

 accesibilidad-android.jpg

 

Importancia de las pruebas unitarias

Las pruebas unitarias sirven, como ya hemos comentado, para probar el correcto funcionamiento de una parte del código. Estas pruebas tienen como características más destacadas, que han de ser automatizables (no es obligatorio, pero sí muy recomendable), completas, reutilizables o repetibles a lo largo del tiempo, independientes entre si y tan profesionales como el propio código.

 

Si la prueba se centra en una parte de la aplicación que depende del dispositivo en qué se ejecuta, se la denomina prueba de integración.

 

img_secundaria_testing-blog-11-mpfu2vyedxojte34rv9jeycykm8iiohw2hk9xlmlyk.png


Las pruebas unitarias agilizan el desarrollo porqué se centran en una parte del desarrollo y, por tanto, no será necesario probar dicha unidad dentro del emulador o emuladores, siempre que se trate de una parte realmente unitaria. Además, refuerzan la fiabilidad del desarrollo porqué se realiza al mismo tiempo que la prueba que lo verifica. Y las ventajas se multiplican cuando la prueba es automatizada pues evita la aparición de errores en un futuro al probar la aplicación de manera más exhaustiva.


Pruebas de integración contextualizadas

Las pruebas que realicéis deben estar contextualizadas; es decir, deben reproducir lo que realmente le está pasando al usuario cuando utiliza nuestra aplicación. Así, no es lo mismo probar un gestor de rutas para el coche que probar una aplicación para controlar los gastos de la empresa, pues se usan en momentos y con objetivos muy distintos.

 

Apps para la inclusion.jpg

 

Hay una serie de preguntas que se debe hacer la persona que pruebe la aplicación para poder realizar correctamente estas pruebas. Por ejemplo:


• ¿Cuál es la experiencia del usuario con la aplicación?
• ¿Se carga rápidamente la aplicación? ¿Se necesita alguna barra de progreso de la aplicación? ¿Y con conectividad reducida?
• ¿Cambia la aplicación al mover el dispositivo? Es decir, ¿se deben tener en cuenta los sensores de acelerómetros? ¿Reacciona con agilidad a estos cambios?
• ¿Acepta correctamente la aplicación las interrupciones como, por ejemplo, las llamadas telefónicas? ¿Acaba correctamente la aplicación? Es decir, ¿cierra correctamente todos los recursos utilizados?
• En caso de utilizar conectividad, geolocalización o cualquier otro servicio, ¿cuál es el comportamiento esperado de la aplicación ante la falta de dicha capacidad?

 

Para poder responder a este tipo de preguntas se deberán generar una serie de pruebas que llevaran a contextualizarla. Sin estas pruebas, la aplicación puede no funcionar bien en muchos casos. La mejor manera de llevar a cabo estas pruebas es, sin duda, sobre los propios dispositivos. El tipo, número y diversidad de las pruebas dependerá de los requisitos de la aplicación, pero se hace totalmente imprescindible haber realizado pruebas con dichos dispositivos antes de poder distribuir la aplicación.


Continuidad de las pruebas

Como en cualquier desarrollo, es importante que realicéis pruebas en cada nuevo desarrollo, pero en este caso lo es más que en otros entornos con mayor facilidad de cambio, pues generalmente (y en especial con aplicaciones nativas) los despliegues de la aplicación y de sus actualizaciones no suelen estar controlados por los desarrolladores. Esto quiere decir que cualquier cambio, bug o mal funcionamiento tiene mayor repercusión y se debe ir con mucho cuidado para evitar la reaparición de problemas ya solucionados. Una manera de combatir este problema es mantener un plan de pruebas y ejecutarlo en cada nueva versión.


Si se trata de una aplicación web para móviles, es mucho más fácil hacer cambios. En una aplicación nativa, las nuevas versiones pueden ser actualizadas mediante el propio sistema, dependiendo del entorno operativo (OC).

 

DEMO Emprendedor

Recursos