Blog

3 elementos esenciales para lanzar software rápidamente, sin afectar la calidad

Te contamos cómo reducir el time to market manteniendo un óptimo nivel de calidad

Foto de Lala Azizli en Unsplash

¿Cuánto tiempo tarda tu empresa, desde que alguien en ventas o marketing tiene una idea, hasta que estás vendiendo y agregando valor a tus usuarios?

Digamos que hay una funcionalidad en la que todo tu equipo coincide en que es importante implementar. Supongamos que el cambio tendría que ser capaz de admitir 100.000 usuarios en un periodo de 100 minutos. Como empresa, buscas evitar cualquier riesgo que te impida brindar una excelente experiencia de usuario. ¿En cuanto tiempo se podrían solucionar los fallos? ¿Algunas horas? ¿Un día? ¿Dos semanas?

Con cualquier transformación digital, es fundamental liberar productos con un time to market reducido, sin afectar la calidad. En este mundo hipercompetitivo, la diferencia no está en quién tiene la mejor idea, sino en quién puede implementarla y llevarla al mercado en el menor tiempo, de la mejor manera, con la calidad adecuada. 

¿Cómo pueden las empresas lanzar rápidamente soluciones digitales de calidad? Una década después de la creación de Abstracta, mis colegas y yo hemos notado tres elementos esenciales para cumplir dicho objetivo: la capacidad de aprovechar la inteligencia artificial, automatizar el pipeline y cultivar una cultura de equipo sólida que se oriente en gran medida hacia Agile y DevOps. Veamos a continuación porqué.

1. Aprovechar la Inteligencia Artificial

Según el Informe de calidad mundial 2021-22 de Capgemini y Sogeti, la inteligencia artificial continúa cambiando la forma en que se construye la automatización de pruebas y cómo se ejecutan las pruebas en general. Existe un deseo creciente entre las organizaciones de dar un buen uso a las técnicas de inteligencia artificial y machine learning en los procesos de control de calidad.

Afortunadamente, hoy en día existen muchas herramientas basadas en inteligencia artificial entre las que los desarrolladores pueden elegir, como la consola en la nube de IBM, que permite habilitar fácilmente el reconocimiento de voz, el procesamiento de imágenes y más. GoogleAmazon y Microsoft también han creado plataformas similares.

La importancia de las habilidades de Ciencia de Datos

De acuerdo, tal vez no cualquiera pueda configurar rápidamente estas herramientas y será un desafío crear algo de valor con las herramientas de inteligencia artificial, pero las empresas se están dando cuenta de las formas en que pueden resolver los problemas y optimizar los procesos.

En este sentido, hemos visto en Abstracta que la incorporación de un científico de datos (data scientist) es clave, ya que este rol es imperativo para manejar el uso de las herramientas actuales de machine learning e inteligencia artificial. Puede que contratar a un científico de datos suene intimidante, pero hemos encontrado una forma práctica y rentable de hacerlo.

Un tiempo atrás, nos dimos cuenta que podríamos beneficiarnos de la creación de una herramienta de IA que agilizara aspectos de nuestras operaciones para que pudiéramos concentrar más de nuestra energía en brindar mejores servicios de testing de software. En ese momento, no contábamos con un profesional capacitado en machine learning, pero uno de los miembros de nuestro equipo, Rodrigo Quintana, quien tiene una gran orientación matemática, se inscribió en el curso Data Science Specialization, por la Universidad John Hopkins. Hoy, Rodrigo ya está colaborando en la investigación y desarrollo de nuestras propias herramientas e incluso contribuyendo al desarrollo de uno de los productos de testing de nuestros clientes más importantes.

Con todos los cursos online disponibles en la actualidad, es más fácil de lo que te imaginas desarrollar las skills de data science de algún ingeniero del equipo, solo tienes que encontrar a alguien que esté motivado y darle el tiempo y el espacio para capacitarse en esta área.

Según este artículo de Sogeti, creemos que Abstracta no es la única en incorporar este rol:

“A medida que la Inteligencia artificial en el área de testing y el control de calidad madure, surgirán claramente tres nuevos roles: estrategas de control de calidad de IA, científicos de datos y expertos en pruebas de IA”.

Herramientas de Testing basadas en IA

Cuando se trata de inteligencia artificial aplicada específicamente al testing de software, son las herramientas de automatización de pruebas de vanguardia la que más adoptan la IA, lo que hace que las pruebas sean aún más potentes y robustas, como mablTestim y una herramienta de testing de regresión visual desarrollada por un ingeniero de Abstracta, llamada Oculow.

La particularidad de la inteligencia artificial de estas herramientas ayuda a facilitar el mantenimiento de las pruebas y a acelerar los tiempos de ejecución, incluso más que las herramientas tradicionales de automatización de pruebas.

→ Te puede interesar: Adopción del testing basado en Inteligencia Artificial – Una nueva era

En resumen, el uso de inteligencia artificial para mejorar tus operaciones y tu set de herramientas de testing, le permitirá a tu equipo enfocarse en la calidad, avanzar más rápido y también detectar errores críticos antes de la puesta en producción. 

2. Configurar un pipeline automatizado de CI/CD

No debería sorprender que para facilitar la agilidad y la velocidad, los equipos deban adoptar DevOps y configurar un pipeline de integración continua/entrega continua (CI/CD) para la construcción de productos.

En última instancia, se debe implementar un esquema en el que cada vez que un desarrollador realiza un cambio, recibe una notificación casi inmediata sobre si el cambio fue aprobado o no, aumentando así la productividad a través del feedback continuo. Ayudando también a detectar incidentes anticipadamente, cuando son más fáciles de solucionar.

