¿Cómo Optimizar Costos de Testing?

Me resultó relevante escribir sobre esto en estos días de COVID-19, ya que veo que muchas empresas están mandando personal al seguro de paro, recortando por acá y por allá, y por supuesto, el testing es de las cosas que se suele recortar primero. Pero cuidado, pan para hoy hambre para mañana. En este post quiero compartir algunas ideas de cómo optimizar costos de testing sin comprometer la calidad del sistema o producto que se desarrolla. Voy a compartir algunas de las ideas sobre las que tenemos experiencia en Abstracta, pero te animo a que compartas si tenés más ideas o has puesto a funcionar otras optimizaciones.

Yo creo que en Uruguay y en general en Latinoamérica, tenemos una ventaja especial para hacer estos análisis. Tengo una amiga que es doctora en Estados Unidos, que hizo una pasantía en un hospital de Uruguay. Fue mind-blowing para ella la experiencia, porque nosotros “hacemos de tripas corazones”, nos resolvemos con lo que hay, “la atamos con alambre”. Ella venía acostumbrada de un contexto donde sea lo que sea que tenga el paciente, se cuenta con recursos para hacer diferentes estudios. El tema es que creo que en Latinoamérica estamos acostumbrados a vivir en crisis, a manejarnos con pocos recursos. Eso que es parte de nuestra forma de ser es algo que creo que podemos aprovechar como una fortaleza. 

Veamos qué podemos hacer:

Optimizar Costos de Testing

  • Empezar lo antes posible. Ya hablé en más detalle sobre la idea de shift left testing acá, pero básicamente mientras antes se involucre al tester más eficiente será el proceso general. Esto es porque se acompasa la curva de aprendizaje del tester al proceso, se adelantan preguntas de “¿qué pasa si…?” que hacen que se mejoren los requerimientos y se reduzca el retrabajo. 
  • Ojo con cuánto se documentan las pruebas (los requerimientos y demás), buscar un buen balance. Más documentación ayuda a que nuevas personas puedan aprender más rápido, ayuda a clarificar, a discutir sobre blanco y negro. Por otra parte hace que el proceso sea menos flexible, agrega costos de mantenimiento de esa documentación. Apuntar a buscar el punto justo. Podrías comenzar revisando lo que te compartí acá sobre mind-maps.
  • Aplicar risk-based testing para todo. Una posible forma de instrumentar esto es con la técnica conocida como MoSCoW, acá te compartí una dinámica para aprenderla y hacer un análisis con el equipo.
  • Obtener información de producción para mejorar el testing. Esto es parte del shift right testing, para básicamente probar de la forma más parecida al uso que le da el usuario. Considerar la posibilidad de también probar en producción, porque si no probas vos el usuario lo va a probar en ese ambiente.  Hablé de todo esto en mi charla sobre estrategia de pruebas que podés ver acá.

Optimizar Costos de Automation 

  • Enfocar las pruebas automatizadas a nivel de API más que a nivel de UI. Una posible estrategia es comenzar automatizando el flujo principal de la funcionalidad o user story a nivel de UI, con los datos más comunes. Luego, analizar qué endpoints son invocados en ese flujo. Agregar pruebas automatizadas a nivel de API para cada endpoint y ahí ampliar el cubrimiento a nivel de datos, realizando combinaciones interesantes. Estas pruebas son más rápidas de hacer, más robustas (menos mantenimiento) y ejecutan más rápido. Además, hay muy buenas herramientas gratuitas para hacerlas. Podés leer más de las estrategias de automatización en distintos niveles en este post.
  • Considerar migrar a herramientas opensource en caso de estar pagando licencias de herramientas muy caras. Esto requiere una inversión inicial grande en migrar lo que ya existe en una herramienta a la otra, pero a largo plazo genera ahorros. Por ejemplo, si hoy tenés LoadRunner para pruebas de performance te podés migrar fácilmente a JMeter o Gatling que, desde mi punto de vista, son mucho mejores.

