Durante mi presentación en Valencia, expuse en una slide que era importante que los testers tuvieran programing o coding skills. Esta frase provoco una serie de murmuros, y note que decenas de ojos empezaban descuartizarme en su cabeza…

Efectivamente en cuanto acabe la presentación, todas las preguntas fueron hacia esa slide, ya que la mayoría de gente no estaba de acuerdo en que realmente un tester deba saber de programación. La pregunta abierta a debate es… Realmente un tester debe saber de programación? Porque existe tanto miedo a aprender a programar?

Aquí expongo mi opinión, pero no es más que eso, una opinión al respecto y por supuesto puede diferir de la de mucha gente:


PROGRAMAR O NO PROGRAMAR, ESA ES LA CUESTIÓN:

Parece ser que existe una gran reticencia de mucha gente que se dedica a la calidad de software y al testing (sobretodo estos últimos) a no tener que saber nada sobre programación. Esto en parte se debe a dos motivos (entre otros muchos): El primero de ellos es que mucha gente se ha dedicado al software testing por casualidad, y es gente reciclada de otros trabajos como soporte, o gente de la capa de negocio o más funcional. El segundo motivo es que otro gran porcentaje de testers son gente que se metieron en este sector porque justamente no querían programar y les pareció una alternativa sencilla para seguir dentro de las IT sin tener que saber programar.

Pero realmente sirve para algo saber de programación para ser tester?

 

Testing triangle

A mi siempre me ha gustado mostrar una pequeña figura como la siguiente donde localizo el testing entre dos mundos que casi están separados, la capa de negocio y la parte de desarrollo o parte técnica.

Para mi el tester ha de ser comunicador entre ambas partes (junto otros roles implicados en el desarrollo), ya que entre ellas la comunicación puede llegar a ser muy complicada.

Como podéis observar el tester toca tanto la parte de negocio como de desarrollo. Todo el mundo tiene muy claro que el tester ha de saber sobre la capa de negocio para hacer bien su trabajo, sin embargo poca gente tiene en cuenta que también es importante el trabajo con los programadores. Por lo tanto para mi un tester ha de tener parte de negocio, parte técnico y añadirle otras skills intermediaria.

Entonces, para que le puede servir programar a un tester? Principalmente por varios motivos:

  1. Para entender los problemas que puede tener una aplicación. Desde la capa de negocio se pueden encontrar muchos defectos, pero si realmente sabemos como esta construido el software, si sabemos como esta diseñado y creamos un modelo mental de este, sabremos como toma las decisiones, de donde obtiene los recursos, que partes del código son más susceptibles de tener más errores.  Obtenemos una gran fuente de información para mejorar en la realización de las pruebas!
  2. Automatización! Si lo se… existen maravillosas herramientas que haciendo clicks puedes automatizar… pero lo que realmente aporta valor es atacar sobre la lógica de la aplicación (a nivel funcional). Que seamos capaces de automatizar una API sin interfaz gráfica, capaces de regenerar datos mediante scripts, crear scripts para configurar la aplicación…
  3. La más importante para mi… para comunicarse con los programadores… aprendemos la capa de negocio para hablar con los clientes, para discutir con ellos, para proponerles cosas, informes etc. Sin embargo no somos capaces de comunicarnos con la gente técnica porque no hablamos su idioma… como queremos entonces que nos respeten??? Si queremos captar su atención tenemos que saber ayudarles, darles apoyo, hablar con ellos, mejorar su día a día, y esto solo lo podemos conseguir si sabemos como trabajan.

Gente que se dedica al testing y al QA, debemos recordar una cosa… nuestra disciplina se encuentra dentro de la Ingeniería de Software! Si queremos sacar todo el potencial de nuestra profesión tenemos que trabajar desde su base.

Con esto no quiero decir que tengas que tener un nivel de programación excelente, ni mucho menos, si yo soy tester y el de mi lado es programador es principalmente por dos motivos… el primero porque el trabaja 8 horas programando y yo no. El segundo es porque a el le motiva programar, a mi probar y hacer de QA. Pero si que es necesario que si me enseña un diagrama UML lo entienda, que si me muestra una arquitectura, podamos discutirla, que si me da un trozo de código (bien programado) pueda decirle que hace y proponer seguramente alguna mejora y si no lo entiendo pedirle que me lo explique. De esta forma, la otra persona ve que aporto valor a su trabajo, que realmente puedo serle de utilidad, en lugar de ser alguien que lo único que le dice es que ha hecho algo mal. A partir de ese momento, me podré integrar mejor con ellos e intentar internamente que mejoren la calidad de su código ayudandoles a hacerlo y ofrenciendoles todo el soporte necesario para ello ya que el objetivo de ambos es el mismo.

Esta condenado el tester funcional a desaparecer?

A mi parecer no. Hay una gran herencia en los últimos años, aunque creo que con la entrada del agilismo esta tendencia esta cambiando. Igualmente existe una gran cantidad de testers que son muy buenos realizando su trabajo, gracias al knowhow que tienen de la capa de negocio, y gracias a que se ha ido autoformando dentro del mundo del tester teniendo un gran background de heurisiticas que puede utilizar.

