Diferentes formas de reducir los costos asociados a testing de manera eficiente, sin afectar la calidad.

Optimizar los Costos de las Pruebas de Software

Frente a la pandemia actual y al impacto que está teniendo en la economía global, mis colegas y yo hemos estado pensando mucho en estos días sobre cómo podríamos ayudar a nuestros clientes y a otros a encontrar formas de optimizar los costos de las pruebas de software, sin dejar que la calidad de sus productos se vea afectada. Y nos atrevemos a decir que incluso, es posible minimizar la necesidad de tener que dejar ir a valiosos miembros del equipo. En ciertos casos y en muchas industrias, esto último es inevitable, pero es importante primero tratar de controlar u optimizar los costos tanto como sea posible.

En este blogpost, compartiremos algunas ideas para reducir los Costos asociados a las Pruebas que hemos intentado y probado directamente en Abstracta con excelentes resultados.

Optimizar costos de las pruebas de software

Empezar lo antes posible

De la misma manera que es importante hacer tests para la detección temprana de una enfermedad, es importante probar su software anticipadamente, antes de que los problemas pequeños comiencen a convertirse en problemas mucho más grandes (y costosos). Al aplicar el enfoque Shift Left Testing, las pruebas se vuelven más eficientes porque la curva de aprendizaje de un tester  puede ser rastreada durante todo el proceso. Hacer preguntas cuanto antes, como “¿Qué pasaría si …” ayudará a mejorar los requisitos y a reducir la cantidad de retrabajo.

El enfoque Shift Left Testing se refiere a mover las actividades de testing más hacia el inicio del proceso de desarrollo

Cuidado con cuánto se documentan las pruebas

Tenga cuidado con la cantidad de pruebas documentadas (los requisitos y otras cosas también), busque un buen equilibrio. Más documentación ayuda a nuevas personas a aprender más rápido, ayuda a clarificar, a tener una visión simple de lo que está bien o mal.

Por otro lado, hace que el proceso sea menos flexible, agregando costos de mantenimiento para conservar esa documentación actualizada con requisitos que cambian continuamente. Trate de encontrar el balance adecuado.

Aplicar risk-based testing para todo

Mirando el riesgo, vemos que se compone de dos factores: la probabilidad de que algo suceda y el nivel de impacto comercial (negativo) que tendría. Risk-based testing se trata de priorizar, priorizar, priorizar. Aplicando el Principio de Pareto, ¿cuál es el 20% de los casos de prueba que mitigarían el 80% del riesgo?

Una posible forma de instrumentar esto es con la técnica conocida como MoSCoW, aquí puede ver una dinámica para aprenderla y hacer un análisis con el equipo.

Obtener información de producción para mejorar el testing

Si bien es imperativo el Shift Left Testing, a su vez es muy importante el Shift Right Testing: el objetivo de este enfoque es no dejar que sus usuarios sean los únicos que prueben su software en producción.

Una fuente de información útil sobre el comportamiento real de los usuarios es Google Analytics, por ejemplo, si desea visualizar qué áreas de su sitio web de e-commerce tienen más tráfico (en consecuencia, debería probarse más rigurosamente). También puede consultar en esta herramienta cuáles son los dispositivos, las versiones de macOS o los navegadores de la mayoría de los usuarios que acceden a su sitio, y de esta forma simular los comportamientos en sus pruebas.

Otro ejemplo de obtención de información de producción es investigar dentro de su herramienta de monitoreo de desempeño (por ejemplo, con su herramienta APM favorita) para comprender cómo cada conjunto de cambios en el código impacta en el mismo.

En resumen, el propósito del Shift Right Testing es probar de la forma más parecida al uso que le da el usuario. Hay que considerar la posibilidad de también testear en producción, pues de lo contrario, el usuario lo va a probar en ese ambiente. 

Recientemente hice un webinar sobre estrategias de pruebas en donde hablé sobre lo mencionado anteriormente. Mire lo más destacado aquí.

Optimizar costos de automatización

Enfocar las pruebas automatizadas a nivel de API, más que a nivel de UI

La automatización de pruebas, cuando se aplica con sensatez, puede proporcionar un gran Retorno sobre la Inversión (RSI), pese a la inversión inicial requerida.

ROI de la Automatización de Pruebas Vs. Pruebas Manuales

Debe decidir en qué nivel pondrá más esfuerzos de Automatización, pensando en las diferentes capas de la aplicación. En este contexto, los testers podemos automatizar a nivel de UI o API.

Para comprender más acerca de los pros y los contras de las opciones mencionadas, consulte este artículo en el que se explica en detalle en qué consiste la pirámide de automatización de pruebas.