Optimizar Costos de Infraestructura y Herramientas

  • Analizar el uso real que se le está haciendo a las herramientas y ajustar a la licencia que cubra las necesidades reales. Por ejemplo, revisar si el plan de Saucelabs, CrossBrowserTesting o BrowserStack está acorde a lo usado, o se está pagando por una subscripción más cara de la necesaria. 
  • Revisar el uso de máquinas virtuales en el Cloud (como instancias de Amazon, Azure, etc.) que quizá no se les está utilizando, o que se podrían optimizar de alguna manera (teniendo una sola instancia para tener dos sistemas de poco uso, etc.). 

Optimizar Costos de Capacitaciones

  • En Abstracta, además de tener nuestro propio sitio de capacitaciones llamado Abstracta Academy, lo que generalmente hacemos es contar con empresas externas para cosas muy concretas, especialmente para los roles más senior. Por ejemplo, nos apoyamos en Peregrinus para todo lo relacionado a metodologías ágiles. Los miembros del equipo más senior son los que pueden absorber de mejor manera el conocimiento y volcarlo a la empresa. Bajo la misma idea, y bajo la premisa que los juniors tienen mucho para aprender del resto del equipo con más experiencia, apuntamos a que ellos se formen internamente. Esto también da la oportunidad a desarrollar otro tipo de skills en los más seniors, tanto de comunicación, liderazgo, oratoria, etc. Esto promueve también una cultura de compartir conocimiento. 
  • Considerar plataformas online. Existen muchos cursos a precios muy accesibles en Udemy, Codea, etc. Además, hay cursos excelentes absolutamente gratis, como los de Test Automation University
  • Considerar webinars y conferencias online. Existen muchas opciones muy buenas y gratuitas como las ofrecidas en Abstracta Tech Talks. No tienen por qué ser charlas o eventos en vivo, si buscas podéis encontrar mucho contenido de charlas que ya pasaron. Te recomiendo por ejemplo mirar el canal de youtube de Abstracta o el de TestingUY

Optimizar Costos de Procesos

  • Buscar partes del proceso donde se originan los errores. Los errores son los que generan retrabajo y eso aumenta los costos. 
  • Analizar partes del proceso que generen esperas, dependencias, acumulación innecesaria, etc. 
  • Analizar los canales de comunicación y los problemas que puedan estar ocurriendo (siempre hay problemas de comunicación) para buscar formas de mejorar y clarificar, evitando otra vez retrabajo, errores, etc. 
  • Tomar un enfoque ágil. Evitar planificar grandes ciclos de desarrollo sin obtener feedback. Apuntar a iteraciones cortas revisando la frecuentemente con los usuarios o clientes si se cumplen las expectativas. Analizar en cada iteración con el equipo cómo se viene trabajando, apuntando a hacer análisis en retrospectiva que nos permitan mejorar. 
  • Acá te dejo un post con una actividad para hacer en equipo y aplicar los principios LEAN a Scrum en búsqueda de optimizaciones.

Cerrando

Si tuvieras que pensar en cómo hacer de tripas corazones, en cómo aprovechar al máximo los recursos y la capacidad actual de tu equipo, ¿qué más se te ocurre para optimizar costos de testing?

2 thoughts on “¿Cómo Optimizar Costos de Testing?

  1. Bruno says:

    Muy bueno el artículo con la información respecto a la optimización del testing. Lo que considero más importante, sacado del artículo es que mantener al tester al tanto del avance del software y con el equipo es clave para mantener el testing lo más agil y eficiente posible.

    1. Federico says:

      Completamente de acuerdo Bruno! gracias por el comentario.
      Creo que aplica con cada integrante del equipo, todos deberían estar al tanto para estar alineados avanzando a un mismo objetivo!

Leave a Reply

Your email address will not be published. Required fields are marked *