Test case prioritization in highly-configurable systems
Ana Belén Sánchez Jerez · Dialnet (Universidad de la Rioja) · 2016
Los sistemas software altamente configurables proporcionan una funcionalidad basica comun y un conjunto de caracteristicas opcionales para adaptar todas las variantes de un sistema de acuerdo a un conjunto determinado de requisitos. Sistemas operativos como Linux (con mas de 37,000 paquetes) o herramientas de desarrollo como Eclipse (con mas de 3,000 plugins) han sido presentados como ejemplos de sistemas altamente configurables. Las pruebas en sistemas software altamente configurables suponen un gran reto debido al elevado numero de configuraciones que deben probarse. Por ejemplo, linux con mas de 37,000 paquetes puede dar lugar a miles de millones de configuraciones diferentes. Esto hace que probar cada configuracion individual de un sistema altamente configurable sea demasiado costoso. Para paliar este problema, se han propuesto numerosos trabajos de investigacion para reducir el espacio de pruebas a un subconjunto razonable y representativo de configuraciones a probar. Sin embargo, incluso reduciendo el espacio de pruebas, el numero de configurationes resultante puede seguir siendo demasiado grande y costoso para llevar a cabo las pruebas. En esta tesis, se aborda el problema anteriormente mencionado utilizando priorizacion de casos de prueba para sistemas altamente configurables. Las tecnicas de priorizacion de casos de prueba ordenan las pruebas de manera que se ejecuten primero aquellas que permitan maximizar un determinado objetivo de rendimiento, normalmente, detectar errores lo antes posible. La priorizacion de casos de prueba ayuda a mejorar la efectividad del proceso de pruebas permitiendo un feedback mas rapido a los ingenieros del software y asegurando que las pruebas con mayor capacidad de detectar errores habran sido ejecutadas si el proceso se parase por alguna circunstancia. La priorizacion de pruebas en sistemas software altamente configurables puede guiarse por diferentes objetivos funcionales y no funcionales, entendiendose un objetivo como el criterio de ordenacion elegido para acelerar la detection de errores. Los objetivos de priorizacion funcionales son aquellos basados en caracteristicas funcionales del sistema y sus interacciones. Los objetivos no funcionales consideran informacion extra-funcional tales como las preferencias de usuario. En esta tesis se presentan un conjunto de objetivos, tecnicas y herramientas para la priorizacion de casos de prueba en sistemas altamente configurables. En concreto, se definen 6 objetivos basados en propiedades funcionales y 7 objetivos basados en propiedades no funcionales del sistema para guiar el proceso de pruebas. Estos objetivos se evaluan utilizando datos reales extraidos de los repositiorios Git y sistemas de gestion de errores de sistemas altamente configurables, reforzando asi la validez de nuestras conclusiones. Con respecto a las tecnicas de priorizacion de pruebas, se presentan propuestas basadas en un solo objetivo y basadas en multiples objetivos utilizando algoritmos evolutivos. Adicionalmente, se presenta una comparacion de 63 combinaciones diferentes de 1, 2 y 3 objetivos con la intencion de encontrar las mejores combinaciones para accelerar la deteccion de errores en un sistema altamente configurable. Ademas, proponemos un caso de estudio basado en un sistema real altamente configurable con mas de 2,000 millones de configuraciones para evaluar y validar las tecnicas de pruebas. Estas contribuciones han sido evaluadas realizando rigurosos experimentos que han revalado la eficacia y efficiancia de nuestra propuesta. Parte de nuestras contribuciones se han integrado en una herramienta denominada SmarTest para llevar acabo las pruebas en Drupal. Drupal es un sistema de gestion de contenidos web y framework ampliamente conocido. SmarTest es un modulo de pruebas para Drupal que permite analizar el sistema y proporcionar al ingeniero de calidad informacion relevante de Drupal que le permita guiar mejor el proceso de pruebas. Ademas, SmarTest tambien permite aplicar diferentes tecnicas de priorizacion para detectar antes los errores en Drupal.