jueves, 6 de noviembre de 2014

Disipando Conceptos Erróneos - "Vamos a automatizar todo y deshacernos de todos nuestros Testers"

Hoy les traigo un post de Dan Ashby, un Analista de Testing de Londres.
Este es el 5to post de una serie, y como se trata de automatización y me estoy metiendo de lleno en estos temas, me pareció muy interesante traducirlo. Espero que les guste.



Oigo esto todo el tiempo. Incluso de gente de muy alto rango. El último de ellos fue de un gerente de desarrollo, preguntando por qué estamos "todavía necesitando tener testers probando el software, si estamos apuntando a  automatizar el 100% de todo"...

En primer lugar, la verdad es muy simple: sólo se puede automatizar lo que sabe y esperas.

Cuando pensamos acerca de los "órdenes de ignorancia", entonces se hace más claro de por qué no es posible automatizar todo. Para aquellos que no están familiarizados con las órdenes de la ignorancia, permítanme explicarlos...

Hay 5 órdenes de ignorancia:


  • El orden 0 de la ignorancia es la falta de ignorancia. Esto es esencialmente conocimiento. El conocimiento que se puede demostrar en una forma tangible. Por ejemplo, yo estoy bien informado sobre el hecho de que es imposible automatizar todo.
  • El primer orden de la ignorancia es la falta de conocimiento. Esto es cuando no sabes algo y sabes que no sabes eso. Un ejemplo de esto sería que no sé cómo utilizar la herramienta  OWASP Zed Attack Proxy tool, en todo su potencial. Soy consciente de que yo no sé mucho acerca de esta herramienta específica y puedo elegir entre aprender o continuar el uso de diferentes herramientas como Fiddler o Burp Suite.
  • El segundo orden de la ignorancia es la falta de conciencia. Esto es cuando no sabes que no sabes algo. Así que aquí es donde yo no soy más que un ignorante sobre algo, pero yo soy ignorante al hecho de que soy ignorante respecto a eso. Obviamente no se puede dar un buen ejemplo de esto, ya que eres ignorante de ello. :)
  • El tercer orden de la ignorancia es la falta de proceso del descubrimiento. Así que aquí es donde no estás enterado de ninguna forma de obtener el conocimiento que no sabes que no sabes algo. Esto significa que no se puede aprender sobre las cosas que no sabes, por que no sabes (es decir no puedes tomar conciencia de las cosas que son del segundo orden ignorancia para convertirlas en cosas del primer para la ignorancia).
  • El cuarto orden de la ignorancia es un poco descarado. Se trata básicamente de no estar al tanto de los 5 órdenes de la ignorancia. :)


Entonces, al relacionarse esto a la automatización... Puedes sólo automatizar realmente las cosas que están dentro de el orden 0 de ignorancia, donde se tiene el conocimiento y la expectativa de cómo debe funcionar la funcionalidad, por lo tanto, escribes una afirmación que comprueba la salida y devuelve un "pass" o "fail", en cuanto a si la salida cumple esa expectativa inicial.

Por otro lado, cualquier cosa que se ajuste dentro del resto de los órdenes de la ignorancia (en concreto el primer y segundo orden de la ignorancia), será imposible de automatizar, ya que no tienes conocimientos previos sobre cómo funcionará la funcionalidad o función. No tienes una expectativa o no eres consciente de ciertos escenarios o variables que rodean la funcionalidad con el fin de ser capaz de formar una expectativa que sea capaz de afirmar ese chequeo.

El Pensamiento Lateral y Testing Exploratorio ayudan en la transformación de los "desconocidos" en "conocidos", también ayudan en la transformación de los "desconocidos-desconocidos" en "incógnitas conocidas". Si bien no es posible hacerlo únicamente manteniendo conversaciones previas, las conversaciones ayudan. La mejor manera de aprender adecuadamente acerca de cómo funciona realmente un sistema, es de aprender del sistema a medida que investigamos. Por lo tanto estamos aprendiendo continuamente, diseñando nuestras pruebas (pensando nuevas preguntas para hacer al software) y haciendo nuestras pruebas a medida que aprendemos más.

Un segundo punto que me gustaría resaltar es que, incluso para las cosas de orden 0 (las cosas que usted sabe, ni pensar en las cosas que usted no sabe en este momento), es:  va a ser realmente de valor en la lucha para automatizar todo en lo que usted tiene una expectativa? Por ejemplo, ¿vale la pena la automatización de un escenario que sólo tenemos que ejecutar una vez?

Al pensar en lo que hay que automatizar, tenemos que pensar en VALOR... Yo soy un gran defensor de la automatización. Es muy valiosa en los entornos ágiles de hoy, con todo moviéndose mucho más rápido y fluido, con más agilidad. Nos da repetibilidad y feedback extremadamente rápido para nuestras tareas de comprobación, tales como pruebas de regresión o sanity/smoke testing. También es muy útil para ayudar a tus actividades de ensayo pensantes, usarlo para cosas como la creación de datos o la realización de acciones para llegar a lo profundo del flujo de trabajo a la parte del sistema que necesitas para poner a prueba... 
Sin embargo, tenemos que ser conscientes para qué la automatización es útil, y cuáles son las limitaciones, para que no caigamos en este concepto erróneo y cometer algunos errores graves.

Por lo tanto, la próxima vez que escuche a alguien decir "Vamos a automatizar todo", habla con ellos acerca de por qué eso en realidad no es posible y ayuda a hacer del mundo un mejor lugar :)

Dan Ashby





No hay comentarios:

Publicar un comentario