Objetivo 3: Fundamentos de pruebas de software y técnicas de pruebas
En las últimas dos entradas hemos mostrado la relevancia de los sistemas a través de su diseño y estructuración, ¿pero qué tan importante es para un software cumplir con determinadas pruebas a la hora de su uso? Antes de comercializar cualquier producto, es indispensable haber cumplido con una serie de pruebas y procesos al pie de la letra que verifiquen el funcionamiento del software, esto con la finalidad de brindar la mejor experiencia al usuario sin arrojar ningún tipo de complicaciones ni problemas a la hora de ser ejecutado el sistema.
Para cumplir con lo anteriormente mostrado, se aplica lo llamado pruebas de software, lo cual se define como un conjunto de procesos con los que se pretende probar un sistema o aplicación en diferentes momentos para comprobar su correcto funcionamiento. Dichas pruebas de software pueden llevarse a cabo en cualquier parte del desarrollo del mismo, pues siempre es recomendable hacer pruebas para evitar posibles errores; esto, a su vez, nos permite tener control de cuándo queremos ejecutarlas o no, ya que algo que caracteriza a las pruebas de software es que pueden ser automáticas o no, es decir, pueden ejecutarse indefinidamente siempre que así lo permita el tester.
Debido a la relevancia de las pruebas de software en la creación de sistemas eficientes, se ha vuelto más complejo el proceso de prueba en los últimos años. En los procesos de prueba de software básicos, se comprende la planificación y el control de pruebas, análisis y diseño de pruebas, implementación y ejecución de pruebas, evaluación de criterios de salida y elaboración de informes, y actividades de cierre de prueba. El “test process”, denominado así en ingles, debe ser meticulosamente llevado a cabo, teniendo presente parámetros como los siguientes definidos a continuación:
Defecto (defect, fault, bug), el cual es el resultado de un fallo o deficiencia durante el proceso de creación de programas de ordenador o computadora u otro dispositivo. Por ejemplo, un proceso, una definición de datos o un paso de procesamiento incorrectos en un programa.
Falla (failure), el cual puede presentarse en cualquiera de las etapas del ciclo de vida del software aunque los más evidentes se dan en la etapa de desarrollo y programación. Es la incapacidad de un sistema o de alguno de sus componentes para realizar las funciones requeridas dentro de los requisitos de rendimiento especificados.
Error (error), el cual es una equivocación cometida por un desarrollador. Algunos ejemplos de errores son: un error de tipeo, una malinterpretación de un requerimiento o de la funcionalidad de un método, una acción humana que conduce a un resultado incorrecto. Por ejemplo: Divisiones entre cero. Es una tipo de manifestación del defecto en el sistema que se ejecuta. Datos de prueba (test dates): el cual son un conjunto de entradas, condiciones de ejecución y resultados esperados desarrollados para un objetivo particular, un caso de prueba es utilizado por el analista para determinar si el requisito de una aplicación es parcial o completamente satisfactorio.
Verificación, la cual es el proceso a través del cual se analiza y revisa que el software satisfaga los objetivos propuestos al inicio del desarrollo.
Validación, que se define como el proceso de evaluación de un sistema o de uno de sus componentes durante o al final del proceso de desarrollo para determinar si satisface los requisitos marcados por el usuario.
Procesos de Pruebas (test), las cuales son actividades en la cual un sistema o uno de sus componentes se ejecutan para verificar el funcionamiento de un proceso, los resultados se observan y registran para realizar una evolución de dicho proceso.
Referente a la programación una prueba de software, en inglés testing son los procesos que permiten verificar y revelar la calidad de un producto software. Son utilizadas para identificar posibles fallos de implementación.
Luego de profundizar los fundamentos de procesos de pruebas, es necesario conocer acerca de las técnicas de pruebas más comunes e implementadas a menudo, debido a que son importantes al llevar a cabo una prueba de software con total éxito. El objetivo de las pruebas es la detección de defectos en el software, ya que descubrir un error es el éxito de una prueba.
Existen 3 técnicas de pruebas de software que son las más usadas como un enfoque principal a llevar a cabo. Éstas son las siguientes mencionadas a continuación:
Pruebas de Caja Blanca: Se denomina cajas blancas a un tipo de pruebas de software que se realiza sobre las funciones internas de un módulo. Las pruebas de caja blanca están dirigidas a las funciones internas.
Entre las técnicas usadas se encuentran:
La cobertura de caminos (pruebas que hagan que se recorran todos los posibles caminos de ejecución).
Pruebas sobre las expresiones lógico-aritméticas.
Pruebas de camino de datos (definición-uso de variables).
Comprobación de bucles (se verifican los bucles para 0,1 y n iteraciones, y luego para las iteraciones máximas, máximas menos uno y más uno).
Pruebas de Caja Negra: Se centra en las funciones, entradas y salidas. Se centra en las funciones, entradas y salidas. Intenta encontrar errores de las siguientes categorías:
Funciones Incorrecta o ausente.
Errores de Interfaz.
Errores en estructuras de datos o acceso a base de datos externas.
Errores de rendimiento.
Errores de inicialización y de terminación.
Pruebas Aleatorias: En las pruebas aleatorias simulamos la entrada habitual del programa creando datos de entrada en la secuencia y con la frecuencia con las que podrían aparecer en la Práctica (de manera repetitiva). Para ello habitualmente se utilizan generadores automáticos de casos de prueba. Consiste en utilizar modelos (en muchas ocasiones estadísticos) que representen las posibles entradas al programa para crear a partir de ellos los casos de prueba.






















