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.
- 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.