Testing de aplicaciones

La agilidad no está reñida con la calidad

1302
Una de las características más importantes de este convulso panorama de la transformación digital es la velocidad a la que suceden las cosas. Para poder atender a las demanda de los usuarios, y, por ende, a las de negocio, los tiempos de desarrollo para las aplicaciones empresariales se han reducido de forma exponencial. Pero la velocidad en la entrega no debería estar reñida con otros parámetros como la seguridad o el control de errores; ni, lo que es más importante, con la experiencia de usuario.

Este contexto digital en el que vivimos nos deja un escenario en el que negocio debe responder lo antes posible, y de forma adecuada, a las necesidades de sus clientes. Sobre TI, y sobre los departamentos de desarrollo, recae la tarea de agilizar en lo posible todos estos procesos, pero sin perder de vista lo relacionado con las pruebas de rendimiento o de seguridad, y con la gestión de errores.

Además, el contexto se complica. Ya no se trabaja en entornos monolíticos y relativamente controlados, sino que la realidad nos lleva a múltiples sistemas y plataformas que, además, suelen estar distribuidos en modelos públicos o privados, y aplicaciones que llegan al usuario final de diferentes modos y se consumen en todo tipo de dispositivos, especialmente en movilidad.

Tradicionalmente han existido soluciones de pruebas funcionales capaces de llevar toda la gestión del ciclo de vida de las aplicaciones, desde los requisitos hasta los planes de prueba, la ejecución y la detección de errores o defectos. También existían las herramientas de automatización que lo soportaban y que probaban funcionalmente las soluciones en multitud de entornos, pruebas de carga, de integración, etc.

Pero la calidad de las aplicaciones ya no se gestiona a partir de los proyectos en cascada o en V, tal y como se hacía antes. Han aparecido las metodologías ágiles y la automatización
—aplicada no solo al testing, sino a todo el ciclo de vida de la aplicación— es el primer paso hacia la agilidad.

En este escenario resulta vital contar con soluciones, como Agile Manager, que permitan trabajar en metodologías ágiles. En cualquier caso, es importante soportar ambos mundos, porque, dependiendo del proyecto o del tipo de servicio o solución, en ocasiones estas metodologías no terminan de casar con determinados desarrollos.

AppPulse Mobile permite monitorizar la experiencia del usuario en tiempo real

Automatización

Desde el punto de vista del testing, nuestra propuesta es automatizar todo el proceso, desde la toma del requisito hasta la ejecución y validación, y tanto para ámbitos funcionales, de integración o de carga, como para los relacionados con la seguridad. Lo que intentamos es que todo el ciclo de vida, también el relacionado con la seguridad, esté embebido desde el principio en las fases de pruebas, ya sean unitarias, de regresión, de validación, de carga o de integración. De hecho, nuestras soluciones ofrecen posibilidades como la de generar un esqueleto de pruebas sin tener siquiera el mockup de la aplicación, y después asignar a las herramientas de testing los módulos y funciones ya creadas para poner en marcha la automatización también en este ámbito.

Otros elementos que se han de tener en cuenta son los relacionados con la ejecución de las pruebas. Montar un entorno, validarlo, ejecutar las pruebas y volver a limpiarlo para iniciar otro run es un hándicap a la hora de ser ágiles. En este punto existen soluciones que ayudan a provisionar entornos de manera automática, ejecutar esas pruebas y “desprovisionar” el entorno de forma desatendida.

Ahí entran tecnologías como Jenkins u otros estándares del mercado con los que nos integramos. Además, el entorno de pruebas puede ser la infraestructura interna, pero también se puede utilizar una cloud privada o pública. Esto puede resultar especialmente interesante, por ejemplo, para lanzar pruebas de carga desde distintas localizaciones.

La idea principal es, dentro de ciclo de vida del desarrollo de las soluciones, agilizar el máximo el proceso de testing y que se integre de la mano de las metodologías ágiles. Automatizar todo aquello que sea posible, siempre soportando la mayoría de los entornos, tecnologías y dispositivos del mercado.

Pruebas manuales atendidas

Cuando no es posible incluir metodología agile se puede optar por soluciones de ayuda a las pruebas manuales. Sin llegar a ser una automatización, complementa el trabajo manual con herramientas como la grabación de vídeo de los procesos para poder documentarlos más fácilmente, o incluso hacerlo en modo texto para que ese proceso pueda ser automatizado utilizando el script que se ha corrido.

Experiencia de usuario en tiempo real

La gestión adecuada de todo este ciclo de aplicaciones es cada vez más importante. Ahora mismo, las organizaciones están muy expuestas al usuario final, que está interactuando con nuestra organización a través de aplicaciones móviles o de la Web. Cualquier fallo relacionado con la calidad o la seguridad no solo se traduce en un problema de generación de negocio, sino que deriva en una pérdida de imagen y de reputación que, además, se difunde de forma viral.

Ese tipo de cosas fuerzan que los ciclos de calidad cada vez sean más exhaustivos, pero esto no no tiene que paralizar esa agilidad que se demanda desde negocio. Aunque IT debe validar todos estos desarrollos desde el punto de vista operativo —en cuanto a tiempos de respuesta, rendimiento, funcionalidades—, negocio está entrando mayoritariamente en escena para interesarse por la experiencia de usuario.

Negocio quiere saber cómo de satisfecho está el cliente con su aplicativo. Da por hecho que va a funcionar de forma correcta, pero ahora quiere saber cuál es su experiencia.

En este contexto entran en escena soluciones como AppPulse Mobile, que permite monitorizar la experiencia de la calidad percibida por todos los usuarios que están usando una determinada aplicación. Desde la consola se puede ver, en tiempo real, cómo se comporta en cada uno de los dispositivos (podemos estar hablando de millones de datos, ya que está potenciada con todas las soluciones de gestión de big data) y se pueden conocer los apartados por los que pasan los usuarios, qué áreas no abren, si hay errores y dónde están, si hay problemas de tiempo de respuesta, en qué dispositivos y con qué sistemas operativos…

Este compendio de información permite, por ejemplo, conocer o documentar determinados comportamientos para dar la respuesta adecuada desde el call center.  A los departamentos de marketing les permite conocer el uso real que se hace de esta aplicación y ver cómo se comporta el usuario. Es curioso ver cómo, en ocasiones, existen menús o funciones por los que nunca ha pasado nadie (algo se está haciendo mal: o está muy oculto o no es interesante).

Y todo eso se hace en tiempo real, sobre todos los usuarios que están usando los aplicativos.

Pero, además, esta solución permite contar con un input muy importante con vistas a la retroalimentación en las tareas de desarrollo, algo que está tan presente en todo lo relacionado con Agile y con DevOps. A través esta información será posible ir adaptando las diferentes versiones a las necesidades reales de los clientes en función de las experiencias medidas.