Estuve recordando una conversación que tuvimos con Michael Bolton cuando estuvo en Uruguay hace un par de años para el TestingUy, donde él ponía una analogía entre testing y filtrar agua, tanto sucia como limpia.
Hay 4 situaciones con resultados bien diferentes en base a lo que combinemos.
- Si filtramos agua limpia con un buen filtro entonces tenemos agua limpia.
- Si filtramos agua limpia con un mal filtro entonces tenemos agua limpia.
- Si filtramos agua sucia con un buen filtro entonces tenemos agua limpia.
- Si filtramos agua sucia con un mal filtro entonces tenemos agua sucia.
Si lo llevamos al testing, tenemos que:
- Si tenemos un buen producto enviado a testing y le sumamos un buen testing entonces tenemos un buen producto para el cliente
- Si el producto es bueno y el testing malo, el usuario recibe un buen producto de todas formas
- Si el producto es malo, con un buen testing podemos hacer que el usuario reciba un producto bueno
- Pero si el producto es malo y le sumamos un mal testing, es muy probable que el usuario reciba un producto muy malo.
Esto también se puede ver como en el método científico, no podemos probar una teoría, sino que podemos decir que no la pudimos refutar. ¿Podemos decir que el agua está limpia? ¿O solo podemos afirmar que con nuestro filtro no encontramos ninguna partícula?
Algo más que podemos hacer entonces, es analizar la calidad de nuestro filtro, o sea, analizar la calidad de nuestro testing para intentar mejorarla.
Me gustó la analogía.
En el agua, debemos usar diferentes filtros para eliminar diferentes impurezas. En el testing, es algo parecido. El testeo automatizado puede detectar ciertas cosas, el manual o exploratorio otras bien diferentes, el de performance o carga otras, etc. Conviene pasarlas por varios filtros para lograr mejores resultados. Y pasarla 100 veces por el mismo filtro, no deja el agua mas pura.
Cuando hay algún cambio en el suministro de agua, tal vez tengamos que pensar algún filtro nuevo. Es similar a cuando hacemos actualizamos algún componente de nuestro software para que use una versión mas actualizada de una biblioteca o se usa una nueva versión de generador o compilador.
Una causa de los errores, puede estar en la infraestructura de distribución, que aplica también al software.
Imponente estos aportes Enrique! 🙂
Saludos!
Totalmente de acuerdo! Esa analogía es perfecta y tiene muchísimo sentido. Es una comparación muy sencilla de entender. Un genio Michael Bolton!
Saludos!