En el desarrollo de todo software informático es propenso que haya errores en el código que provoquen un mal funcionamiento del proyecto. Cuando estos errores no son detectados a tiempo provocan que los tiempos de desarrollo aumenten ocasionando un sobrecoste económico, un impacto sobre la gestión del proyecto y una degradación de la imagen de la compañía si los errores llegan al producto final. Aún así, la ausencia de errores es una quimera, ya que hay múltiples factores que  influyen en el desarrollo.El objetivo de un Tester es detectar todos los errores y minimizarlos. Para evitar que los errores lleguen al usuario, se deben realizar una serie de pruebas que cumplan con las especificaciones del cliente. Estas pruebas son investigaciones técnicas que permiten obtener una información objetiva del estado del software.

Normalmente, para llevar a cabo el Quality Assurance de un proyecto se crea un guión de pruebas. En este conjunto de tests se debe realizar un estudio previo del proyecto y resaltar los puntos más propensos a contener errores, así el equipo profesional de testers puede realizar pruebas especificas de estrés y robustez en esos puntos concretos.

El método más usado durante el desarrollo deberían ser las Pruebas Unitarias. La realización de estas pruebas consiste en analizar el código en pequeñas porciones desarrolladas, para así demostrar que esas partes están libres de errores. Las Pruebas Unitarias permiten a su vez tener una visión más clara de la refactorización del código y tener la documentación actualizada.  Un método menos detallado, pero igual de efectivo, es el Test Exploratorio. Estas pruebas se podría decir que se hacen sobre la marcha. El tester tiene libertad para navegar por el software, de esta forma se crean casos de uso con combinaciones que no se habían diseñado previamente. El objetivo principal es conocer como se comporta el sistema en situaciones reales que un usuario podría llevar a cabo. Con los diferentes sets de pruebas que se han diseñado se pueden crear tests automatizados, de forma que se puedan hacer varias rondas de forma autónoma para revisar tests regresivos al modificar parte del software. Los beneficios que aporta la automatización son la rapidez de ejecución, la fiabilidad y la repetición. El factor negativo es que al no haber interacción humana la usabilidad no es analizada.

Toda empresa debería disponer de un plan de Quality Assurance con los siguientes procedimientos:

  • Pruebas unitarias: Tal como hemos definido, consiste en evaluar cada módulo por separado.
  • Test de integración: Si las pruebas unitarias han sido positivas se testea todo el conjunto unido.
  • Pruebas de stress: Consiste en intentar colapsar el sistema mediante el envío excesivo de peticiones.
  • Test de aceptación: El usuario verifica que el software cumple con las especificaciones iniciales.

Para la realización de todas las pruebas es necesario disponer de un entorno de Test que sea el más parecido al real. Al usar un entorno no-real se pueden realizar pruebas específicas que abarquen todos los escenarios posibles sin impactar en los usuarios. Una práctica que se acostumbra a realizar y que ayuda a detectar problemas con las conexiones con el servidor es tener un Backend en un entorno de pre-producción, así se pueden enviar nulls, campos vacíos y simular caídas del servidor sin que los usuarios que están usando el sistema en producción se vean afectados.

Las claves para un uso correcto de los procesos del Quality Assurance es disponer de un compromiso por parte de todos los departamentos involucrados en el proceso de desarrollo de disponer del software necesario a evaluar, acceso a los datos de prueba para la ejecución de las pruebas que los requieran, documentar los diferentes resultados, crear la métricas necesarias para ver la calidad del software durante todo el desarrollo.

Un elemento importante es el uso de herramientas que ayuden en la detección de los errores durante el proceso de QA.  Aunque cada tester puede preferir unas herramientas a otras, entre la mayoría destacan las siguientes:

  • Selenium: Utilidad para realizar pruebas funcionales.
  • Jira: Una de las mejores posibilidades que ofrece es el tracking de los errores.
  • Funkload: Herramienta para pruebas de stress.
  • QTest: Suites completas de testing.

Autor: Albert Pujol, I. T. Project Manager en Slashmobility

Recommended Posts

Leave a Comment