Pasar al contenido principal

Pruebas exitosas de QA y reporte de errores

Dentro del flujo de trabajo de desarrollo web que seguimos en Metadrop, uno de los pasos cruciales es la revisión de la calidad de las tareas implementadas. Este proceso tiene como objetivo detectar posibles errores o bugs para poder corregirlos antes de que el trabajo llegue al cliente para su validación y posterior puesta en producción.

Este paso, conocido como control de calidad - QA, a menudo puede ser subestimado, pero es de vital importancia si queremos optimizar nuestro flujo de trabajo. Su correcta realización evita problemas futuros en el entorno de producción y desempeña un papel fundamental en la generación de confianza en el cliente. Al reducir de manera significativa las posibilidades de encontrar errores durante el desarrollo, el QA se convierte en un elemento esencial para garantizar la calidad y el éxito del proyecto. En Metadrop, reconocemos y valoramos la relevancia de este proceso, y nos esforzamos por llevarlo a cabo de manera rigurosa y exhaustiva.

¿Por qué es necesario?

  • Reducción de regresiones: Al detectar y corregir errores antes de la validación del cliente, se evita la necesidad de realizar cambios posteriores, lo que genera una sensación de solidez y confianza en el producto.
  • Mayor seguridad y confianza: El QA ayuda a identificar y solucionar posibles vulnerabilidades, mejorando la seguridad y la solidez de la página web.
  • Detección de mejoras en el código: El QA no se limita únicamente a la búsqueda y corrección de errores, sino que también permite identificar oportunidades de mejora en el código.
  • Prevenir la propagación de errores: Al realizar el QA de forma rigurosa, se evita que errores y bugs se propaguen durante el proceso de desarrollo y afecten a nuevas tareas.
  • Agilidad en el proceso de desarrollo: El flujo de trabajo se mantiene constante, sin retrocesos innecesarios, lo que resulta en un proceso más ordenado y eficiente.
  • Ahorro de tiempo y costes: Al prevenir la necesidad de rehacer tareas, se optimiza el tiempo de desarrollo y se evitan gastos adicionales.
  • Promoción de la mejora continua: El QA fomenta una filosofía de mejora y optimización constante del producto, impulsando la evolución y el crecimiento.

¿Cómo realizarlo?

En esta sección, veremos una guía detallada que aborda la realización óptima del QA, basada en la experiencia acumulada a lo largo del tiempo en el campo del control de calidad.

Antes de comenzar

Para iniciar el proceso de control de calidad, es fundamental que la tarjeta del tablero esté previamente documentada de manera adecuada, incluyendo en su descripción dos secciones esenciales que permitan la verificación eficiente de los cambios realizados:

Criterios de aceptación

Es esencial tener unos criterios de aceptación definidos y completos antes de la fase de desarrollo. Estos criterios establecen los objetivos y requisitos específicos para considerar una implementación exitosa de cada tarjeta del proyecto. Sirven como guía para evaluar y validar el cumplimiento de expectativas, estándares de calidad y satisfacción del cliente. También son utilizados por el equipo de QA para confirmar la adecuada implementación de la tarjeta.

Testing details

El desarrollador proporcionará una documentación valiosa que servirá como guía para el responsable de realizar el control de calidad. Esta documentación brinda la información necesaria para llevar a cabo el proceso de QA de manera efectiva. Podemos clasificarla en los siguientes puntos:

  • Contenido multimedia como capturas de pantalla o videos en los que se visualice el comportamiento tras las nuevas funcionalidades o cambios implementados. Existen herramientas como Peek que permite capturar un video de la pantalla.
  • Enlaces relevantes para facilitar el seguimiento de los pasos del testing.
  • Enlaces al diseño o capturas del mismo.
  • Código o comandos relevantes.
  • Enlaces a la Pull Request para que se revisen los cambios a nivel de código si es necesario.

Como en Metadrop mantenemos altos estándares en cuanto a la documentación de las tarjetas, si detectamos que falta información, devolvemos la tarjeta al responsable de la implementación para que la complemente.

El proceso de QA

Para presentar de manera más clara el flujo del proceso de QA disponemos del siguiente esquema que sintetiza los pasos que debemos seguir:

Si se ha validado, se acepta y se fusiona la Pull Request y la tarea sigue adelante, y en caso contrario tras describir los errores se asigna de nuevo a su autor para que realice las correcciones pertinentes.

Aspectos importantes a revisar

Funcionamiento general del sitio

Es importante verificar que el sitio web funcione correctamente después de realizar cambios importantes durante la implementación. Esto incluye revisar que no haya errores o bugs en las páginas principales y en la visualización de diferentes contenidos, la cabecera y el pie de página.

Si el sitio web permite crear, leer, actualizar y eliminar contenido (CRUD), se debe prestar atención a estas funciones. Incluso si no se cuenta con herramientas de testing como Behat, se puede realizar una revisión manual para asegurarse de que todas las operaciones de CRUD funcionen correctamente.

Usuarios y permisos

Es esencial comprobar los permisos y acciones de diferentes usuarios en el sitio web. Esto implica probar las funcionalidades desde la perspectiva de diferentes roles de usuario, como administrador, usuario registrado o usuario anónimo, según corresponda. Se debe verificar que cada tipo de usuario tenga acceso y pueda realizar las acciones adecuadas de acuerdo con su rol.

Casos extremos

A la hora de realizar un QA completo, no solo debemos dejarnos guiar por la información proporcionada en la tarjeta, sino que también tenemos que realizar una comprobación de los casos más extremos que impliquen a la funcionalidad desarrollada.

