OpenWebinars

Testing y QA

Qué es QA y su importancia en la actualidad

Te contamos qué es Quality Assurance (QA) y profundizamos en por qué es tan imporante dentro del desarrollo de software y qué beneficios aporta actualmente.

Xavier Calvas Quezada

Xavier Calvas Quezada

Lectura 10 minutos

Publicado el 20 de octubre de 2022

Compartir

Introducción

Inevitablemente, todo ciclo tiene un objetivo. Por ejemplo, el ciclo del agua permite poseer un recurso limpio y renovable en toda la tierra, el ciclo del oxígeno permite respirar aire puro de manera constante, etc. Tales ciclos buscan optimizar de manera cíclica los medios naturales ya existentes y recuperar la calidad de los mismos a lo largo del tiempo con una perdida mínima.

Dentro del ciclo de vida de un producto informático encontramos procesos parecidos a los expuestos anteriormente que buscan lo mismo: aprovechar los recursos que se establecen a lo largo de la creación de un programa, tales como el tiempo, el factor económico, el recurso humano, entre otros, y optimizarlos al máximo. Es en ese “momentum” de la curva de crecimiento, cuando justamente, la búsqueda de calidad es la que logra marcar la diferencia entre el éxito y el fracaso de un proyecto digital.

Y es que no podemos segarnos a la realidad, los defectos se producen inevitablemente en cada etapa de desarrollo con la que cuenta un software específico y esta es la razón por lo que se vuelve importante la detección de errores o “bugs” (sea en el código, las especificaciones del usuario, las interfaces, etc.) de manera recurrente. De no hacerlo, estas situaciones se volverán un completo dolor de cabeza para los distintos equipos de desarrollo, de integración, de UI / UX o hasta incluso de DevOps (entre otros) que se encuentren involucrados en el proyecto.

Debido a las anomalías intrínsecas en toda etapa del desarrollo de software, es necesario contar con mecanismos que permitan asegurar la calidad de nuestros programas en cada ciclo de desarrollo. El QA o Quality Assurance logra este objetivo al incorporarlo dentro de los distintos pasos y procesos de la creación de un software en general.

Qué es QA o Quality Assurance

En pocas palabras, es el profesional o equipo de profesionales dedicados a verificar problemas tanto en el aspecto de funcionalidad como en el de operatividad dentro de un producto TI, lo que comprende cada una de sus instancias, traduciéndose en procesos de backend y el diseño frontend, así como en otros elementos que componen el sistema informático en sí y que son parte de la lista de requerimientos o requisitos establecidos. De la diversidad de aspectos que debe analizar el QA, podríamos concretar los siguientes:

  • Comprender y establecer de manera específica los contenidos, procesos e instancias, así como las métricas de calidad de tales elementos utilizados para generar un producto final óptimo.
  • Se encarga de testear las aplicaciones que se desarrollan en una determinada entidad comprobando el cumplimiento de los requerimientos de usuario y por otro lado el que no se produzcan errores o fallos en su uso.
  • También es el encargado de verificar que las diferentes funcionalidades que se van integrando o añadiendo y que no produzcan errores que puedan interrumpir el funcionamiento de una aplicación en producción.
  • La prevención de errores, es quizás la tarea más importante ya que logra disminuir los costos y aumentar los beneficios a los equipos de desarrollo, así como al cliente.
  • Definir estrategias de “feedback“ para la detección de errores que se producen debido a cambios o que no fueron detectados anteriormente.
  • Determinar los casos de pruebas posibles.

Esto permite objetivos más concretos a lograr, tanto desde el punto de vista del cliente como tecnológicamente hablando, mejorando la interrelación entre la parte técnica y el “workflow” junto a las reglas del negocio, validando criterios de aceptación propios de los procesos y subprocesos coexistentes en el sistema. Debido a todo esto el QA debe estar presente desde las instancias iniciales de desarrollo como las entrevistas y solicitudes de requisitos del cliente, el análisis, diseño y por obvias razones en el proceso de desarrollo del producto.

