¿Te ha gustado el artículo?
0
¿Te ha gustado el artículo?
0

Cómo crear una app nativa (IV): usability y app testing

Como fase final en el proceso de desarrollo de una aplicación, el app testing representa la oportunidad de evaluar su comportamiento y su madurez. En este estadio se examina la aplicación en lo referente a sus aptitudes funcionales y a su usabilidad, así como se comprueba su compatibilidad con diferentes dispositivos y sistemas operativos.

Una vez desarrollada técnicamente y fijado el diseño final, lo más normal es querer publicar la aplicación cuanto antes. Sin embargo, lo más oportuno sería examinar la idoneidad de la aplicación en diferentes ámbitos. Los métodos más utilizados para ello son los tests de usabilidad, de rendimiento y de compatibilidad, procedimientos incluidos dentro del denominado testing de aplicaciones móviles o, sencillamente, app testing, y para el cual se disponen de diversas herramientas que presentamos más abajo.

App testing: la hora de la verdad

El éxito final de una aplicación depende no poco de los contenidos que ofrece y de una buena comercialización, pero aún más de un funcionamiento impecable y de un diseño amigable. Esto hace que las pruebas previas a su lanzamiento sean imprescindibles, independientemente de que se trate de una aplicación móvil o para escritorio, aunque en el caso de las primeras se ha de contar con un factor extra de gran peso como es la adaptación a los diferentes terminales, aspecto mucho más complejo en las aplicaciones móviles que en otro tipo de software.

En los albores del desarrollo de aplicaciones, ajustar la aplicación a las diferentes pantallas no comportaba tanta dificultad porque aún no existía tanta diversidad, pero entretanto la variedad de terminales móviles y de prestaciones ha crecido exponencialmente, de tal forma que cada modelo de smartphone o de tablet cuenta con un hardware completamente diferente. En particular, componentes como el procesador (unidad de CPU), la memoria RAM, el tamaño de la pantalla o su resolución son decisivos a la hora de ejecutar una aplicación.

También el software del dispositivo tiene un papel importante. En este caso son, en primera instancia, los distintos sistemas operativos de una plataforma los que influyen en el funcionamiento de la aplicación. Aquellos sistemas más antiguos pueden dificultar el uso de una determinada aplicación por falta de actualización (y conviene no subestimar la expansión de versiones anteriores tanto de sistemas Android como iOS). La diversidad de sistemas operativos utilizados en la práctica se pone más aún de manifiesto cuando observamos la utilización de las distintas versiones de Android, pues, en general, las versiones antiguas superan en usuarios a la más nueva, lo que tiene que ver con el retraso de algunos fabricantes en ofrecer la actualización para sistemas Android. Y, si bien es cierto que en sistemas iOS la nueva versión del sistema operativo llega a los terminales Apple más rápidamente, también lo es que los iPhones o iPads más antiguos ya no tienen ocasión de actualizarse más, motivo por el que también es posible encontrar versiones iOS obsoletas en terminales Apple.

Esta diversidad en cuanto al hardware y al software de los terminales móviles recibe el nombre de fragmentación y sitúa a la garantía de calidad de las aplicaciones ante importantes desafíos. Es aquí donde interviene el app testing, durante el cual se comprueba si la aplicación, en efecto, funciona y, si lo hace, si se dan problemáticas durante su ejecución. Garantizar una experiencia de usuario óptima para el mayor número posible de usuarios solo es posible detectando y solventando estos obstáculos, pues, únicamente si una aplicación ofrece una buena performance y usabilidad en tantos dispositivos como sea posible, puede lograr la expansión deseada.

En resumen

El éxito de una aplicación depende no poco de los contenidos que ofrece y de su buena comercialización, pero aún más de un funcionamiento impecable y de un diseño amigable. Esto convierte al testing de aplicaciones móviles en un trámite imprescindible.     

En qué consiste el testing de aplicaciones móviles

A la hora de realizar pruebas de calidad son posibles diversas aproximaciones. Las cuestiones que deciden cómo se van a llevar a cabo son principalmente, quién o qué ha de hacerlo (tests manuales o automatizados) y cómo (en cada terminal o mediante un simulador o emulador).

App testing manual o automatizado

Test manual por parte de un usuario