Para ello, hay que buscar la manera de romper la funcionalidad implementada buscando los errores más imprevisibles que se pueden generar. Esta es una buena práctica que puede ayudar a anticiparnos a posibles regresiones generadas por errores muy concretos.

Funcionamiento en los distintos entornos

Si disponemos de entornos remotos, es recomendable utilizarlos para realizar pruebas adicionales en lugar de depender únicamente del entorno local del encargado del QA. Los entornos remotos ofrecen la ventaja de cubrir casos más cercanos a la realidad. Por ejemplo, el entorno de preproducción replica el entorno de producción y permite realizar pruebas más realistas antes de implementarlas en producción. Al utilizar estos entornos remotos, podemos obtener resultados más precisos y garantizar un mejor funcionamiento del sitio web en situaciones reales.

Navegadores y dispositivos

En ciertas tareas será recomendable comprobar el funcionamiento en diferentes dispositivos y navegadores para garantizar su compatibilidad. Esto implica realizar pruebas en una variedad de dispositivos físicos y navegadores principales, o utilizar herramientas como Browserstack que nos permiten comprobar de manera virtual el funcionamiento del software en distintos dispositivos y navegadores.

Captura de pantalla del menú de opciones de browserstack

 

Como dispositivos principales y para comprobar el funcionamiento responsive disponemos de los siguientes modos de visualización y navegadores principales:

Herramientas de autotesting

En nuestro caso, utilizamos Behat y BackstopJS como herramientas de autotesting para optimizar nuestro proceso de control de calidad. Estas herramientas son valiosas para identificar regresiones y reportar errores en las tareas antes de que el responsable del QA comience con el testing manual.

Behat es una herramienta de testing que permite cubrir escenarios de acciones realizadas por usuarios en la web. Proporciona una forma estructurada de definir y ejecutar pruebas automatizadas, lo que mejora la eficiencia del proceso de control de calidad. Por otro lado, BackstopJS es un framework que ayuda a detectar regresiones visuales en la apariencia de un sitio web. Utilizando capturas de pantalla, compara el estado actual de la web con versiones anteriores y resalta cualquier diferencia visual que pueda haber surgido como resultado de cambios recientes.

La implementación de pruebas automáticas con estas herramientas permite una detección temprana de errores, ya que los tests se ejecutan automáticamente en cada iteración de desarrollo. Esto ayuda a identificar problemas rápidamente y reducir el tiempo dedicado al testing manual. Además, las pruebas automatizadas son consistentes y repetibles, lo que garantiza una cobertura más amplia y exhaustiva de las funcionalidades del sitio web. Al mantener los tests actualizados con cada cambio introducido, se logra una cobertura válida y se evita la introducción de nuevos errores.

Por ello, el uso de herramientas de autotesting brinda la posibilidad de realizar pruebas automáticas que cubren tanto acciones funcionales como aspectos visuales. Esto agiliza el proceso de QA, reduce el tiempo dedicado al testing manual y mejora la calidad y consistencia del producto final.

Ejecución de un job de test que reporta un error en BackstopJS

Estado de Needs work

Cuando una tarjeta pasa al estado de Needs work, se produce una regresión y se devuelve al autor del desarrollo para que realice los cambios necesarios. Esto puede ocurrir debido a diferentes motivos, como una documentación incompleta para el QA, funcionalidad que no cumple con los criterios definidos o la presencia de errores y bugs durante el desarrollo.

El responsable del QA tiene la tarea de informar adecuadamente sobre los problemas que impidieron que la tarea superara la revisión, con el objetivo de evitar futuras agresiones y el rebote de la tarjeta entre diferentes estados del flujo de trabajo. Para lograr esto, el responsable del QA puede proporcionar la siguiente documentación, adaptada según el motivo específico:

La documentación está incompleta:

  • Descripción detallada de los aspectos que faltan en la documentación.
  • Sugerencias para mejorar la documentación y hacerla más completa.

La funcionalidad no cumple con los criterios definidos:

  • Descripción específica de las discrepancias entre la funcionalidad implementada y los criterios definidos.
  • Ejemplos claros que demuestren cómo la funcionalidad no se ajusta a los requisitos.

Se están generando errores o bugs debido al desarrollo:

  • Capturas de pantalla o videos que muestren los errores en acción.
  • Descripción detallada de los pasos para reproducir los errores.
  • Informe de errores de consola relevantes.

Es prioritario atender las tareas que no han superado el QA, especialmente aquellas que ya están en desarrollo y podrían haberse fusionado en ramas principales. Esto previene la propagación de errores no detectados y garantiza una mayor calidad del producto final al mantener el flujo de trabajo sin interrupciones.

Conclusiones

En Metadrop, reconocemos el QA como un elemento fundamental en el proceso de desarrollo, ya que entendemos que al implementarlo de manera adecuada, podemos agilizar el resto de los procesos involucrados. Siempre nos esforzamos por transmitir el valor del QA y mejorar los procedimientos y herramientas que utilizamos en este sentido.

A lo largo de mi experiencia personal, he aprendido de primera mano la importancia del QA al presenciar cómo en numerosas ocasiones esta práctica nos ha beneficiado significativamente, permitiéndonos optimizar tiempo y esfuerzo en el desarrollo de proyectos.

El QA es un elemento esencial en el desarrollo de software. Su implementación adecuada nos permite obtener productos de mayor calidad, ahorrar tiempo y esfuerzo, aumentar la eficiencia y lograr una mayor satisfacción del cliente. En Metadrop, valoramos y perfeccionamos constantemente nuestros procedimientos y herramientas de QA para garantizar los mejores resultados en nuestros proyectos.
 

Alberto Fernández Gálvez

Alberto Fernández

Drupal developer