Pruebas QA

Las pruebas o “testing” pueden ser manuales o automatizadas y se pueden clasificar en:

  • Unitarias: que busca comprobar módulos y errores de código especifico.
  • De integración: luego del acoplamiento de una nueva sección del programa.
  • De validación: que se centra en las interfaces o visualizaciones del sistema.
  • De sistema: con la que mide métricas propias de seguridad, resistencia, rendimiento y recuperación de errores de usuario.
  • De carga: para cuantificar la cantidad de usuarios deseados o tolerados.
  • De aceptación: que mide el nivel de satisfacción del usuario final.

El profesional QA debe tener conocimientos en herramientas de testing, que irán en consonancia con el “stack” en el que se ha desarrollado una determinada plataforma o app, así como de metodologías para la implementación de pruebas manuales. Todo dependerá del análisis que el QA realice para determinar cuál estrategia será la más eficaz, la más rápida e incluso la más económica. Con respecto a herramientas para pruebas automatizadas tenemos por ejemplo a Postman, Selenium, Jenkins, JUnit, entre otras herramientas que permiten la ya mencionada evaluación.

Si te interesa incursionar en el manejo de herramientas testing, puedes acceder al curso que OpenWebinars ha creado para lograr dicho objetivo: Curso de Java QA con el cual podrás aprender a realizar pruebas usando JUnit, Mockito, Karate entre otras dependencias.

Por otro lado, podríamos enfrascarnos en que si los tipos de testing deberían ser manuales o automatizados; y aunque el segundo puede ser más eficiente y concreto, siempre encontraremos desventajas sobre las pruebas automatizadas:

  • Ventajas en pruebas automatizadas
    • Menor costo de mano de obra.
    • Mayor homogeneidad en resultados.
    • Eliminación de trabajos rutinarios.
    • Fiabilidad técnica en procesos / operaciones.
    • Mayor competitividad para el cliente.
    • Mayor optimización e implementación de análisis.
    • Mejor calidad de producto.
  • Desventajas en pruebas automatizadas
    • Lentitud y difícil adaptación de procesos.
    • Necesidad de mayor especialización del personal.
    • Mayor costo en inversión de equipos para procesos de verificación.

Con respecto a las pruebas manuales la rapidez de adaptación a los procesos de validación, menor necesidad de especialización en el personal a cargo de las pruebas y un menor costo de equipos que intervienen en dichas pruebas llegan a ser factores valorados en el mercado, pero inevitablemente los procesos automatizados cada vez tienen mayor demanda. Esto se debe a que los equipos de desarrollo en general mantienen una constante capacitación con respecto a las tendencias metodológicas y de implementación tecnológica, lo que incide directamente en la forma de evaluar o probar dicho software.

Un test automatizado va a probar siempre lo mismo, no explora cosas que no referenciamos. Los errores más grandes los va a encontrar rápidamente, pero los que no está hallando pueden ser potencialmente peligrosos. Por eso es bueno tener un enfoque combinado: realizar testing automático, pero también testing manual, con la idea de que, como ya se ha mencionado, siempre puede contener algún “bug”.

Para comprender un poco más sobre los procesos de pruebas automatizadas, puedes revisar los Cursos de Testing, que OpenWebinars ha preparado para ti.

Importancia del QA en el desarrollo de software

Según Mark Buenen, Director Global de Digital Assurance and Quality Engineering, del Grupo Capgemini, líder mundial en servicios de consultoría, transformación digital, tecnología e ingeniería, refiriéndose a la necesidad de los procesos QA en el mundo del desarrollo de aplicaciones y software, mencionó lo siguiente:

“La pandemia ha reforzado la importancia de la agilidad para las organizaciones de todos los sectores, y a medida que las TI se modernizan y los entornos se trasladan a la nube para permitir la agilidad, las empresas son cada vez más conscientes de la relevancia y el valor del aseguramiento de la calidad. Como resultado, estamos viendo un aumento de la inversión en esta área, particularmente en aquellas tecnologías que permitirán la Industria Inteligente”.

