[Debate] ¿Los testers deben saber hacer de todo en el mundo ágil? ¿Qué cualidades debe tener un tester en un equipo ágil?

Hoy me gustaría promover un debate sobre el perfil de tester, sobre qué debe hacer un tester en los equipos ágiles. Esta idea se me vino a la cabeza hace unos cuantos días, cuando unos compañeros de una empresa en la que paso bastantes días a la semana, vinieron de un curso para una certificación de tester ágil, y nos pusimos a hablar de los contenidos que trataron.

Un poco de contexto

Dejando de lado el tema certificación sí, o certificación no, lo cierto es que en los proyectos ágiles nos hemos dado cuenta de que el papel de tester tradicional, policía, que prueba al final del proceso no es suficiente, y para una mejor calidad tenemos que probar más a menudo y empezar desde las fases más tempranas del proyecto (recuerda que el testing es una de las cosas que influyen en la calidad del software, pero no la única Calidad del software es mucho más que el testing). Incluso en ciertas empresas y para ciertos productos, solo realizar testing funcional también se queda corto (recuerda que hay muchos tipos de pruebas ¿Pruebas de integración, funcionales, de carga…? ¡Qué jaleo! ¿Qué diferencias hay?).
Siendo conscientes de esto, cuando hablamos de testing ágil (¿Cómo enfoco el testing de forma ágil?) se le vuelva a dar importancia a temas como la automatización de pruebas, Integración Continua, testing exploratorio, ATDD, BDD, TDD (lado del desarrollador), pruebas unitarias (lado del desarrollador)…
En este punto salió la cuestión de: ¿es que un tester ahora tiene que saber todo eso? ¿tiene que saber hacer pruebas manuales funcionales, testing exploratorio, automatizar pruebas, implantar integración continua, BDD…? ¿así de golpe? ¿y tienen que estar dentro del equipo y ya no tiene que existir el rol de QA manager?
Para mí fue una conversación muy buena, con conclusiones muy interesantes, y lo mejor, diferentes visiones. No las digo porque espero que estos amigos participen y den su visión en el debate.
Pero la cosa no queda ahí. Si profundizamos más allá, la cuestión es que en ciertas empresas directamente no hay rol de tester, este papel lo asume desarrollo. ¿Es eso adecuado?

Abramos el debate

Por eso, testers, desarrolladores, QA managers, CEOs, CTOs, etc. os invito a dar vuestra opinión sobre los siguientes temas:
1 – ¿Debe existir alguien especializado en testing en un equipo ágil? ¿o solo con testing desde el lado de desarrollo?
2 – ¿Qué debe hacer un tester dentro de un equipo? ¿Y qué debe saber? ¿Debe saber y practicar BDD, ATDD, integración continua, testing exploratorio, automatizar pruebas…?
3 – ¿Sigue siendo necesario el rol de QA manager?

Mi opinión.

Así que para abrir el debate comenzaré yo dando mi opinión. Recalco opinión porque no quiero liar a nadie, lo que voy a decir no es un absoluto a seguir aceptado por la real academia de testers (si eso existiera xD), ni el mundo ágil, ni dicho en el libro X de testing ágil.
Para entenderme un poco tenéis que saber que mi perfil es un algo especial. Me gusta programar, vengo de desarrollo, y soy tester, pero más involucrada y especializada en integración continua y automatización de pruebas que en la parte manual. Además por otra parte también ayudo a las empresas con la agilidad, Scrum, procesos de desarrollo, calidad del software (proceso, producto y personas), etc. De ahí que no tenga una visión específicamente funcional del testing y es muy probable que mucha gente tenga una visión distinta a la mía.
Así que vamos allá con los puntos anteriores:
 
1 – ¿Debe existir alguien especializado en testing en un equipo ágil? ¿o solo con testing desde el lado de desarrollo?
Parece que en el concepto de los equipos ágiles, multifuncionales, nos hemos cargado los roles, el tester funcional, desarrollador backend, desarrollador frontend, administrador de base de datos (DBA)…
Yo soy partidaria de mantener roles, teniendo un sentimiento de igualdad dentro del equipo. Es decir, que un desarrollador backend no es más valioso que un tester, ni un DBA más valioso que el resto. Para mi un rol indica que alguien es un especialista en ese campo.
En un equipo multifuncional hay especialistas, pero eso no quita que la gente también tenga ciertos conocimientos sobre otros campos, sin llegar a ser especialistas (Un equipo ágil es aquel en el que todo el mundo sabe hacer de todo… ¿seguro?)
Por ello pienso que todo el mundo debería saber de calidad del software, todo el mundo debería contribuir a ella y haber cultura de testing.
Aunque los desarrolladores deben ser responsables de testing a nivel de unidades código (pruebas unitarias), para mí en aplicaciones grandes, críticas, esto es necesario, pero no suficiente. Necesito testing a distintos niveles de la aplicación, incluso una visión global, regresionar componentes afectados con los cambios de código, una buena estrategia de pruebas, etc. Tantas cosas más que para mí hacen indispensable un tester, o varios, como ya comentaré en el siguiente punto.
 
