Software Testing

En la actualidad las pruebas siguen siendo el talón de Aquiles en la mayoría de los proyectos de desarrollo e implementación de Software. Al construir un Software es muy habitual cometer errores, y la manera de solventar esos fallos son las pruebas de software. Por tanto, las pruebas no son opcionales, sino una parte fundamental en cualquier proyecto.

¿Qué es el Software Testing?

Las pruebas de sistema Software o Software Testing es un proceso para evaluar las propiedades del sistema y así determinar si los resultados reales coinciden con los resultados esperados. Consiste en realizar una serie de pasos antes y después de la construcción del software para conseguir identificar errores, brechas o inexactitudes con el fin de obtener un mejor producto y poder ofrecer una mayor calidad.

Para realizar estas pruebas debemos partir con la premisa de que nuestro software tiene errores, porque así tendremos una mayor probabilidad de encontrarlos. El principal objetivo no va a ser demostrar que funciona, si no aportar un valor añadido a lo que estamos probando para elevar la calidad y fiabilidad; A fin de conseguirlo debemos detectar los fallos y eliminarlos.

¿Qué es un tester de software?

Los probadores de software también conocidos como tester son los encargados de planificar y llevar a cabo las pruebas de los sistemas para identificar el riesgo de sufrir errores y detectarlos. Es decir, evalúan el funcionamiento general del software y sugieren cómo mejorarlo.

Los tester suelen probar todo tipo de software o programas individuales para aplicaciones o productos. Pueden estar involucrados en el desarrollo de un nuevo programa, probar nuevas versiones de algún software o realizar un control rutinario de productos.

Entre las cualidades que se piden a estos probadores de software podemos destacar: importante habilidades de TIC, capacidad de trabajo bajo presión, pensamiento lógico, capacidad de planificación, buenas dotes de comunicación y redacción de informes, o trabajo en equipo.

Metodología

Para llevar a cabo las pruebas es necesario verificar el comportamiento del programa. Según Ilene Burnstein, el Software Testing tiene tres procesos principales: el desarrollo de los casos de pruebas, la ejecución de estos casos y el análisis de los resultados.

Este proceso de pruebas, y su metodología, siempre debe adaptarse a la evolución de los metodologías de los proyectos: Waterfall o Agile.

  • Desarrollo de casos de prueba. Los casos de prueba se producen mediante técnicas y estrategias específicas de pruebas para buscar los errores de un sistema.
  • Ejecución de los casos de prueba. Una vez desarrollados los casos de prueba que hemos determinado pertinentes, y el software o la aplicación esté instalada en un entorno de pruebas, es el momento de que el tester los ejecute.
  • Análisis de los resultados. Al analizar los resultados encontraremos los diferentes errores que presenta el software y podremos realizar un informe para solventar dichos problemas.

Importancia del Software Testing

En la actualidad multitud de sistemas que contienen software forman parte de nuestro día a día. Las empresas dependen en gran medida de ellos, ya sea por el sistema de finanzas de dicha corporación o por la maquinaria que utiliza. Un fallo en el software puede traer pérdidas millonarias a niveles económicos o incluso personales. De ahí la importancia del Test Software, para anticiparnos a los errores, corregirlos y evitar las pérdidas que pueden ocasionarnos.

Un claro ejemplo de cómo puede llegar a afectar un error de este tipo es el caso de Therac 25, una máquina de radioterapia producida por la Atomic Energy of Canada Limited (AECL). Este aparato fue el causante de producir grandes daños a personas y la muerte de otras tres por la sobredosis masiva de radiación. Esta sobredosis fue causada por un mal diseño del software. Si se hubieran realizado las pruebas de sistema de Software pertinentes quizás se hubiera podido evitar esta tragedia.

Niveles de pruebas

Las pruebas de software se clasifican en tres categorías: funcionales, no funcionales y estructurales.

  1. Pruebas funcionales. Estas pruebas se basan en lo que hace el sistema. Entre las pruebas a realizar se encuentran: pruebas unitarias, pruebas de integración, pruebas funcionales, UAT o aceptación del usuario, localización, globalización e interoperabilidad.
  2. Pruebas no funcionales o de rendimiento. En este tipo de pruebas se tiene en cuenta el comportamiento externo del software; cómo funciona. Se suelen utilizar técnicas de diseño de caja negra. Entre las características a considerar dentro de estas pruebas se encuentran: actuación, rendimiento, carga, volumen, esfuerzo, usabilidad, seguridad o compatibilidad.
  3. Pruebas estructurales. Permiten medir la totalidad de las pruebas mediante la evaluación de tipo estructura. Se aplican técnicas de diseño de caja blanca y se centran en los detalles procedimentales del software, su diseño está ligado al código fuente. Su principal objetivo es comprobar los flujos de ejecución dentro de cada unidad. Entre las pruebas a realizar se encuentran las de regresión y mantenimiento.

Tipos de pruebas de sistema software

En cuanto a tipos de pruebas aclarar que hay más de 150, y que se siguen agregando nuevas pruebas continuamente. También aclarar todos los proyectos no necesitan aplicar todas estas pruebas, dependerá de la naturaleza y el alcance del proyecto.

Entre la larga lista hemos destacado algunas pruebas de sistema de software.

  • Prueba activa. Consiste en introducir datos de prueba y analizar los resultados de la ejecución.
  • Pruebas de accesibilidad. Determina la utilidad del producto para personas con discapacidades (sordas, ciegas, discapacidad mental…)
  • Prueba de carga. Medición del comportamiento del sistema para aumentar la carga del mismo mediante número de peticiones o usuarios.
  • Pruebas de volumen. Mide la capacidad del sistema para procesar una gran cantidad de datos.
  • Pruebas de seguridad. Diferentes pruebas de acceso no autorizados o ataque de denegación del servicio.
  • Pruebas de compatibilidad. Se mide el funcionamiento del sistema con diferentes sistemas operativos, plataformas, etc.
  • Pruebas de conformidad. Comprueba que una implementación se ajusta a las especificaciones en las que se basa.

Programar sin Software Testing puede ser muy arriesgado porque nos exponemos a un elevado número de pérdidas tanto económicas como personales. Las pruebas de sistema Software son las encargadas de mejorar el producto para ofrecer una mayor calidad y satisfacción al consumidor final.