Esto sumado a todos los campos en los cuales la incidencia tecnológica es cada vez mayor tales como el área automotriz, los productos de consumo junto con su venta y distribución, la energía como servicio público, los servicios financieros, la salud, la tecnología, el sector público, las telecomunicaciones y el entretenimiento, entre mucho otros, hacen del QA y sus metodologías, algo indispensable en el mundo del software dedicado y aplicado a la sociedad moderna.

Por otro lado, el QWR (Reporte de Calidad Mundial), anima a centrarse en “los resultados comerciales y a mejorar la experiencia del usuario final así como el nuevo enfoque que se le da debido a la necesidad de mejorar la calidad de los servicios informáticos“. El informe destaca los siguientes puntos clave:

  • Centrarse en lo que importa. Haciendo hincapié en la experiencia del cliente y en los objetivos empresariales al enfocarse en la calidad de producción.

  • Estandarizar el uso de la automatización de pruebas en QA y utilizarla de principio a fin. Un enfoque que priorice a la automatización en la entrega de la calidad del software debería ser la norma en todas las actividades de control de calidad.

  • Dejar de hablar de IA y ML, y empezar a hacer. Se espera que las tecnologías inteligentes transformen la ingeniería de calidad.

  • Enfatizar en la disponibilidad de entornos y datos de prueba. La inversión en soluciones de disponibilidad de entornos y datos en tiempo real debe seguir siendo un foco dentro de la estrategia organizativa.

  • Conseguir que la dirección apoye las iniciativas de la industria inteligente.

Vale la pena destacar “el tan esperado aumento del positivismo en el mundo del Aseguramiento de la Calidad (QA)“. Basándose en la “aceleración de la transformación de la calidad“ que es visible en todos los ámbitos de la sociedad actual, lo cual contribuye directamente a la resiliencia mostrada por los equipos de TI y de Calidad frente a la crisis de COVID - 19 en todo el mundo, llegando a explotar los “soft skills” dentro del análisis, diseño y obviamente desarrollo de herramientas digitales como por ejemplo la empatía.

El siguiente cuadro perteneciente al QWR, categoriza los beneficios de realizar test automatizados lo cual aporta a la importancia de procesos QA como una etapa a considerar en la formulación de una aplicación o plataforma digital:

Imagen 1 en Qué es QA y su importancia en la actualidadSi hablamos del ámbito en el que se maneja un QA hoy en día y sus tendencias para este 2022 en el mercado digital, vemos como se ha vuelto un papel crítico y relevante, ya que como nunca antes, su aplicación se ha diversificado ampliamente, colocando al QA en una posición importante dentro del mercado de desarrollo de software:

  • Agile y DevOps: La agilidad es el futuro del desarrollo y las pruebas de software. Esto ha tenido un impacto positivo en el proceso de testing en general, facilitando a los testers que puedan crear y ejecutar más pruebas.

  • Inteligencia artificial y Machine Learning: La IA continúa cambiando la forma en que se implementa la automatización de pruebas y cómo se ejecutan las pruebas. Existe un deseo creciente entre las organizaciones de dar un buen uso a las técnicas de inteligencia artificial y machine learning en sus procesos de control de calidad.

  • Automatización de Pruebas más confiables y complejas: Según el WQR, el enfoque de automatizaciónen la entrega de calidad del software, debería ser hoy la norma en todas las actividades contempladas dentro del proceso de control de calidad.

  • Big Data Testing: Con el aumento explosivo de data generada por usuarios y dispositivos, las empresas necesitan almacenar estos datos para que sean analizadas, tal es el caso de mejoras en las estrategias comerciales y las tácticas de marketing. Al tomar decisiones es imperativo tener seguridad en que dichos datos no fallaran tanto en su recopilación como en su procesamiento.

  • Automatización Robótica de Procesos (RPA): Cada vez los procesos robóticos (RPA) mejoran los flujos de trabajo y reducen costos. El futuro incluye la integración de chatbots y procesamiento de lenguaje natural (NLP) en asistentes virtuales, lo que podría ayudar a los testers a completar tareas básicas como los casos de prueba.

  • Mejora de habilidades y el surgimiento del rol de SDET: Para cubrir la necesidad de desarrollar nuevas habilidades a más miembros del equipo y de las pruebas de software, una nueva tendencia que está creciendo rápidamente es el Ingeniero de desarrollo de software en pruebas, también conocido como SDET (Software Development Engineer in Test), por sus siglas en inglés.

  • Detección temprana de incidentes: Hoy en día es esencial involucrar al equipo de control de calidad al comienzo del ciclo de vida del desarrollo del software (SDLC). Así, cuanto antes se detecten los incidentes, menor será el costo de corregirlos y el costo total de la calidad.

  • Automatización de pruebas de API y Servicios: Cuando la API y los servicios se utilizan en las aplicaciones y componentes, probarlos es más eficaz y eficiente que probar con el cliente. La tendencia es que la necesidad de automatización de pruebas de API y servicios continúe aumentando, posiblemente superando la funcionalidad utilizada por los usuarios finales en las interfaces de usuario.

  • Codeless Automation: En la actualidad las empresas buscan obtener el máximo rendimiento en poco tiempo. Esto abre las puertas a la automatización de pruebas sin necesidad de código para testers de software. Estas herramientas se han construido con inteligencia artificial y facilitan ejecutar casos de prueba rápidamente, ahorrando tiempo, sino también recursos.

  • QAOps: A medida que los equipos de control de calidad tradicionales se expanden para satisfacer la creciente demanda de servicios de testing, deben estar más alineados con el proceso de desarrollo para acelerar los tiempos de entrega. Esto requiere la coordinación de pruebas automatizadas y manuales a escala. La forma más óptima de hacerlo es implementando QAOps.

  • Ciberseguridad: En la industria de testing, el aspecto de ciberseguridad ha estado ganando terreno tanto para el control de calidad como para los testers. Con la ayuda del “Risk Compliance“ o cumplimiento de riesgos se mejora la seguridad previa al inicio del ciclo de desarrollo del software. El mayor beneficio es que ayuda a comprender los “gaps“ o vacíos que se pueden abordar antes de que los ciberdelincuentes actúen.

  • Centros de excelencia de Testing (TCoE): Centros que reúnen todos los recursos necesarios (desarrolladores, testers, herramientas de automatización y clientes) en un solo lugar donde todos pueden trabajar juntos. Usualmente, las pruebas se dejan a cargo de los testers para que las ejecuten, por lo que estos deben comprender cómo funciona el proceso y qué deben probar.

Conclusión

Como se ha analizado, QA es todo un mundo de metodologías y procesos que buscan de manera continua, garantizar la calidad de un producto digital, lo cual ha hecho de este paradigma, una etapa crucial dentro del ciclo de vida de un software. El apoyo de todo el equipo del proyecto será crucial, sobre todo una buena comunicación. Sin importar el campo de acción, el objetivo es el mismo: hacer de una herramienta TI, parte esencial de un usuario mejorando su vida, y que mejor, si viene acompañado de calidad.

Compartir este post

También te puede interesar

Icono de la tecnología
Taller

Testing en Python

Intermedio
50 min.

En este taller veremos como hacer testing en Python para asegurarte de que tienes una aplicación robusta.

Juan Benito Pacheco Rubio
4.3
Icono de la tecnología
Curso

Curso de testing con BDD

Intermedio
2 h. y 15 min.

Aprende con este curso de testing con BDD todos los fundamentos de este paradigma y cómo integrarlo en...

Miguel Alejandro Esteban Ordoñez
4.3