2 – ¿Qué debe hacer un tester dentro de un equipo? ¿Y qué debe saber? ¿Debe saber y practicar BDD, ATDD, integración continua, testing exploratorio, automatizar pruebas…?
Pienso que el concepto de calidad del producto software es muy amplio, y todavía no está muy bien acotado y definido. Para que te hagas una idea, la ISO 25000 establece que calidad del producto software abarca las siguientes características y subcaracterísticas a tener en cuenta:
iso25000
Actualmente conseguir todo eso en un software me parece muy costoso a nivel de esfuerzo y dinero.
Así para mí el objetivo final es aportar el máximo valor al cliente con el software que desarrolles (el cliente puede ser externo, o puede ser interno a la empresa), por lo que las acciones de mi equipo deberían ir orientadas a darle valor al cliente.
En mi visión, de todas las características de calidad que hay, tenemos que pensar ¿qué es lo que le aporta valor al cliente? ¿qué es lo que necesito como empresa?
Por ejemplo, podría darse el caso que para un usuario de una web de compras calidad sea que el software a nivel funcional se adecúe a lo que él espera, que tenga una buena usabilidad y seguridad de que no le vayan a hackear la cuenta bancaria.
Pero a lo mejor para otro tipo de aplicación la seguridad no es un aspecto tan crítico. O incluso, para una empresa que desarrolla un producto y lo mantiene en el tiempo pueden ser necesarias la adecuación funcional y la mantenibilidad.
Para mí eso se debe reflejar en el desarrollo de software, en la prevención de riesgos y en la estrategia de pruebas. Es decir, detectar y reducir errores de seguridad, de mantenibilidad, usabilidad, etc. en cada caso.
Lo que quiero decir con esto es que sí se puede dar el caso de que por motivos de negocio y organización interna en una empresa sea necesario que:
– Se implante integración continua.
– Se automaticen pruebas.
– Se haga testing manual funcional (porque no es rentable automatizar pruebas de ciertas partes de la aplicación muy costosas técnicamente).
– Se hagan pruebas de carga y rendimiento.
– Se haga ATDD, BDD, para tomar mejor los requisitos del cliente y mejorar la comunicación en todo el equipo con los distintos perfiles.
¿Un solo tester tiene que ser especialista en todas estas áreas? Mi visión es que no. ¿Un desarrollador debe ser especialista en backend, frontend, dba, UX, seguridad, sistemas, etc.? Es imposible.
Creo que la calidad del software es algo tan amplio, tan poco tenido en cuenta, y el concepto de tester sigue muy poco especializado, o especializado solo en el área funcional.
Por eso, si se puede permitir y la empresa lo necesita (previo análisis de su negocio, requisitos, necesidades, etc.), sí veo necesario que haya especialistas en distintos campos de testing en un equipo, y que eso no les limite aprender o ejercer otras actividades.
Pero creo que no estamos preparados para esto. Antes de ello, es necesaria una concienciación sobre qué es calidad del software, por qué es importante, y qué es testing, para todos los roles, incluidos los testers.
 
3 – ¿Sigue siendo necesario el rol de QA manager?
Para mí sigue siendo necesario. Más que nada porque el día a día del equipo ágil no quite a los testers el objetivo general de testing a nivel de todos los equipos, coordinación entre todos, etc.
Además de que veo muy bien que haya una persona que se preocupe de que los testers puedan mejorar profesionalmente, promocionar, estén motivados, solucionar problemas, etc.
Para mí es ideal además, se hagan reuniones de coordinación interna de los perfiles de tester o QA de todos los equipos.
En este aspecto tengo una visión muy parecida a los conceptos de chapter y guild de Spotify.
—-
¿Tú que opinas? También puedes contradecir o comentar mis opiniones, para eso es un debate. ¡Espero tus respuestas! 🙂
 

jgarzas

Ph.D. en informática, Postdoctorado en la Carnegie Mellon (EE.UU) e Ingeniero en Informática.

Primera vez que me tocó hacer una gestión Ágil en una empresa... año 2001. Desde entonces he trabajado en, o para, más de 90. Y he formado a más de 2000 alumnos.

También soy profe de la Universidad Rey Juan Carlos.

