¿Es posible implementar procesos continuos de prueba? ¿De qué depende? – Parte I

Todo responsable de un área de testing, y hasta nosotros mismos, sabemos que podríamos aplicar un procedimiento de prueba mucho más eficiente y eficaz. Sin embargo, a veces el contexto en el que nos encontramos no nos permite proponer iniciativas, como podría ser llevar a cabo un proyecto piloto de automatización de pruebas, para después pensar en aplicar un esquema de continuidad.

En éste punto uno podría ponerse a pensar qué tipo de automatización aplicar primero: ¿automatización de pruebas unitarias y luego automatización de pruebas funcionales? Te la dejo picando…

Volviendo a la pregunta central, implantar un proceso de estas características implica evaluar si nuestra estructura esta preparada para ello, y justamente en éste artículo estaré intentando tratar el tema.

automatización

¿Por dónde comenzar?

Muchos de nosotros nos enteramos de las iniciativas que se están llevando a cabo en otras empresas en lo que respecta a proyectos de testing automatizados, e inmediatamente nos viene la pregunta ¿Porqué nosotros no? Partamos de la base en que debemos mostrar y demostrar resultados en el corto/mediano plazo, razón por lo cual hay que pensar en manejar dos conceptos a través del modelo que querramos implementar y que el mismo pueda escalar.

Eficiencia y eficacia

Estos dos factores (eficiencia y eficacia) hay que gestionarlos (para medir y seguir) individual y en forma conjunta, para cada una de las instancias del modelo a implementar e implementado (dos momentos distintos), lógicamente por medio de la o las herramientas que se hayan instalado y configurado. Fundamental, no olvidarse de manejar las habilidades blandas como duras.

¿Recordamos el alcance conceptual?

Prefiero aquí stopear un momento para refrescar el concepto de estos factores y de paso, permitir que reflexiones sobre tu contexto actual y al que querés llegar.

Este ejercicio es importante porque suelen confundirse estos aspectos e impedir o dificultar el tratamiento de los indicadores y métricas posteriores.

Ponete a pensar que además de administrar la parte operativa del modelo (automatización de pruebas y gestión de recursos), habrá que generar un dashboard mediante el cual a través de indicadores podamos mostrar y demostrar la evolución que va teniendo el modelo en ejecución.

Voy a lo básico entonces.

Eficiencia

eficiencia

Se entiende por eficiencia a la relación entre los recursos que usamos en nuestro proyecto y los resultados que hemos conseguido con los mismos.
Seremos más eficientes cuando utilizamos menos recursos para lograr un mismo objetivo.
O por el contrario, veámoslo desde otro punto de vista, cuando logramos más objetivos con los mismos o menos recursos.

¿Cómo conseguirlo?

  • enfocándonos en el proceso que lleva a un objetivo.
  • midiendo los resultados y los recursos usados vs las metas propuestas y los costos esperados.
  • preocupándonos en el buen uso de recursos.

Es cuantificable.

Para poder medirla, hay que tener en cuenta su costado «cualificable» ´p.e. las cualidades del producto) además del cuantificable (materiales, costo o tiempo empleado).

¿Cómo medirla?

  • multiplicando el costo consumido por el tiempo real.
  • dividiendo el producto resultante con el resultado obtenido.
  • multiplicando el costo esperado por el tiempo esperado.
  • dividiendo el producto resultante por el resultado esperado.
  • dividiendo ambos coeficientes, y analizando posteriormente su índice.

Es decir:

  • Resultado obtenido / (costo incurrido x tiempo de trabajo).
  • Resultado esperado / (costo esperado x tiempo esperado).
  • Se dividen ambos coeficientes y el resultado muestra el nivel de eficiencia.
  • Entre mayor sea el índice, más eficiente ha sido el trabajo o producción.

Te propongo aquí el primer ejercicio.

  • ¿Podrías pensar en algún recurso que utilices en tu proyecto actual y el resultado que que obtuviste?
  • A modo de ejemplo, ¿Te parece que pensemos en cantidad de casos de prueba diseñados versus tiempo consumido? ¿Cómo se lograría aumentar la eficiencia?

Sigo repasando conceptos.

Eficacia

eficacia

La eficacia es la capacidad de lograr un objetivo esperado.

¿Cómo conseguirlo?

  • enfocándonos en los objetivos.
  • midiendo los resultados esperados vs los resultados obtenidos.
  • utilizando recursos para alcanzar metas.

Es cuantificable.

La fórmula básica para medirla es:
(resultado obtenido x 100) / resultado esperado.

Primera conclusión:

Sin ir demasiado al detalle de la gestión de ambos, podemos cuantificarlos y aquí es donde interviene la herramienta que hayamos implementado, o querramos implementar.
En definitiva, la herramienta que usemos debe poder facilitarnos la gestión de éstos indicadores de una manera sencilla y práctica, con el menor esfuerzo posible y a partir de la carga de datos que hagan los miembros del equipo durante el transcurso del proyecto.

