1 research outputs found

    Optimization Techniques for Automated Software Test Data Generation

    Get PDF
    Esta tesis propone una variedad de contribuciones al campo de pruebas evolutivas. Hemos abarcados un amplio rango de aspectos relativos a las pruebas de programas: c贸digo fuente procedimental y orientado a objetos, paradigmas estructural y funcional, problemas mono-objetivo y multi-objetivo, casos de prueba aislados y secuencias de pruebas, y trabajos te贸ricos y experimentales. En relaci贸n a los an谩lisis llevados a cabo, hemos puesto 茅nfasis en el an谩lisis estad铆stico de los resultados para evaluar la significancia pr谩ctica de los resultados. En resumen, las principales contribuciones de la tesis son: Definici贸n de una nueva medida de distancia para el operador instanceof en programas orientados a objetos: En este trabajo nos hemos centrado en un aspecto relacionado con el software orientado a objetos, la herencia, para proponer algunos enfoques que pueden ayudar a guiar la b煤squeda de datos de prueba en el contexto de las pruebas evolutivas. En particular, hemos propuesto una medida de distancia para computar la distancia de ramas en presencia del operador instanceof en programas Java. Tambi茅n hemos propuesto dos operadores de mutaci贸n que modifican las soluciones candidatas basadas en la medida de distancia definida. Definici贸n de una nueva medida de complejidad llamada ``Branch Coverage Expectation'': En este trabajo nos enfrentamos a la complejidad de pruebas desde un punto de vista original: un programa es m谩s complejo si es m谩s dif铆cil de probar de forma autom谩tica. Consecuentemente, definimos la ``Branch Coverage Expectation'' para proporcionar conocimiento sobre la dificultad de probar programas. La fundaci贸n de esta medida se basa en el modelo de Markov del programa. El modelo de Markov proporciona fundamentos te贸ricos. El an谩lisis de esta medida indica que est谩 m谩s correlacionada con la cobertura de rama que las otras medidas de c贸digo est谩ticas. Esto significa que esto es un buen modo de estimar la dificultad de probar un programa. Predicci贸n te贸rica del n煤mero de casos de prueba necesarios para cubrir un porcentaje concreto de un programa: Nuestro modelo de Markov del programa puede ser usado para proporcionar una estimaci贸n del n煤mero de casos de prueba necesarios para cubrir un porcentaje concreto del programa. Hemos comparado nuestra predicci贸n te贸rica con la media de las ejecuciones reales de un generador de datos de prueba. Este modelo puede ayudar a predecir la evoluci贸n de la fase de pruebas, la cual consecuentemente puede ahorrar tiempo y coste del proyecto completo. Esta predicci贸n te贸rica podr铆a ser tambi茅n muy 煤til para determinar el porcentaje del programa cubierto dados un n煤mero de casos de prueba. Propuesta de enfoques para resolver el problema de generaci贸n de datos de prueba multi-objetivo: En ese cap铆tulo estudiamos el problema de la generaci贸n multi-objetivo con el fin de analizar el rendimiento de un enfoque directo multi-objetivo frente a la aplicaci贸n de un algoritmo mono-objetivo seguido de una selecci贸n de casos de prueba. Hemos evaluado cuatro algoritmos multi-objetivo (MOCell, NSGA-II, SPEA2, y PAES) y dos algoritmos mono-objetivo (GA y ES), y dos algoritmos aleatorios. En t茅rminos de convergencia hac铆a el frente de Pareto 贸ptimo, GA y MOCell han sido los mejores resolutores en nuestra comparaci贸n. Queremos destacar que el enfoque mono-objetivo, donde se ataca cada rama por separado, es m谩s efectivo cuando el programa tiene un grado de anidamiento alto. Comparativa de diferentes estrategias de priorizaci贸n en l铆neas de productos y 谩rboles de clasificaci贸n: En el contexto de pruebas funcionales hemos tratado el tema de la priorizaci贸n de casos de prueba con dos representaciones diferentes, modelos de caracter铆sticas que representan l铆neas de productos software y 谩rboles de clasificaci贸n. Hemos comparado cinco enfoques relativos al m茅todo de clasificaci贸n con 谩rboles y dos relativos a l铆neas de productos, cuatro de ellos propuestos por nosotros. Los resultados nos indican que las propuestas para ambas representaciones basadas en un algoritmo gen茅tico son mejores que el resto en la mayor铆a de escenarios experimentales, es la mejor opci贸n cuando tenemos restricciones de tiempo o coste. Definici贸n de la extensi贸n del m茅todo de clasificaci贸n con 谩rbol para la generaci贸n de secuencias de pruebas: Hemos definido formalmente esta extensi贸n para la generaci贸n de secuencias de pruebas que puede ser 煤til para la industria y para la comunidad investigadora. Sus beneficios son claros ya que indudablemente el coste de situar el artefacto bajo pruebas en el siguiente estado no es necesario, a la vez que reducimos significativamente el tama帽o de la secuencia utilizando t茅cnicas metaheur铆sticas. Particularmente nuestra propuesta basada en colonias de hormigas es el mejor algoritmo de la comparativa, siendo el 煤nico algoritmo que alcanza la cobertura m谩xima para todos los modelos y tipos de cobertura. Exploraci贸n del efecto de diferentes estrategias de seeding en el c谩lculo de frentes de Pareto 贸ptimos en l铆neas de productos: Estudiamos el comportamiento de algoritmos cl谩sicos multi-objetivo evolutivos aplicados a las pruebas por pares de l铆neas de productos. El grupo de algoritmos fue seleccionado para cubrir una amplia y diversa gama de t茅cnicas. Nuestra evaluaci贸n indica claramente que las estrategias de seeding ayudan al proceso de b煤squeda de forma determinante. Cuanta m谩s informaci贸n se disponga para crear esta poblaci贸n inicial, mejores ser谩n los resultados obtenidos. Adem谩s, gracias al uso de t茅cnicas multi-objetivo podemos proporcionar un conjunto de pruebas adecuado mayor o menor, en resumen, que mejor se adapte a sus restricciones econ贸micas o tecnol贸gicas. Propuesta de t茅cnica exacta para la computaci贸n del frente de Pareto 贸ptimo en l铆neas de productos software: Hemos propuesto un enfoque exacto para este c谩lculo en el caso multi-objetivo con cobertura paiwise. Definimos un programa lineal 0-1 y un algoritmo basado en resolutores SAT para obtener el frente de Pareto verdadero. La evaluaci贸n de los resultados nos indica que, a pesar de ser un fant谩stico m茅todo para el c谩lculo de soluciones 贸ptimas, tiene el inconveniente de la escalabilidad, ya que para modelos grandes el tiempo de ejecuci贸n sube considerablemente. Tras realizar un estudio de correlaciones, confirmamos nuestras sospechas, existe una alta correlaci贸n entre el tiempo de ejecuci贸n y el n煤mero de productos denotado por el modelo de caracter铆sticas del programa
    corecore