El Tester… ¿debe saber programar?

Cuentan las leyendas que en la antigüedad el Testing era una fase que ocurría sólo al final del ciclo de vida, o del proyecto, una vez que desarrollo había terminado su trabajo. Por aquellos tiempos, ahora remotos, y a diferencia de los tiempos ágiles que ahora corren, Testing era una fase, no una tarea como sucede ahora, Testing iba al final, y no desde el principio, y casi en paralelo a desarrollo, como ahora; entonces Testing era un equipo externo, y no una actividad que ocurre dentro de ese equipo ágil multifuncional, donde el Tester forma parte del equipo; antaño Testing era una actividad ajena a la programación, y no como ahora que el Tester programa…. ¿cómo? ¿qué el Tester programa? </parrafo_con_ironias>
En el mundo del Testing Ágil hay bastante consenso en gran parte de lo que antes te contaba, salvo en una cosa… ¿el Tester debe/saber programar?
Hay consenso en que para entregar “prototipos potencialmente entregables” de forma rápida, al final de cada Sprint, los equipos necesitan automatizar pruebas (luego ya vendría el debate de cuánto automatizar). Y esto lleva a pensar que los Tester deben saber programar. Y aún más, si esto lo unes a la errónea interpretación que circula por ahí, casi imposible de implementar, por cierto, de que equipo multifuncional ágil significa que todo miembro del equipo debe saber hacer de todo (te recuerdo aquel post de Un equipo ágil es aquel en el que todo el mundo sabe hacer de todo… ¿seguro?).
Pero veamos que opina parte del mundo del Testing al respecto…
En 2012 Rob Lambert escribía un post del que te extraigo algunos párrafos:

Muchos sugieren que los Tester deben aprender a programar o de lo contrario serán reemplazados por una máquina (o por alguien que sepa programar).

Estoy de acuerdo en que aquellos Tester que únicamente “chequean” serán (y deben ser) reemplazados por máquinas que realizan la misma acción. Algunas de estas personas que “chequean”, podrían convertirse en grandes «Tester», dejando que las máquinas realicen el trabajo tedioso del “chequeo”.

Pero no creo que todos los Tester tengan que aprender a programar. Yo sé de un gran número que no lo hacen y hacen un trabajo excepcional en Testing. Dicho esto, creo que cada equipo de Testing debe tener la capacidad de codificar, con un programador de ayuda o un «Tester Técnico» como ayuda a la automatización, para profundizar y entender el producto.

Y, en parte, te he citado el anterior post porque James Bach (el del Testing exploratorio y el Lessons Learned in Software Testing: A Context-Driven Approach), respondía lo siguiente, añadiendo un comentario al mismo…

Los Tester NO necesitan saber programar. La idea de que los Terter tienen que saber programar viene de la ignorancia sobre el Testing, de confundir Testing con Chequeo. Viene también de la ignorancia sobre los diferentes tipos de Tester y de Testing.

Y decir a los Tester que necesitan a aprender a programar desalentará a gente brillante a convertirse en Tester.

También Elisabeth Hendrickson (autora de Explore It!: Reduce Risk and Increase Confidence with Exploratory Testing) comentaba que no todos los Tester deben saber programar, sólo aquellos que se dediquen a la automatización de pruebas. Por ejemplo, aquellos Tester dedicados a las pruebas exploratorias, no tienen que saber programar.
Bueno, eso es lo que dicen los que saben, pero qué opina y dice “el pueblo”, el “día a día”, la cruda realidad. Bueno, para ello, me he dado una breve vuelta por algunos portales de empleo y he mirado qué piden las ofertas de trabajo para Tester. Y las ofertas de trabajo difieren bastante de aquello de que el Tester no debe saber programar, más si la oferta menciona en algún lado la palabra mágica “ági”. Véase…
Conocimientos que te puedes encontrar como requeridos en una oferta de Testing, además de los típicos de Testing, puedes encontrar cosas como, y copy pego literal: Refactoring, Android and IOS architecture, SQL, Pruebas Unitarias (sobre las que existe consenso que son responsabilidad de desarrollo), lenguajes de programación de todo tipo, etc.

Terminando…

Difícil una conclusión cerrada, pero si que parece que tenemos claro que el Tester no es un desarrollador, si bien es necesario – muy recomendable – se pide cada vez más que tenga conocimientos de programación (más aún si el puesto es para automatización de pruebas). Si bien, tampoco hay que olvidarlo, el desarrollador tampoco es un Tester, si bien es necesario – muy recomendable que tenga conocimientos de Testing.