Retomando la idea central.

Sabemos, o por lo menos nos damos cuenta, que podemos hacer un mejor testing -para decirlo claramente-, entonces…¿Qué nos lo impide?

Puede ser que nuestra casuística se encuentre desactualizada y no tengamos la forma de poder ir actualizándola conforme vamos avanzando en nuestros proyectos.
Puede ser que vayamos «ignorando» éste aspecto porque nos decimos: «el proyecto sigue adelante y pasamos a producción igual».
También puede ocurrir que se ignoren como consecuencia de resultados inconsistentes o demasiados complejos para su mantenimiento o mejora.
Seguramente habrás podido recordar otras razones que aquí no he mencionado.
Puede ocurrir que no tengamos aún un dimensionamiento claro de la infra que debemos tener y del costo de inversión inicial y costos fijos/variables posteriores para el mantenimiento y escalamiento del modelo.

¿El modelo de «automatización de prueba» nos ofrece solución?

Antes de intentar llegar a una respuesta, consideraría los siguientes puntos:

  • Hay que tener tiempo para hacerlo bien.
  • Hay que tener recursos para comprometerlos.
  • Varias son las industrias que han sufrido (y siguen sufriendo) una serie de fallos y que requieren pruebas.
  • No invertir en este tipo de pruebas es un riesgo muy grande para no considerarlo.
  • Teniendo entornos para realzar pruebas automatizadas, no garantizan un 100% tener la «bala de plata».
  • Hay que tener visibilidad de los costos iniciales, fijos y variables.

¿En qué nos ayuda evaluar los factores de eficiencia y eficacia?

El análisis de éstas dos variables, nos permite evaluar el impacto y así poder conocer:

  • impacto conseguido (eficacia),
  • impacto generado versus costo de la acción (eficiencia),
  • alternativas más eficaces y eficientes para lograr mismo impacto.

¿Tenés recursos humanos en tu equipo?

  • ¿El equipo de testers de tu empresa tienen el conocimiento necesario para escribir scripts que automatizan pruebas?
  • ¿Estás pensando en contratar recursos humanos que tengan experiencia en el área?
  • ¿Es rentable contratar a proveedores (consultores y/o empresas fque se dedican a éste tema?
  • ¿Cuán complejo es lograr tener un equipo que desarrolle conjuntos de pruebas automatizadas?
  • ¿Cuánto tiempo hay que asignar al equipo para que pueda adquirir el conocimiento necesario para el dominio de automatización de pruebas?
  • ¿Cuán difícil es retener en el equipo/empresa a testers que han adquirido el conocimiento y experiencia?

Respecto del financiamiento interno

  • ¿Cuáles son los recursos internos que se requieren para implementar adecuadamente un entorno para realizar pruebas automatizadas?
  • ¿Cuál es la inversión inicial que merecen ésto tipo de proyecto?

Ejemplos y fórmulas

Bajemos un poco a las profundidades del tema, para lo cual te planteo algunos ejemplos y fórmulas para el cálculo:

Eficiencia en pruebas de software:

  • ¿Cuántos recursos humanos y técnicos se reservaron para su consumo?, ¿Cuántos de estos recursos se utilizaron?
  • La eficiencia en las pruebas de software
    • es el número de casos de prueba ejecutados dividido por unidad de tiempo (generalmente por hora).
    • evalúa la cantidad de código y recursos de prueba requeridos por un programa, para realizar una función particular.

Fórmula para calcular la eficiencia de la prueba de software:

Eficiencia de prueba = [(número de defectos resueltos / número total de defectos reportados)] * 100

Efectividad de prueba de software:

Hay que entenderlo como algo interno de la organización. Es decir, hay que interpretarlo como qué tan eficientemente se utilizaron los recursos disponibles (tiempo, hardware, personal, experiencia, etc.) para crear el producto de Software.

  • ¿Cuánto satisface el sistema los requisitos del cliente?
  • ¿Qué tan bien el sistema logra alcanzar las especificaciones del cliente? es decir, si el producto final proporciona la solución al problema del cliente de manera efectiva.
  • ¿Cuánto esfuerzo se consume para desarrollar el producto?

Aquí hay que tener en claro que en éste factor se evalúa el efecto del entorno de prueba en la aplicación.

Fórmulas para calcular:

  • Efectividad de la prueba de software = Número de defectos encontrados dividido por el número de casos de prueba ejecutados.
  • Efectividad de la prueba de software = [(número total de defectos inyectados + número total de defectos encontrados) / (número total de defectos escapados)] * 100
  • Efectividad de la prueba = Pérdida debido a problemas / Recursos totales procesados ​​por el sistema

TO BE CONTINUED … Parte II

Cualquier comentario o sugerencia o colaboración que quieras ofrecerme, contactate conmigo privado en LinkedIn.

Gus Terrera

Apasionado por el agile testing y la ia.