SDET, QA y DevOps: ¿dónde encajan los ingenieros de calidad en este mix?

Fuente: Unsplash.com

En estos días, es posible que haya escuchado muchos rumores sobre el término QE, por lo que en este psot ahondaremos en los diferentes roles en el desarrollo y las pruebas relacionadas con la calidad; luego profundizaremos en eu´q consiste el rol de Quality Enginner.

El papel de un QA (aseguramiento de la calidad) es aquel que, como su nombre lo indica, garantiza la calidad. También descubrí que el control de calidad puede referirse al analista de calidad, que me parece más apropiado que el aseguramiento de la calidad (ya que es imposible garantizar la calidad por completo). De todos modos, ese papel está asociado con el tester funcional, que generalmente no tiene habilidades de programación.

Hace unos años, el papel de SDET ganó popularidad. Con este, surgió el rol ágil de DevOps, con un enfoque combinado en desarrollo, operaciones y negocios.

Hoy, el nuevo término QE (ingeniero de calidad) es lo que representa un buen tester. Esto se debe a que veo el rol de Quality Engineer como la evolución de un tester a un rol más técnico, al estar involucrado en muchas áreas de desarrollo. De la misma manera que los DevOps del equipo, el ingeniero de calidad ayuda en el proceso de Shift Left Testing.

¿En qué consiste el rol del Quality Engineer?

Un QE no es un desarrollador que se enfoca en las pruebas (como un SDET), ni es alguien que se enfoca en el desarrollo y las operaciones (como un DevOps). Mucho menos, es alguien que garantiza la calidad (como un QA).

El Quality Engineer es quien aplica ingeniería a distintas partes del proceso de desarrollo de software, en beneficio de la calidad.

Principales funciones de un QE

En términos generales, un QE tiene conocimiento de las operaciones (infraestructura, servidores, plataformas) que ayudan a realizar pruebas de seguridad, pruebas de performance, integrando controles en un esquema de CI/CD.

Así como un buen Quality Engineer debe tener una cierta sensibilidad por la calidad, como lo hace un buen tester. También es esencial que un tester que se dedica a las pruebas de performance conozca Selenium.

De igual manera, que sepa cómo definir una estrategia de pruebas funcionales o definir un criterio de aceptación de una historia de usuario.

Por otro lado, es importante que un Quality Engineer sea capaz de gestionar la automatización de pruebas a diferentes niveles: desde el nivel API, el nivel UI o el nivel de protocolo. En conclusión, un ingeniero de calidad también podría ser llamado un full stack tester.

¿Qué hace al Quality Engineer tan relevante en la actualidad?

Hoy un Quality Engineer es importante porque el rol en sí mismo está impulsado por metodologías ágiles y está asociado con la idea de Shift Left Testing, ya que el tester debe involucrarse en las primeras tareas de desarrollo, incluso cuando aún no hay un producto completo.

Pese a los rumores, los avances tecnológicos no dejarán obsoleto el papel de tester e ingeniero de calidad. Está claro que un tester estará mejor preparado para trabajar con los equipos de hoy si él o ella es capaz de:

  • Revisar el código.
  • Analizar componentes.
  • Automatizar pruebas.
  • Tener conocimientos de Jenkins y herramientas similares.
  • Conocer cómo funcionan los contenedores de software, por ejemplo Docker.

Por lo tanto, aunque el papel del tester no está desapareciendo, está claro que hoy más que nunca, necesitan contar con más habilidades técnicas.

El papel del tester en las Metodologías Ágiles

El desarrollo ágil también influye en el cambio del papel del tester, porque los equipos generalmente están compuestos por no más de nueve miembros, también conocidos como “Two-Pizza-Teams. Este término hace referencia a que para ser autosuficientes, menos personas necesitan concentrar más conocimiento y responsabilidad.

Por esta razón, tal vez algunas empresas tengan equipos especializados o incluso tercericen algunas tareas. Pero el éxito de esa tercerización será mayor si hay alguien en el equipo que pueda administrar en detalle, las tareas delegadas.

👉 Para más información, lea nuestro White Paper sobre los Diez errores que las empresas cometen al tercerizar pruebas de software.

Principales actividades de un Quality Engineer

Aquí está mi lista de las principales actividades que pueden estar bajo la responsabilidad de un Quality Engineer:

Definir un Plan y una estrategia de Calidad

Establecer qué hacer y qué no hacer, de acuerdo con los objetivos y riesgos asociados, dado el contexto. Cómo probar, con qué herramientas, de acuerdo con las restricciones presupuestarias, etc.

Revisiones del Código

Comprender el código y sugerir mejoras. Herramientas como SonarQube son útiles para realizar un plan de acción basado en un análisis del código y un informe técnico del reporte.

Pruebas Funcionales

