SDET, QA y DevOps: ¿dónde encajan los Ingenieros de Calidad en este mix?
En estos días, es posible que haya escuchado muchos rumores sobre el concepto de Quality Engineer, por lo que en este psot ahondaremos en los diferentes roles en el desarrollo y las pruebas relacionadas con la calidad; luego profundizaremos en qué consiste el rol de un Ingeniero de Calidad.
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 (Software Development Engineer in Test) ganó popularidad. Con este, surgió el rol ágil de DevOps, con un enfoque combinado en desarrollo, operaciones y negocios.
Actualmente, el concepto de Quality Engineer (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.
¿Qué es un Quality Engineer?
Un Quality Engineer 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). Ni 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.
Funciones de un Ingeniero de Calidad
En términos generales, un Ingeniero de Calidad tiene conocimiento de las operaciones (infraestructura, servidores, plataformas) que ayudan a realizar pruebas de seguridad, pruebas de performance, integrando controles en un esquema de integración continua y entrega continua (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 a un Quality Engineer tan relevante actualmente?
Hoy en día el rol del Quality Engineer es importante porque 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 de software completo.
Pese a los rumores, los avances tecnológicos no dejarán obsoleto el papel de un 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, como por ejemplo Docker.
Por lo tanto, aunque el papel del software tester no está desapareciendo, está claro que hoy más que nunca, necesitan contar con más habilidades técnicas.
El rol del Software Tester en las Metodologías Ágiles
El desarrollo ágil también influye en el cambio del rol 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, cada vez más empresas confían las actividades de testing y calidad en manos de especialistas: la mejor manera de maximizar los recursos para crear productos competitivos y de alta calidad.
El outsourcing de testing de software se ha convertido en una solución común y eficaz para muchas organizaciones que desean centrarse en el desarrollo y otros procesos fundamentales.
→ Le puede interesar: Outsourcing de Testing de Software: qué hacer y qué evitar cuando se busca un partner
Principales actividades de un Quality Engineer
Entre las principales actividades que pueden estar bajo la responsabilidad de un Quality Engineer se encuentran:
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 del presupuesto, etc.
Revisar el 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 Ingeniero de Calidad 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 solucionarlos. 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 deben realizarse por parte del desarrollador. Un Quality Engineer 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.
Un Ingeniero de Calidad debería poder automatizar a nivel API (REST, SOAP) y a nivel UI con herramientas como Selenium. También preparar las pruebas con un enfoque BDD (Behavior Driven Development) utilizando por ejemplo, Cucumber. Por último, debería poder definir una estrategia de pruebas automatizadas, 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
Debería utilizar diferentes herramientas y técnicas para el control de acceso, ethical hacking, etc. Al igual que para 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 los checks automatizados deben mantenerse en un entorno de pruebas de CI/CD como Jenkins o algo similar, para ejecutarlas con frecuencia. Un Quality Engineer 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 Quality Engineer 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. Seguramente, hay varias actividades que podríamos añadir a esta lista, ¡déjenos un comentario y las agregaremos a esta lista!
El valor de un Ingeniero de Calidad en mercados exigentes
Espero que este post le haya dejado más claro sobre lo que hace un Quality Engineer. Este término encapsula toda mi experiencia y describe lo que 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, automatización de pruebas, 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 integración y entrega continua.
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 estas funciones y actividades son en las que todo tester debería poner sus esfuerzos.
Los Quality Engineers son muy apetecidos en los mercados más exigentes, y siempre se valorarán más sobre un analista de calidad 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.
¡Somos una compañía en crecimiento! Estamos siempre buscando personas talentosas del área del testing y la calidad de software para unirse a nuestro equipo. Si te gustaría trabajar con nosotros, envíanos tu CV a [email protected]
Otros contenidos relacionados
¿Qué es un Tester de Software?
Federico Toledo a fondo: “Cada vez van a ser necesarios más y mejores testers”
Cómo Shift Left Testing puede impulsar la adopción de DevOps
Principales Tendencias de Testing y Calidad de Software para 2022
Etiquetas
Posts Relacionados
Abstracta en el top compañías de QA y software testing de TechReviewer
Obtuvimos nuevo reconocimiento dentro del Top compañías de QA y Testing, por esta importante firma de análisis tecnológico.
Guía de testing continuo: alcanza el nivel más alto de madurez
¿Cómo reducir el costo del desarrollo de software y minimizar la ineficiencia, los riesgos y time to market? El desarrollo ágil, junto con las prácticas que promueve, —tales como integración continua, testing continuo y entrega continua— son claves para seguir siendo competitivo en el panorama tecnológico actual.