0 comentarios en “[Debate] ¿Los testers deben saber hacer de todo en el mundo ágil? ¿Qué cualidades debe tener un tester en un equipo ágil?”

  1. Soy completamente nuevo en esto, solo he leído unos libros y me he puesto a experimentar en mi empresa, por lo que voy a contar como he llevado a cabo la parte de pruebas, sin más.
    equipo
    Scrum Master
    Product Owner
    1 usuario futuro de la aplicación
    2 programadores-analistas
    1 auxiliar administrativo de informática que hará las pruebas en todos los sprint junto al futuro usuario de la aplicación y el product owner

  2. 1 – ¿Debe existir alguien especializado en testing en un equipo ágil? ¿o solo con testing desde el lado de desarrollo?
    * Estoy de acuerdo todos en el equipo deben conocer de calidad y de testing agil, no puede quedar nadie sin conocer estos conceptos. Puede que existan personas que conozcan mas en un tema en especifico.
    2 – ¿Qué debe hacer un tester dentro de un equipo? ¿Y qué debe saber? ¿Debe saber y practicar BDD, ATDD, integración continua, testing exploratorio, automatizar pruebas…?
    Creo que un tester debe ser integro y conocer todo lo anterior y debe practicarlo siempre y cuando sea útil para el proyecto, para esto es bueno que desarrolle un sentido critico de cuando es util y cuando no, ademas el tester debe saber programar y debe conocer de buenas practicas de desarrollo.
    3 – ¿Sigue siendo necesario el rol de QA manager?
    Estoy de acuerdo debe existir una persona que piense siempre en mejora continua de la calidad en el proyecto, en como adoptar nuevas practicas que agreguen valor, por que como dicen un buen tester no es que el encuentra mas bugs, es el que conoce como identificar los problemas que lo ocasionan y mejora el proceso para que no se repita.

  3. 1. Hoy en día no es conveniente tener perfiles únicamente dedicados a QA y testing, excepto en proyectos específicos con requerimientos muy concretos.
    Todo el equipo debe ser responsable de la calidad del producto según su perfil. La mayor responsabilidad recae en los desarrolladores, que deben asegurar:
    – que el software que escriben cumple las especificaciones
    – que existen métodos para evitar errores de regresión
    Un product manager se ocupará de la calidad desde su propia perspectiva, asegurando que el producto cubre las necesidades del cliente.
    Es un razonamiento puramente pragmático, el desarrollador solo produce software de máxima responsabilidad cuando él mismo es responsable de la calidad y soporte del producto.
    Afortunadamente la industria tiende claramente a este modelo.
    2. Respecto a las herramientas de QA y testing, estas no son diferentes del proceso de desarrollo: Continuous Delivery y Automated Acceptance Tests. Es otra de las razones por las que no merece la pena tener distintos perfiles para desarrollo y testing: su trabajo tiende a ser el mismo.
    3. Totalmente prescindible, no debe haber management separado de desarrollo y QA.
    Un saludo

    1. Pedro (nombre artístico)

      No puedo estar más en desacuerdo con Miguel.
      1. Hoy en día no es conveniente tener perfiles únicamente dedicados a QA y testing, excepto en proyectos específicos con requerimientos muy concretos.
      Pedro: ¿Y qué ocurre con la mentalidad del tester y los niveles de independencia? ¿Acaso por muy ágiles, modernos, maduros y responsables que sean los desarrolladores van a encontrarse sus propios defectos? Nunca, así aniquilen a todos los testers del mundo.
      Todo el equipo debe ser responsable de la calidad del producto según su perfil. La mayor responsabilidad recae en los desarrolladores, que deben asegurar:
      – que el software que escriben cumple las especificaciones
      – que existen métodos para evitar errores de regresión
      Un product manager se ocupará de la calidad desde su propia perspectiva, asegurando que el producto cubre las necesidades del cliente.
      Pedro: No sé qué parte no se entiendo de «Developer» y «Product Manager», uno desarrolla y otro gestiona el producto, bastante trabajo tienen.
      2. Respecto a las herramientas de QA y testing, estas no son diferentes del proceso de desarrollo: Continuous Delivery y Automated Acceptance Tests.
      Pedro: Si estas son las únicas herramientas de testing, no por qué me agobio tanto.
      Es otra de las razones por las que no merece la pena tener distintos perfiles para desarrollo y testing: su trabajo tiende a ser el mismo.
      Pedro: Ala, acabamos de inventar el desatesting.
      3. Totalmente prescindible, no debe haber management separado de desarrollo y QA.
      Pedro: Entonces, ¿quién se encarga de alinear procedimientos, procesos, metodologías, herramientas, motivaciones, desarrollos personales e interdependencias, etc? ¿Los abuelos de los Product Desatesters?

  4. 1 – ¿Debe existir alguien especializado en testing en un equipo ágil? ¿o solo con testing desde el lado de desarrollo?
    Estoy de acuerdo con que la calidad debe estar presente en cada uno de los integrantes del equipo de un proyecto; sin embargo, creo que sí debe existir personas que tengan esa habilidad para encontrar defectos; de plantear estrategias y escenarios de pruebasque apunten al verificar esos punto vulnerables del desarrollo.
    2 – ¿Qué debe hacer un tester dentro de un equipo? ¿Y qué debe saber? ¿Debe saber y practicar BDD, ATDD, integración continua, testing exploratorio, automatizar pruebas…?
    Considero que un tester debe conocer de metodologías de pruebas, de diseños de pruebas y de herramientas que le faciliten el QA, pero debería hacer parte activa del equipo de desarrollo y no estar aislado del equipo. Un tester de proponer y plantear soluciones a los problemas encontrados durante el QA, debe ser proactivo, crítico y tener la habilidad de comunicación. Creo que un tester debe ser íntegro y conocer de automatización, integración continua, BDD; aunque el testing manual sigue siendo la base, el tester debe trascender.
    3 – ¿Sigue siendo necesario el rol de QA manager?
    En proyectos grandes con varios equipos de desarrollo si debe existir el rol de QA manager para que consolide, apoye y coordine los equipos.

Dejar un comentario

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