Pirámide de Automatización de Pruebas de Mike Cohn

Una posible estrategia es comenzar automatizando el flujo principal de la funcionalidad o la historia de usuario (user story) que desea probar a nivel de Interfaz de usuario, con los datos más comunes. Luego analice qué endpoints se invocan en ese flujo. Agregue pruebas automatizadas a nivel de API para cada endpoint y expanda allí la cobertura con diferentes datos de prueba, haciendo interesantes combinaciones. Estas pruebas son más rápidas de ejecutar y más robustas (requieren menos mantenimiento). Además, hay varias herramientas gratuitas para ejecutarlas, como Postman y SoapUI.

Para saber cuándo automatizar pruebas de software visite este post o conozca aquí las estrategias de automatización en distintos niveles.

Considerar migrar a herramientas open source

Si paga licencias de herramientas de testing muy caras, podría considerar las de open source. Estas herramientas ofrecen un alto nivel de flexibilidad, y han alcanzado una madurez que en la actualidad existe mucha más confianza en ellas.

Con la importante expansión de la comunidad open source, miles de contribuyentes están compartiendo sus extensiones y soluciones con el mundo, haciendo la vida de todos mucho más fácil.

Es importante tener en cuenta que en muchos casos, esto implica una gran inversión inicial para migrar de una herramienta a otra lo que se configuró, pero a largo plazo, generará ahorros de costos. Hay otros casos en los que la migración se puede realizar automáticamente.

Por ejemplo, si hoy cuenta con LoadRunner para pruebas de performance, puede migrar fácilmente a JMeter con la ayuda de este convertidor de BlazeMeter que desde mi punto de vista, es una herramienta mucho mejor.

Optimizar costos de infraestructura y herramientas

Revisar licencias y suscripciones

En tiempos de abundancia, no nos interesan tanto las inversiones, especialmente las pequeñas. Cuando ve una herramienta, una membresía, una suscripción a un servicio o revista simplemente se registra, sin hacer preguntas porque está por debajo de un cierto umbral. Cuando está en crisis, es necesario revisar y eliminar lo que no es esencial, así podrá optimizar los costos de las pruebas de software.

Las herramientas tienen muchas funcionalidades y planes de suscripción de acuerdo a las necesidades que tengamos. Analice el uso real de las herramientas por las que está pagando y tal vez, cámbiese a un plan que satisfaga mejor sus necesidades reales. Por ejemplo, verifique qué funcionalidades usa habitualmente y cuáles no, para ver si hay una suscripción más barata que cubra la mayoría de las funciones que realmente necesita.

Revisar el uso de máquinas virtuales en la nube

Es posible que tenga máquinas virtuales en la nube (como instancias de Amazon, Azure, etc.) que está utilizando y que en realidad podrían optimizarse de alguna manera (tener una sola instancia para dos sistemas de poco uso, etc. o pagando por las que usa solo unas pocas veces al mes).

Optimizar costos de capacitaciones

Fomentar el intercambio interno de conocimientos

En Abstracta, somos muy conscientes de cómo entrenamos a nuestros testers. Para nosotros, es una parte vital de nuestras operaciones, ya que trabajamos constantemente para ayudar a nuestros testers, especialmente a los juniors, a crecer (ya que los roles de testing senior pueden ser difíciles de cumplir). Tendemos a contratar más por potencial y actitud, contamos con un muy buen entrenamiento. Muchos de nosotros tenemos experiencia en la enseñanza de cursos universitarios e incluso hemos lanzado nuestra plataforma de aprendizaje en línea: Abstracta Academy.

Cuando se trata de costosos paquetes de capacitación y workshops de proveedores externos, generalmente nos registramos solo para temas muy específicos y principalmente para aquellos de nosotros que poseemos roles senior dentro de la compañía.

La razón de esto es que nuestros líderes técnicos y testers seniors tendrán la mejor oportunidad de aprovechar al máximo estos entrenamientos y luego podrán transmitir lo que aprendieron a los demás.

En ese sentido, y siguiendo nuestra creencia de que los juniors tienen mucho que aprender del resto del equipo, nuestro objetivo es que su entrenamiento provenga directamente de nuestros séniores.

Esto nos ayuda a reducir los costos de capacitación externa y también brinda a los seniors la oportunidad de desarrollar habilidades importantes tales como: comunicación, liderazgo, hablar en público, etc.

Considerar plataformas online de capacitaciones

Como mencioné, hicimos todo lo posible y creamos nuestra propia plataforma online, pero hay muchos cursos de desarrollo y pruebas de software que se ofrecen a precios asequibles en Udemy, Codea, etc. Además, hay excelentes cursos absolutamente gratuitos, como los de Test Automation University y Blazemeter University.