La prueba manual, en la cual es el usuario quien evalúa la aplicación, es la variante más clásica del app testing y tiene su razón de ser en lo difícil que es para los equipos de desarrolladores, por el tiempo que supone, probar ellos mismos el funcionamiento de una aplicación, en especial en el caso de las apps para Android. Como solución, se recurre a un conjunto de personas lo más representativo posible que ha de utilizar la aplicación según unas condiciones predefinidas por el equipo de desarrollo y evaluarla al final. La ventaja de integrar en el test a personas externas al equipo es que no disponen de ningún tipo de conocimiento previo en relación con la operatividad de la aplicación, lo que las coloca, a la hora de valorarla, en la posición más cercana al juicio del usuario potencial.

Otro tipo de test manual de aplicaciones consiste en el crowdtesting. Para este tipo de pruebas, el equipo de desarrollo recurre, a través de empresas de crowstesting, a un grupo de testers que se corresponde con su audiencia para que prueben su aplicación en sus propios dispositivos. El app testing no tiene lugar, así, en un entorno de prueba aislado, sino en el entorno natural del usuario, lo que aumenta la autenticidad de los resultados de las pruebas.

Con el denominado TestFlight Beta Testing de Apple se puede organizar un crowdtesting invitando hasta a 2000 personas para que prueben aplicaciones para iOS, así como para watchOS o tvOS. Google también ofrece a los desarrolladores de software diferentes opciones para realizar pruebas alpha y beta de aplicaciones Android.

Test automatizado mediante herramientas de app testing

A diferencia del manual, el control automatizado se aplica sobre todo en ámbitos en los cuales se trata de probar ciertos procesos de forma continuada bajo condiciones cambiantes mediante un software especial. La mayor ventaja de este tipo de examen radica en el ahorro de tiempo que supone, ya que estos programas pueden llevar a cabo las pruebas en una fracción del tiempo que requeriría una persona para hacer lo mismo. Sin embargo, no es apropiado para todos los campos de prueba.

App testing con un dispositivo físico o con un simulador

Probar una aplicación en un terminal físico

La evaluación de una aplicación en todos los dispositivos móviles es la solución ideal que permite controlar el funcionamiento de una aplicación en combinación con el software y el hardware propio de cada caso. Sin embargo, se trata de una opción cara y exigente en cuanto a la duración, pues, si se quieren realizar pruebas exhaustivas es necesario un gran número de smartphones y tablets, en cada uno de los cuales hay que probar el comportamiento de la aplicación desde cero. La mejor alernativa consiste en recurrir a diversos proveedores a través de los que se obtiene acceso a un contingente de dispositivos diferentes, a menudo denominados “Device Lab” o “Test Lab”, con los cuales se puede probar la aplicación.

Utilizar un emulador / simulador

Los simuladores y los emuladores son programas que imitan el funcionamiento de ciertos dispositivos y que permiten probar aplicaciones virtualmente. Sin embargo, los resultados obtenidos con este tipo de app testing no son siempre absolutamente fiables al no poder ser simuladas todas las interacciones de los usuarios de forma completamente veraz. Dado que la simulación tiene sus límites, algunos tipos de prueba requieren necesariamente ser realizados en un terminal físico.

No obstante, aunque los simuladores y emuladores no pueden sustituir por completo a las pruebas en aparatos físicos, sí constituyen un buen complemento a los mismos, sobre todo de los automatizados. Con su ayuda es posible probar la aptitud de una aplicación en diferentes condiciones de software y de hardware. Muchos de estos programas están disponibles de forma gratuita, por ejemplo, en Android Studio o en el Xcode de Apple.

Hecho

Android es el sistema operativo que más crece en la industria móvil española, superando a los dispositivos iOs con una cuota de mercado que ha alcanzado el 91 % de las ventas en el segundo trimestre de 2016, tres puntos más que el mismo período del año anterior.

¿Qué se puede evaluar en el app testing?

De la misma forma que existen procedimientos diferentes a la hora de evaluar la madurez de una aplicación, también cabe examinar distintos aspectos en un testing de aplicaciones móviles exhaustivo. Los cuatro apartados que presentamos a continuación, si bien representan solamente una selección, son imprescindibles. Además de estos cuatro, es posible también comprobar la seguridad (security testing) o la localización (localization testing), entre otros muchos.

Prueba funcional (functional testing)

Con una prueba funcional se controla si la aplicación actúa realmente como se había planificado: se comprueba que todos los contenidos de la aplicación trabajen de la forma correcta, inspeccionando cada función, cada pantalla y cada botón. El test funcional gira en torno a las preguntas:

  • ¿Se puede instalar y desinstalar fácilmente?
  • ¿Funcionan todos los contenidos como estaba previsto?
  • ¿Puede continuar usándose sin ningún problema después de haber sido minimizada?
  • ¿Se producen errores y caídas de la aplicación?
  • ¿Recibe el usuario la notificación correspondiente cuando se produce un error?