Configurar un Pipeline Automatizado de CICD

En la gráfica anterior, puedes ver que este pipeline está construido sobre un servidor para integración continua. El servidor open source más popular a nivel mundial es Jenkins, sin embargo hay varias herramientas de este tipo en el mercado con muchas diferencias entre ellas en cuanto a configuración, facilidad de uso, integraciones, arquitectura, etc.

Entonces, ¿qué tipos de procesos se pueden automatizar en pipeline de CI/CD? La respuesta es que son muchos.

Pruebas de Regresión Automatizadas

Una de las primeras cosas a considerar son las pruebas de regresión, primero a nivel de código unitario, luego a nivel de integración y finalmente a nivel de interfaz de usuario, también conocidas como pruebas end-to-end. Como te mencionó anteriormente, existen excelentes herramientas enfocadas en este tipo de automatización de pruebas, algunas de ellas están mejoradas con inteligencia artificial.

Después de configurar la automatización de pruebas funcionales, estas pruebas se pueden mejorar con la ayuda de cloud, por ejemplo, pruebas en una nube de dispositivos (Device Cloud). Es decir, una plataforma de gestión de dispositivos basada en la nube, tales como AWS Device Farm (excelente para escalar) o Saucelabs para ejecutar pruebas en dispositivos móviles con diferentes navegadores y sistemas operativos.

Pruebas de Performance

La performance es otro aspecto relevante de la calidad del software. Los usuarios tienen cada vez menos tolerancia a los largos tiempos de carga en las páginas o apps. Buscan interactuar con sistemas que no solo se actualicen con frecuencia, sino que proporcionen una excelente experiencia de usuario.

Con Shutterfly, ayudamos a su equipo de ingeniería de performance a automatizar las pruebas de rendimiento en su pipeline de CI/CD. Esto permitió a sus desarrolladores saber inmediatamente cuándo una línea nueva de código degradaba el rendimiento de su e-commerce. Conoce aquí cómo se configuraron las pruebas y los excelentes resultados obtenidos.

Otros checks automáticos a considerar

Es posible agregar checks automáticos de calidad, seguridad, accesibilidad y usabilidad del código. Como puedes ver, hay muchos aspectos del software que se pueden verificar automáticamente.

Sin duda, esto no significa que los testers sean innecesarios, pero si los equipos deciden hacer todo de forma manual y no se apoyan con las herramientas adecuadas, difícilmente pueden lograr la ventaja competitiva que conlleva lanzar un software de calidad a gran velocidad.

3. Construir un equipo con una Cultura Ágil y DevOps sólida

Construir un equipo con una Cultura Ágil y DevOps sólida
Foto de Jason Goodman en Unsplash

Tener las competencias y la tecnología adecuadas es importante. Sin embargo, para lograr realmente calidad a gran velocidad, es esencial tener un equipo que sea sumamente ágil y comprometido.

No hagas agilidad, se ágil

Sobra decir que para recibir feedback y ofrecer valor de forma continua, es absolutamente necesario seguir prácticas ágiles combinadas con una cultura DevOps. También es importante no solo trabajar de esa manera en el papel, sino también en terreno (que es mucho más fácil decirlo que hacerlo).

Si los equipos no adoptan completamente los valores del manifiesto ágil, la aplicación de metodologías como Scrum será un fracaso. Los equipos que están siendo ágiles adoptan el cambio, la innovación y el aprendizaje y la creación de valor lo antes posible

Mantener comprometidos a los miembros de tu equipo

Para lograr los objetivos comerciales y de desarrollo, es esencial que todos los miembros del equipo encuentren significado en lo que hacen y se sientan conectados con los objetivos generales de la empresa. Sin esto, puede que haya una pérdida considerable de colaboradores, lo que inevitablemente ralentizará el desarrollo y afectará negativamente la moral.

Para impulsar el compromiso, hemos estado ayudando a cada uno de nuestros colaboradores a crear un mapa de ruta, un plan estratégico, para lograr sus objetivos personales y profesionales. Esta práctica transformadora nos ha brindado las herramientas para obtener una mayor comprensión de los deseos, dudas e inquietudes de nuestros colaboradores sobre su cargo. De esta manera, hemos encontrado una mejor manera para asignarlos a un proyecto y adaptarnos a sus necesidades, acompañándolos en cada paso del camino.

En los últimos años, hemos visto mayores niveles de satisfacción de los colaboradores. Con una menor rotación del talento, hemos podido mejorar la continuidad de nuestros servicios de testing de software y prestar una mejor atención a las necesidades de nuestros clientes, ayudándoles a lanzar software de mejor calidad, más rápido. 

Quality at Speed

Volviendo a la pregunta al principio de este post, para poder lanzar un nueva feature del producto que sea eficiente, confiable y robusta en menos tiempo del que normalmente lo haría, ¿qué deberían hacer los equipos?

A partir de nuestras experiencias, descubrimos que los equipos deben estar capacitados de tres maneras: aprovechando la inteligencia artificial, implementando una pipeline eficiente, automatizando el proceso de integración y entrega continua, y creando un gran equipo con una cultura sólida en torno a Agile y DevOps

En tu opinión, ¿cuáles aspectos son esenciales para lanzar el mejor software en períodos de tiempo cada vez más cortos? ¡Déjanos un comentario!


Otros contenidos relacionados

Testing de Software: qué hacer y qué evitar cuando se busca un partner

Testing Ágil para crear productos digitales de alta Calidad

Subiendo el nivel: ¿por qué asociarse con una compañía que ofrece el Servicio de Calidad?

10 / 256