Técnicas combinatorias y de mutación para testing de sistemas software

Técnicas combinatorias y de mutación para testing de sistemas software

técnicas de optimización de casos de prueba

Las pruebas de mutación (o análisis de mutación o mutación de programas) se utilizan para diseñar nuevas pruebas de software y evaluar la calidad de las existentes. Las pruebas de mutación implican la modificación de un programa en pequeños aspectos[1]. Cada versión mutada se denomina mutante y las pruebas detectan y rechazan los mutantes haciendo que el comportamiento de la versión original difiera del mutante. Esto se llama matar al mutante. Los conjuntos de pruebas se miden por el porcentaje de mutantes que matan. Se pueden diseñar nuevas pruebas para eliminar otros mutantes. Los mutantes se basan en operadores de mutación bien definidos que imitan errores típicos de programación (como el uso de un operador o un nombre de variable erróneo) o que obligan a crear pruebas valiosas (como dividir cada expresión por cero). El objetivo es ayudar al probador a desarrollar pruebas eficaces o a localizar puntos débiles en los datos de prueba utilizados para el programa o en secciones del código a las que rara vez o nunca se accede durante la ejecución. Las pruebas de mutación son una forma de pruebas de caja blanca[2][3].

optimización de las pruebas

Las pruebas de mutación proponen la creación de variaciones del software sometido a prueba con el fin de demostrar que estas variaciones no son correctas, por lo que, por eliminación, se puede comprobar que el programa original es correcto. Estas comprobaciones se realizan a partir de la ejecución de las pruebas unitarias existentes. Teniendo esto en cuenta, podemos considerar las pruebas de mutación como una técnica para ayudar en el proceso de mejora de los casos de prueba, haciéndolos más eficientes, así como para mejorar o garantizar su calidad. Hay que tener en cuenta que las pruebas de mutación son una técnica de caja blanca.

Las pruebas de mutación funcionan de la siguiente manera: Los operadores de mutación se utilizan sobre el código original haciendo pequeños cambios en ellos, con el fin de generar unas variaciones llamadas mutantes, de ahí el nombre dado a la técnica. Una vez generados los mutantes, se utilizan las pruebas originales sobre los mutantes generados, si estos mutantes fallan los casos de prueba se considerarán mutantes «muertos», si algún mutante no falla se considera un mutante «sobrevivido» y esto es una indicación de que las pruebas necesitan ser revisadas o analizadas, haciendo que estas pruebas sean más eficientes después del análisis y las correcciones.

herramientas de optimización de casos de prueba

¿Qué grado de exhaustividad tienen sus pruebas? ¿Puede proporcionar una medida cuantitativa defendible? Se trata de preguntas de vital importancia para los sistemas de misión crítica, pero muy difíciles de responder con confianza, especialmente si las pruebas han sido producidas por desarrolladores de pruebas de terceros.

Métodos de medición derivados de las pruebas combinatorias que pueden utilizarse para analizar la exhaustividad de un conjunto de pruebas, basándose en características del conjunto de pruebas independientes de su cobertura del código ejecutable. La eficacia de cualquier técnica de pruebas de software depende de que se incluyan en los conjuntos de pruebas los ajustes correspondientes a los fallos reales. Si los conjuntos de pruebas no incluyen las configuraciones correspondientes a los fallos reales, éstos no se detectarán. Por el contrario, podemos estar seguros de que el software funciona correctamente para las combinaciones de entrada contenidas en las pruebas superadas.

Cualquier conjunto de pruebas, construido como matriz de cobertura o no, contiene un gran número de combinaciones. Por lo tanto, la medición de la cobertura combinatoria, es decir, la cobertura de las combinaciones de t-way en un conjunto de pruebas, puede proporcionar información valiosa sobre la calidad del conjunto de pruebas.    La cobertura combinatoria presenta una serie de ventajas para evaluar la calidad de las pruebas:

unos buenos datos de prueba pueden reducir

La ingeniería de software basada en la búsqueda (SBSE) aplica técnicas de búsqueda metaheurísticas como los algoritmos genéticos, el recocido simulado y la búsqueda tabú a los problemas de ingeniería de software. Muchas actividades de la ingeniería del software pueden plantearse como problemas de optimización. Las técnicas de optimización de la investigación operativa, como la programación lineal o la programación dinámica, suelen ser poco prácticas para los problemas de ingeniería de software a gran escala debido a su complejidad computacional o a sus supuestos sobre la estructura del problema. Los investigadores y profesionales utilizan técnicas de búsqueda metaheurística, que imponen pocas suposiciones sobre la estructura del problema, para encontrar soluciones casi óptimas o «suficientemente buenas».

La SBSE convierte un problema de ingeniería de software en un problema de búsqueda computacional que puede abordarse con una metaheurística. Esto implica definir un espacio de búsqueda, o el conjunto de soluciones posibles. Este espacio suele ser demasiado grande para ser explorado exhaustivamente, lo que sugiere un enfoque metaheurístico. A continuación, se utiliza una métrica [2] (también llamada función de aptitud, función de coste, función objetivo o medida de calidad) para medir la calidad de las posibles soluciones. Muchos problemas de ingeniería de software pueden reformularse como un problema de búsqueda computacional[3].

Support-help2web

El equipo de Support-help2web publica un amplio contenido sobre informática, noticias y artículos de interés sobre proyectos electrónicos.

Esta web utiliza cookies propias para su correcto funcionamiento. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos.Más información
Privacidad