Pero, además de la aplicación en sí, también hay que examinar su comportamiento en determinados escenarios:

  • Cuando la aplicación es minimizada, ¿se pueden seguir ejecutando otras aplicaciones y otras funciones del dispositivo sin problemas?
  • ¿Se minimiza automáticamente cuando entra una llamada?
  • ¿Se reciben y almacenan los mensajes de texto y otras notificaciones durante el uso de la aplicación?

Test de usabilidad (usability test)

La prueba de usabilidad permite comprobar la facilidad de uso de la aplicación para el usuario, lo que también se denomina usabilidad. Obviamente, en este caso el test automático no es una opción, pues solo los usuarios pueden evaluar en qué medida una aplicación es fácil o difícil de usar, de la misma forma que tampoco es muy práctico en muchos aspectos utilizar un emulador o un simulador, pues solo es posible evaluar el manejo de una aplicación mediante un dispositivo físico. Solo así es posible saber cómo se percibe el control táctil de la pantalla y las diferentes acciones que se pueden llevar a cabo en ella, así como los tiempos de reacción cuando se activan estos comandos. Otros aspectos que se toman en consideración en un test de usabilidad son los siguientes:

  • ¿Se puede entender su funcionamiento de forma evidente? ¿Se ofrecen explicaciones en el caso de funciones más complejas?
  • ¿Se ha colocado el contenido de tal forma que el usuario puede acceder a las funciones más importantes sin obstáculos?
  • ¿Siguen la colocación de los contenidos y la composición de la interfaz un concepto coherente reconocible en todos los aspectos de la aplicación e inteligible de forma intuitiva?
  • ¿Se han colocado bien los botones y diseñado en su tamaño adecuado? No hay que olvidar a aquellos usuarios con movilidad reducida.
  • ¿Es la redacción de los textos lo suficientemente precisa y tiene el formato adecuado en cuanto a legibilidad?

El usability test detecta estos y otros problemas en el uso de la aplicación, así como omisiones en la representación amigable del layout. Con el objetivo de recabar resultados elocuentes, hay que intentar que el test sea llevado a cabo por suficientes sujetos. Asimismo, también es una ventaja que al menos una gran parte de estas personas se integren en el público objetivo para el cual se diseña la aplicación, pues de esta forma se puede optimizar la utilización y la estructura del layout en función de los deseos de la audiencia, lo que, en definitiva, permite ofrecer a los usuarios la mejor experiencia de usuario posible.

Test de compatibilidad (compatibility test)

Esta prueba controla la compatibilidad de una aplicación en relación con el hardware y el software de los distintos dispositivos móviles. Respecto al hardware, por ejemplo, hay que probar la visualización de la aplicación en pantallas diferentes, ya que, debido a la diversidad de tamaños y resoluciones de pantalla presente en el mercado móvil, es fácil que se produzcan errores de ajuste o de visualización, sobre todo si no se crearon layouts diferentes para cada formato de pantalla. Otros aspectos como la CPU o la memoria RAM también varían mucho en función del terminal. Conviene recordar aquí que los aparatos antiguos no son ninguna rareza y si la aplicación no solo está proyectada para los modelos actuales, sino que también funciona de forma aceptable en los antiguos, se amplía correspondientemente su público potencial.

En lo que hace referencia al software, en un test de compatibilidad se controla que la aplicación se ejecute sin problemas en los más diversos sistemas operativos. En particular en el caso de una aplicación para Android, probarla en las diferentes versiones de su sistema operativo es especialmente relevante, ya que a través de esta plataforma se distribuyen y utilizan muchas más versiones diferentes que en iOS.

Mediante un test de compatibilidad es posible comprobar en función de qué condiciones técnicas aparecen los primeros problemas de ejecución. Si los requisitos de software o de hardware son muy altos, quizá habría que considerar una reducción de ciertas condiciones fundamentales del sistema para no limitar la audiencia.

Test de rendimiento (performance test)