Conozco grandes testers exploratorios, y de testing manual, mucho mejor que algunos que sepan programar, gente a la que admiro, pero también creo que aprender un poco de programación no les hará daño. Insisto, ambas formaciones no son contradictorias, sino al contrario, son complementarias y nos ayudaran a realizar mejor nuestra profesión.

Al final nuestro objetivo es el mismo que el resto del equipo, entregar un software de calidad a nuestro cliente, por lo que hemos de aportar un valor diferencial respecto a nuestros clientes, y respecto a los programadores, ese es el status quo del tester.

Ahora ya podéis uniros al grupo de facebook de “quiero despellejar al que dice que los testers necesitan programar!”

Share and Enjoy:
  • Facebook
  • Twitter
  • Google Buzz
  • LinkedIn
Tagged with:  

18 Responses to Tienen que saber programar los testers?

  1. […] Los invito a que lean el artículo completo, haciendo clic AQUI […]

  2. Tomislav dice:

    Aunque no considero que sea imprescindible que un tester sepa programar, sí que pienso que eso lo hará mejor tester. Por lo que mi pregunta es – como de bueno quieres ser? Si la respuesta es muy bueno, entre otras cosas hay que aprender a programar. No es lo único obviamente, pero si es algo que nos puede dar muchas ventajas, como bien has indicado.

  3. twiindan dice:

    Totalmente de acuerdo contigo Tomislav, para mi es muy importante que el tester este motivado y que tenga ganas de aprender. Pero también considero que una de las cosas que debe aprender al inicio es a programar, ya que es de las skills que más provecho puede sacar.

  4. Tanja Vos dice:

    Yo diría que la respuesta a esta pregunta depende de ¿qué es lo que tienen que testear/probar y a que nivel?

  5. javierpello dice:

    Estoy de acuerdo con todos. Por cierto, excelente artículo Toni…muy buen exposición. Yo estoy totalmente de acuerdo con Toni, se necesita saber programar, leer diagramas UML y poder discutir una arquitectura. Se debe saber algo de scripting y de bases de datos (SQL).

    Por otro lado, @Tanja tiene mucha razón…si por ejemplo tenemos un proyecto de grandes dimensiones con un equipo específico de UAT (como pasa por ejemplo en Zurich), dicho equipo hará la prueba de validación, flujos de negocio, etc…este tipo de equipo no necesita saber programar, ni necesita saber de arquitecturas, ni de scripting…por están enfocados al negocio y son expertos en el negocio. En fin, es un tema interesante de discusión y podríamos estar horas hablando del tema…

  6. twiindan dice:

    Primero de todo, gracias Pello por la felicitación.

    Efectivamente que puede depender mucho de a que nivel tienen que probar los testers, pero siendo claros… cuantas empresas tienen un departamento exclusivo de “UAT”? Creo que muy muy pocas (aunque quizás me equivoco) y más que testers yo los consideraría Bussiness Experts. Por lo que tenemos que solo habría un pequeño porcentaje (me atrevería de decir un 20 % como mucho) que no haría falta este conocimiento.

    Para mi lo que sería un tester actualmente funcional, tiene que aportar algo más que el cliente, y ese más lo aporta mediante los conocimientos de testing, y mediante los conocimientos de programación ya que puede aportar información de como esta construido.

    Insisto en el tema de que no han de ser unos “expertos” programando, pero si que es importante que tengan nociones o un nivel intermedio en estos temas.

  7. CarlesC dice:

    Hola,
    Mi discrepancia al supuesto del asunto.
    Si nos fijamos en otros sectores, p.e. Automovil, ¿debe saber mecánica un probador de coches? Ciertamente saber de mecánica no le irá mal, pero son aspectos que hoy en día requieren de super especialización y difícilmente son compatibles. Así pues el Tester debe tener un compendio de conocimientos generales de todo aquello que le afecta, sin necesidad de ser un experto en una materia. Puedes ser un programador de Java y de poco te servirá en un entorno de programación estructurada como el Cobol y viceversa. Sin embargo, el proyecto a probar puede tener componentes de ambos. Al final, si hacemos Scripting deberemos estar familiarizado con la herramienta en cuestión. Todo es aprendible, así que no presupongamos un requisito previo para ser Tester. Más vale la actitud que las aptitudes para ser un buen Tester o Programador.
    La logica de comprender diagramas, no es exclusiva de programadores. Lo vemos claramente en las nuevas Apps para smartphones. Si buscamos cuán userfriendly es, no hace falta ser programador, ni tampoco para verificar la funcionalidad de la misma. Al final gente sin ninguna experiencia, aprende y usa aplicaciones vario pintas, sin mucha dificultad. Conviertiéndose en Tester sin saberlo.

  8. Lorena dice:

    Totalmente de acuerdo con el articulo. Como tester para mi es muy importante poder conocer el desarrollo, y entablar una conversacion fluida con el el programador, no tanto para remarcarle los errores, sino para poder prevenirlos a tiempo, y ademas, agregar una cuota de valor para el equipo de trabajo. Es por eso que este año a pensar de estar terminado ya me incorpore al mundo .Net, Hay que animarse y sacarse los falsos mitos que dicen que un tester no tiene paciencia para programar
    Saludos para todos y Felices Fiestas

  9. […] ya comenté en el articulo “Han de saber programar los testers“, no es necesario que tengan unos conocimientos profundos sobre programación, pero si que […]

  10. Mario dice:

    Excelente el artículo. Estoy absolutamente de acuerdo, el tester debe saber programar. Es más, en nuestro departamento no estamos contratando tester que no tengan conocimientos de programación. Por otro lado hay que ser bastante cauteloso con solamente considerar esa variable. Un buen tester debe también saber comunicarse con los dueños de producto (product owner) y analistas de negocio. Saber de programación te permite predecir riesgos, automatizar pruebas y a su vez traducir el lenguaje de los programadores a la capa de negocio.

  11. Miguel GDL dice:

    Estoy de acuerdo con todo especialmente con CarlesC y su ejemplo de los pilotos de coches, el piloto debe saber hablar con los ingenierios mecanicos, aerodinamicos, disenadores, torneros, tecnicos… con todos y no precisamente saber ensamblar cada cosa del motor, pero si saber como funciona el motor. Y tambien estoy de acuerdo con los que dicen que depende a que nivel hacer la prueba, cieto todo…

  12. Carlos dice:

    Muy buen aporte, muchas gracias

  13. Mauricio dice:

    Me parece correcto.. que un tester tenga conocimientos de programación… actualmente estoy enfocado al testing de sistemas, llevo prácticamente 3 meses.. y me he dado cuenta que es indispensable conocer la parte de programación, para complementar nuestro conocimiento y poder ayudar al equipo de trabajo en situaciones de estrega inmediata al cliente.. esto implementando el desarrollo ágil..

  14. ana rosa del carpio dice:

    Muy de acuerdo contigo, pienso lo mismo y leyendo esto confirmo lo que supuse, y es cierto lo que dice, sobre todo que saber programar ayuda a un tester a poder comunicarse con el desarrollador y entender como fue realizado el software y poder dar opinión y discutir sobre eso.

    Felizmente encontré un post como el tuyo, que vale la pena marcarlo como favorito.

  15. Carl0s_ dice:

    Es increíble como la ignorancia y la astucia de los flojos llegan a concluir que en la tarea de testing no se necesita saber programar, ya que para mi y para la gente que sabe, se necesita un nivel hasta cierto punto avanzado de programación y conocimiento en OOD (Object-Oriented Design), hablando de OOP, cosa que por lo que veo desconocen todos los que comentaron aquí, que al parecer no conocen una metodología de trabajo como test driven development y el skill necesario para triunfar en una metodología así, o herramientas como los code contracts que ayudan al testing de los sistemas (en .net), o siquiera han escuchado en su vida hablar de mock objects, los tester chafas que no programan sólo hacen pruebas de usuario, que como tal, el mismo usuario pudiera reportar esos bugs, pero hay toda una disciplina detrás del testing y no es sencilla y sirve para probar en coordinación todos nuestros objetos, dando los resultados esperados y descubriendo nuevos bugs. Por eso en empresas internacionales de desarrollo de software son bien remunerados los testers.

    Saludos desde México y a estudiar, que mi carrera es de las más dificiles ya que se actualiza todo el tiempo y no podemos dejar de aprender cosas nuevas y nomás hacernos pato para safarnos de lo que realmente significa ser preofesional no es la solución.

  16. Erick J. Guerrero dice:

    Totalmente de acuerdo con tu post. Sí un tester quiere sacarle el mayor provecho a su trabajo, debe tener la habilidad de analista de requerimientos y programador. Incluso hasta para automatizar se necesita saber programar.

    Debería ser imprescindible que un tester tenga conocimientos de programación, no solo un tester, todo el mundo debería aprender a programar sin importer el lenguaje, la programación nos hace utilizar la lógica, elevar nuestra creatividad.

    Aquí les dejo un video donde explica el porque todos deberiamos programar:
    https://www.youtube.com/watch?v=Y1HHBXDL9bg

  17. Smithd6 dice:

    obviously like your website but you have to check the spelling on several of your posts. Several of them are rife with spelling problems and I find it very bothersome to tell the truth nevertheless Ill definitely come back again. bkfakdbeeeaabbkd

  18. Es interesante saber como es que surgio este deporte, yo ni en el mundo lo hacia y veia que otras personas lo practicaban pero yo solo pensaba que era una pelea. Es interesante el que este arte marcial alla nacido con la fuerza que contaban las personas de antes para defender lo que era suyo y para poder sobrevivir. El como me dio cuenta hoy que el tae kwon do no es solo una pelea, sino un enfrentamiento donde se saca las energias o lo neativo para estar al 100% y practicar los valores que algunas personas los han olvidado.
    imitation cartier bracelet white http://www.myjewelery.net/

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *