Diferentes maneras de reducir los costos asociados a testing de manera eficiente, sin afectar la calidad.
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, durante el ciclo de vida del desarrollo.
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 del software tanto como sea posible.
En este post, compartiremos algunas ideas para reducir los costos asociados a las pruebas que hemos intentado y probado directamente en Abstracta con excelentes resultados.
Optimizar los 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.
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 de desarrollo de software 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.
Optimizar los 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 de la inversión (ROI), pese a la inversión inicial requerida.
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.
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.
Considerar migrar a herramientas open source
Si paga licencias de herramientas de testing muy costosas, 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 los 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 los 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 organizados por Abstracta Tech Talks, desde Uruguay.
Optimizar los costos de los procesos
Las ineficiencias en los procesos asociados al desarrollo de un proyecto de software conducen a 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 de software 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 esta actividad en equipo para aplicar principios LEAN a Scrum, en búsqueda de optimizaciones.
Buscar un Partner experto de Software Testing y Calidad
Asociarse con un experto es ideal para las empresas que necesitan centrar su atención en otras áreas críticas del negocio. Si su equipo no es muy maduro en sus actividades de testing Y calidad de software, y sus esfuerzos no están alcanzando los resultados deseados, es aconsejable buscar un partner experto que se encargue de esta gestión, en lugar de prolongar el tiempo invertido en procesos ineficientes e ineficaces.
→ Le puede interesar: Outsourcing de Testing de Software: qué hacer y qué evitar cuando se busca un partner
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 partner 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 de esta relación 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 end-to-end de Testing y Calidad
Por último, contar con un experto externo para las actividades de testing y calidad puede ayudarle 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 probable que tenga problemas.
Cuando encuentre al profesional para desempeñar el cargo, debe ingresarlo desde cero a todo el proceso de capacitación. A diferencia de contar con varios miembros del equipo preparados y disponibles para sumar al proyecto cuando sea necesario. Un partner experto se encarga de todo y capacitará a diferentes testers para su compañía.
Por supuesto que hablamos desde nuestra experiencia cuando se trata de un partner de calidad. Contamos con más de 10 años de experiencia en trabajo remoto con las mejores compañías de Latinoamérica y de mercados exigentes como EE. UU. Europa y Japón.
En Abstracta, conectamos organizaciones impulsadas por la calidad con equipos de testing comprometidos que priorizan su éxito. ¡Agende aquí una consultoría gratuita y personalizada de 30 minutos con nuestros expertos!
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!
Otros contenidos relacionados
Cómo Shift Left Testing puede impulsar la adopción de DevOps
3 elementos esenciales para lanzar Software rápidamente, sin afectar la Calidad
Testing de Software: ¿Cómo impacta en la experiencia digital del usuario?
Etiquetas
Posts Relacionados
Ciberseguridad: nuevas tecnologías, nuevas vulnerabilidades
Las disrupciones a nivel global empujan la aceleración de la transformación digital y la necesidad de repensar el sector de la ciberseguridad. ¿Cuál es el rol del testing de software? ¿Qué es el Pentesting? ¡Descúbrelo aquí!
Guía de testing continuo: alcanza el nivel más alto de madurez
¿Cómo reducir el costo del desarrollo de software y minimizar la ineficiencia, los riesgos y time to market? El desarrollo ágil, junto con las prácticas que promueve, —tales como integración continua, testing continuo y entrega continua— son claves para seguir siendo competitivo en el panorama tecnológico actual.