Con él se prueba cuántos recursos del sistema consume la aplicación cuando se utiliza continuamente. Aquí los desarrolladores están interesados en saber si la aplicación funciona de forma fluida o se generan fallos cuando se utiliza sin descanso, si la batería se gasta en exceso o si el dispositivo se recalienta una vez transcurrido cierto tiempo. Igual que en el de compatibilidad, en este test también se evalúa el rendimiento de la aplicación bajo determinadas condiciones, por ejemplo, cómo afecta a la ejecución de la aplicación el que la memoria no disponga de mucho espacio libre o que la batería esté casi agotada. En definitiva, el test de rendimiento mide en qué medida determinadas situaciones influyen de manera negativa en el comportamiento de la aplicación.

En el campo de las pruebas de calidad de software, cuando de lo que se trata es de someter a uno o a varios componentes a una carga elevada se habla de pruebas de carga (load testing) o de estrés (stresstest). Un ejemplo sería la prueba de estrés de un servidor, en la cual se evalúa el comportamiento de una aplicación en el caso de un elevado número de accesos a su servidor. En el caso de una aplicación cuyas funciones requieren una conexión a Internet activa, la prueba de carga de la red ha de identificar los efectos de una conexión débil en el funcionamiento de la aplicación. Las pruebas de estrés, por su parte, tienen el objetivo de mostrar cuánta carga soportan ciertos componentes antes de mostrar limitaciones en sus aptitudes.

Hecho

La seguridad también afecta a las aplicaciones, dado que están disponibles en terminales susceptibles de uso fraudulento. Otra prueba imprescindible es la prueba de seguridad (security test), con la cual se comprueba la confidencialidad de los datos privados, la autenticación del usuario, los perfiles diferentes que el usuario pueda tener en la aplicación o el autoguardado de actividades.

Herramientas de mobile app testing

Estas pruebas no tienen que ser llevadas a cabo manualmente en todos los casos. En muchos aspectos, las herramientas de testing de aplicaciones móviles facilitan el trabajo enormemente. Dado que hasta ahora nos hemos ocupado del desarrollo de aplicaciones nativas para sistemas Android e iOS, hemos seleccionado herramientas para estas plataformas.

Appium

Appium es un programa de código abierto para la automatización de pruebas independiente de plataforma. Disponible de forma gratuita, esta herramienta no solo permite probar aplicaciones nativas para Android o iOS, sino que también soporta la automatización de pruebas de aplicaciones híbridas y web para ambas plataformas.

En Appium se utiliza la misma interfaz de programación tanto para iOS como para Android, de tal forma que permite reutilizar el código escrito. Las pruebas realizadas con esta herramienta se pueden llevar a cabo en aparatos físicos, en emuladores y en simuladores. Se trata de un software muy útil para realizar pruebas de app testing automatizadas, aunque requiere un cierto grado de conocimientos en desarrollo de software.

Calabash

Nuestro siguiente ejemplo, Calabash, también es gratuito, aunque, al contrario que Appium, también puede ser utilizado por usuarios sin conocimientos en programación. Sin embargo, el espectro de funciones es bastante menor. Calabash está indicado, sobre todo, para pruebas funcionales tanto en dispositivos físicos como en un simulador. La prueba de framework fue desarrollada por la firma de software Xamarin, que con la Xamarin Test Cloud propone una plataforma de app testing mucho más profesional, pero no gratuita.

TestFairy

En la página web de TestFairy los desarrolladores pueden colgar su aplicación e invitar a personas a que la prueben, para lo cual solo tendrán que descargarla y utilizarla. Esta es una plataforma que, de alguna manera, permite a los equipos de desarrollo gestionar su propio crowdtesting. La herramienta incluye una función para notificar errores y permite crear una toma de vídeo mientras se usa la aplicación. TestFairy está disponible como versión gratuita y también como versión profesional de pago.

Ubertesters

Ubertesters es una plataforma de soporte para realizar la prueba de la versión beta de las aplicaciones. Además de mantener el control total sobre las pruebas y de obtener informes exhaustivos, la herramienta de app testing permite trabajar en equipo, detectar errores del programa de forma relativamente sencilla, crear y probar versiones de prueba diferentes de una aplicación y llevar a cabo crowdtests en la forma de, por ejemplo, tests de usabilidad y de funciones. Ubertesters está disponible en diversos paquetes, cada uno con una paleta diferente de funciones, el más sencillo gratuito.

Solventar los errores detectados en la prueba de calidad