Asistir a webinars y conferencias online

Al igual que en el punto anterior, ¡internet es su amigo! Especialmente, desde que que las conferencias fueron canceladas, y también las reuniones presenciales, los webinars y las conferencias virtuales son cada vez más frecuentes, y en la mayoría de los casos, gratuitas.

En general, existen muchas opciones buenas y gratuitas: puede acceder a las grabaciones de nuestros webinars en el Canal de YouTube, o explorar otros canales de conferencias de testing de diversos organizadores.

Asimismo, revisar los pasados Meetups de la Comunidad de QA & Testing Chile o los recientes webinars organizados por Abstracta Tech Talks.

Optimizar costos de procesos

Las ineficiencias en los procesos conducen al desperdicio, una pérdida de tiempo y dinero. Aquí hay algunas maneras para mejorar sus procesos:

  • Busque las partes del proceso donde se originan los errores. Los errores son los que generan trabajo y eso aumenta los costos.
  • Analice las partes del proceso de desarrollo que generan esperas o cuellos de botella, dependencias, acumulación innecesaria, etc. 
  • Analice los canales de comunicación y los problemas que puedan estar ocurriendo (siempre hay problemas de comunicación) para encontrar formas de mejorar y aclarar, evitando retrabajo, errores, etc.
  • Adopte un enfoque ágil. Esto implica evitar la planificación de grandes ciclos de desarrollo sin obtener feedback. Apunte a iteraciones cortas, verifique con frecuencia con usuarios o clientes si se están cumpliendo las expectativas.
  • Analice en cada iteración qué tan bien ha estado trabajando el equipo, con el objetivo de realizar análisis en retrospectiva que permitan una mejora futura.
  • Realice un análisis causal de los errores recurrentes, no solo para trabajar en la solución de estos problemas, sino también para comprender el “por qué” detrás de ellos para evitarlos en el futuro.

Le puede interesar: Actividad en equipo para aplicar principios LEAN a Scrum, en búsqueda de optimizaciones.

Si es necesario, tercerizar las Pruebas de Software

El outsourcing es ideal para las empresas que necesitan centrar su atención en sus competencias distintivas. Si su equipo no es muy maduro en sus actividades de testing o en el programa de Calidad de Software, y sus esfuerzos no están alcanzando los resultados deseados, es aconsejable buscar ayuda para tercerizar las actividades de QA y testing en lugar de prolongar el tiempo invertido en procesos ineficientes e ineficaces.

Cuando no tiene suficientes recursos o habilidades dentro de la empresa, la mejor opción puede ser contratar directamente a un especialista de testing de software para disminuir los costos generales, pues ese socio de outsourcing siempre estará listo para comenzar a trabajar y tendrá la capacidad de aumentar o disminuir las pruebas de manera flexible y sin inconvenientes.

Además, se puede extraer valor agregado del outsourcing a medida que se beneficia de la experiencia colectiva de toda la empresa, no solo de los testers que están dedicados a su proyecto.

Servicios de Outsourcing de Testing

Por último, los servicios de Outsourcing de Pruebas de Software pueden ayudarlo a mantener la continuidad del negocio. Cuando un tester del equipo deja su empresa, o si es la única persona a cargo de las pruebas y se toma unas vacaciones, es posible que tenga problemas. Cuando encuentre al profesional para desempeñar el cargo, debe ingresarlo desde cero a todo el proceso de capacitación. Mediante la tercerización, el proveedor de servicios de Testing tendrá a varios miembros del equipo preparados y disponibles para sumar al proyecto cuando sea necesario, se encargará de todo y capacitará a diferentes testers para usted. 

Por supuesto, hablamos desde nuestra experiencia cuando se trata de tercerización de las Pruebas, pues es para lo que nuestro equipo de más de 100 testers están comprometidos. En Abstracta, conectamos organizaciones impulsadas por la calidad con equipos de testing dedicados que priorizan su éxito. Si está interesado en aprender más, no dude en contactarnos aquí o escribirnos a [email protected].

___

Estos son solo algunas de los puntos más importantes que se nos ocurren con respecto a cómo optimizar los Costos de las Pruebas de Software. Antes de realizar alguno de los cambios mencionados, asegúrese de transmitir las medidas a su equipo para que todos participen.

Si tuviera que pensar en cómo tener un mayor impacto con sus pruebas con menos recursos, ¿cómo lo haría? ¡Háganoslo saber!


Contenido relacionado

Migrar al testing open source

¿Cómo revisar la estrategia de pruebas de software?