Un QE debería poder probar un sistema y buscar errores con un ojo muy crítico. Debe conocer diversas técnicas para diseñar casos de prueba y debe conocer con profundidad las pruebas exploratorias.

Reportar Incidentes

Dentro de los objetivos de testing no solo se encuentran encontrar bugs, sino también resolverlos. Para esto, es fundamental contar con las habilidades para informarlos adecuadamente, en aras de la colaboración con los desarrolladores.

Automatizar Pruebas Funcionales en diferentes niveles

Tal vez no incluiríamos pruebas unitarias aquí, ya que estas son para el desarrollador. Un QE podría realizar revisiones periódicas de las pruebas unitarias y sugerir nuevos casos de prueba, analizar la cobertura y decidir si las pruebas están en el nivel correcto. Ahora bien, un Quality Engineer automatiza a nivel API (REST, SOAP) y a nivel UI con herramientas como Selenium.

Debería preparar las pruebas con un enfoque BDD (Behavior Driven Development) utilizando por ejemplo, Cucumber. Por último, debería poder definir una estrategia de prueba automatizada, que se base idealmente en la pirámide de Cohn.

Pruebas de Performance

Esto implica ser capaz de automatizar a nivel de protocolo, así como analizar datos de monitoreo de diferentes componentes, buscar cuellos de botella y oportunidades de mejora.

Pruebas de Seguridad

Utilice diferentes herramientas y técnicas para el control de acceso, ethical hacking, etc. Al igual que las pruebas de performance, esto requiere un conocimiento muy específico de las tecnologías y plataformas utilizadas.

Comprender y manejar el git-flow

Es fundamental que las pruebas se alineen con el desarrollo, y un punto de contacto muy relevante entre los dos es la forma en que se manejan las versiones de código, las diferentes ramas y los diferentes entornos.

El código de prueba o test code, debe tratarse como parte del código del sistema, utilizando las mismas herramientas que un desarrollador y la misma metodología de gestión de versiones.

Utilizar entornos de Integración Continua (CI)

Todas las comprobaciones automatizadas deben mantenerse en un entorno de prueba de CI/CD como Jenkins o algo similar, para ejecutarlas con frecuencia. El QE debería manejar todos los artefactos de prueba, y me atrevo a decir, que podría ser un usuario de Jenkins más experto que los propios desarrolladores.

Hablar y pensar como el dueño del negocio

Además de los aspectos técnicos anteriores, lo que hace que un QE excepcional suele ser su comprensión de la visión global del negocio. No debe olvidarse que todo el trabajo entorno a la calidad es para que el negocio prospere, por lo que esta visión es tan importante como el conocimiento técnico.

La anterior lista podría ser más larga, todo depende del producto, el tamaño de la empresa, el contexto, entre otros factores.

¿Cuáles son las funciones de un ingeniero de calidad de software?

Seguramente, hay varias actividades que podríamos añadir a esta lista, ¡agréguelas en los comentarios!

El valor de un QE en mercados exigentes

Espero que esta publicación le haya dejado más claro sobre lo que hace un Quality Engineer. Me ha gustado el término porque siento que encapsula toda mi experiencia y lo que todos nuestros ingenieros hacen a diario.

Mientras comencé en informática como tester de performance en 2005, participé en diferentes roles en proyectos de pruebas funcionales, pruebas automatizadas, pruebas de seguridad, pruebas de usabilidad, revisión de código, y más recientemente en proyectos en los que apoyamos la construcción de un esquema de CI/CD.

Todos nuestros testers con el tiempo, proyecto tras proyecto, se vuelven cada vez más completos y se ramifican en diferentes áreas de calidad. Creo, desde mi humilde opinión, que esto es por lo que todo tester debería esforzarse, ya que los QE son muy apetecidos en los mercados más exigentes, y siempre se valorarán más (sobre un QA tradicional).

Quien tenga la visión más completa de la calidad, aunque sus tareas se hayan restringido inicialmente a un área determinada, será más valioso para cualquier organización.

+12 años de experiencia en trabajo remoto con empresas de EE.UU y Latinoamérica

En Abstracta, llevamos más de una década ayudando a algunas de las compañías más grandes del mundo como Shutterfly, CA Technologies y BBVA a mejorar sus procesos. Nuestros más de 100 Quality Engineers, que han finalizado más de 400 proyectos con éxito, se integran perfectamente con cualquier equipo de desarrollo ágil a través de la colaboración diaria en tiempo real, utilizando sus herramientas preferidas de comunicación y gestión online.

¿Qué piensa sobre el rol del Quality Engineer? ¡Cuéntenos en los comentarios!


Otros contenidos relacionados

Herramientas para pruebas de performance: ¿cómo prepararse para Black Friday?

Cómo construir software de mejor calidad, más rápido y reduciendo costos