Cuando un emulador ha encontrado un problema, sería oportuno comprobarlo de nuevo en un dispositivo físico antes de intentar solventarlo, pues no todos los conflictos que se detectan en una emulación de la aplicación tienen lugar también durante el uso real. Si continúan apareciendo durante su uso en el aparato, entonces ha llegado el momento de actuar. Ahora bien, ¿cómo puede reconocerse que el desencadenante es un funcionamiento incorrecto? Las pruebas de calidad no aportan un diagnóstico exacto, así que, aun cuando algunas herramientas pueden resultar de ayuda, a menudo los desarrolladores han de analizar los problemas y los fallos manualmente. En general, estos suelen ser debidos a una programación errónea o a una cierta incompatibilidad con determinados componentes de los dispositivos.

Si se encuentra el causante de una función defectuosa hay que valorar si merece la pena solucionarla y en qué medida es posible sin que afecte al correcto funcionamiento de la aplicación. Obviamente, la versión final de la aplicación ya no puede tener errores generales de programación: todas sus funciones fundamentales, como la navegación o la representación de los contenidos, han de estar operativos de forma estable y continua.

Más difícil es decidirse a favor o en contra de una resolución del problema cuando la causa no se encuentra en una programación errónea sino en un conflicto con un determinado software o hardware, como sistemas operativos obsoletos o componentes de hardware antiguos o con menor rendimiento que ralentizan o imposibilitan la ejecución de una o varias funciones de una aplicación. En un caso así es recomendable analizar exactamente los resultados del app testing para averiguar qué elemento en concreto podría ser el responsable de una ejecución problemática de la función. El principio de prueba y error podría ser de gran ayuda en este punto.

Qué requisitos técnicos han de tener las aplicaciones

El público de una aplicación aumenta, sin duda alguna, cuando se diseña para que también sea operativa en muchos terminales antiguos, pero adaptarse a un gran número de dispositivos es posible dentro de unos límites. Aquellas aplicaciones muy exigentes en cuanto a potencia, por ejemplo, cuyas funciones necesitan un procesador más potente o mucha memoria, podrían no poder ser adaptadas a un hardware más antiguo. Y si una aplicación requiere una conexión excelente a Internet, no se debería intentar adaptarla a cualquier precio a un escenario en el cual se dispone de una conexión débil.

Muchas aplicaciones requieren, sencillamente, unas condiciones técnicas determinadas. Las hay que necesitan un tamaño de pantalla específico para poder ser ejecutadas, mientras que otras, como la aplicación de YouTube, solo funcionan cuando se puede recurrir a una velocidad de transferencia de datos lo suficientemente ágil, y aun así, se trata de la aplicación más descargada. Antes de ajustar y reducir el espectro de funciones de una aplicación, hay que reflexionar, con la vista puesta en el alcance de la aplicación, acerca de si con ellos se reduce su funcionalidad más de lo deseado.

El app testing como garante de la calidad de las aplicaciones

Las pruebas de calidad constituyen el último paso del proceso de desarrollo de aplicaciones móviles y, si bien requieren una gran dedicación, al final resultan rentables especialmente si se considera que las pruebas de app testing contribuyen a lograr que el mayor número posible de usuarios las usen sin ningún tipo de obstáculo. Es importante, a la hora de llevar a cabo estas pruebas de calidad, mantener un cierto equilibrio entre la utilización de aparatos físicos y de emuladores. Y una vez se ha probado a conciencia y, o bien no se han encontrado problemas graves o bien se han podido solventar, ¡enhorabuena! Has conseguido plasmar con éxito la idea inicial de la aplicación y puedes lanzarla para su descarga. No obstante, aún quedan algunos deberes por hacer:

Por un lado, deberías repetir algunas de las pruebas ya realizadas en períodos regulares de tiempo, en especial las pruebas de compatibilidad y de rendimiento. Este control constante garantiza que la aplicación también funcione sin mácula en el futuro.

Por el otro, conviene conocer los pasos que requiere la publicación de una aplicación en las tiendas de Apple o Google. Antes de nada, el autor de la aplicación tiene que registrarse en la tienda correspondiente para poder comercializar su aplicación, proceso del que se ocupa el siguiente capítulo de nuestra serie sobre el desarrollo de aplicaciones, dividido en el registro en la tienda de Apple y en la Google Store. Una vez publicada, aún es posible optimizar el posicionamiento de la aplicación en la Google Play Store y en la de Apple. Así, los artículos concluyentes de la serie contienen lo más relevante en torno a las tiendas de aplicaciones.

Tutoriales Digitalización Aplicaciones Comercio Móvil Público Objetivo