Este documento propone un algoritmo híbrido basado en programación lineal entera para construir conjuntos priorizados de productos de prueba para líneas de productos de software. El algoritmo maximiza la cobertura ponderada de pares de características cubiertas mientras minimiza el número de productos de prueba. Los experimentos muestran que el enfoque propuesto es más efectivo que métodos existentes para conjuntos de productos pequeños y medianos. El trabajo futuro incluye encontrar la frontera de Pareto exacta y estudiar el crecimiento de variables y restric
Aplicando Programación Lineal Entera a la Búsqueda de Conjuntos de Productos de Prueba Priorizados para Líneas de Productos Software
1. 1 of 17
•Haga clic para modificar el estilo de subtítulo del patrón
Ajhsia
JISBD 2016
Aplicando Programación Lineal Entera a la
Búsqueda de Conjuntos de Productos de Prueba
Priorizados para Líneas de Productos Software
Javier Ferrer Francisco Chicano Roberto López-Herrejón Enrique Alba
ferrer@lcc.uma.es chicano@lcc.uma.es roberto.lopezherrejon@gmail.com eat@lcc.uma.es
2. 2 of 17JISBD 2016 2/20
Contenidos
3
Líneas de Productos
Priorización en las Pruebas
Algoritmos basado en Programación Lineal Entera
Experimentos y Resultados
Conclusiones
1
2
5
4
3. 3 of 17JISBD 2016 3/20
•Una línea de productos (LP) es una familia de productos
desarrollados a partir de un conjunto de características:
•Los productos tienen características similares
•Los productos tienen características únicas
•Utilizar LPs tiene muchas ventajas:
•Personalización rápida
•Incrementa la reutilización
•Reducción tiempo a mercado
Líneas de Productos
4. 4 of 17JISBD 2016 4/20
•Cuando el producto es Software hablamos de Software Product
Lines (SPLs)
•Se modelan usando modelos de características (Feature Models)
•Las SPLs tienen un alto número de productos
•Probar todos los productos no es viable!!
Líneas de Productos Software
1.900.544
productos
5. 5 of 17JISBD 2016 5/20
•Desafío:
•¿Cómo probar las líneas de productos software
eficientemente?
•Factores importantes a considerar:
•Evitar la repetición de pruebas
•Ceñirse a las restricciones de coste y tiempo
•Técnicas usadas:
•Priorización: Probar primero aquellos productos con
características importantes o costosas
•Pruebas Combinatorias de Interacción: Al menos un
producto tiene que cubrir cada par, trio,…de características.
Líneas de Productos Software II
6. 6 of 17JISBD 2016 6/20
Modelos de Características
•Modelos de Características son el estándar de facto para
modelar las características comunes y variables de un
sistema y sus relaciones
raiz
obligatoria
opcional
Or-inclusiva
Or-exclusiva
8. 8 of 17JISBD 2016 8/20
Productos Válidos
•Ejemplos de productos válidos:
•Aircraft, Wing, Engine, Materials, High, Shoulder, Low,
Piston, Jet, Metal, Wood, Plastic, Cloth
•Criterio de Cobertura Pairwise: Cada par de valores debe
estar presente en al menos un producto de la test suite
9. 9 of 17JISBD 2016 9/20
Productos y Pares Priorizados
•Producto priorizado: Debe ser un producto válido con un
peso asignado.
•Pares priorizados: Su prioridad es calculada según el peso
los productos dónde aparecen.
17
17
15
15
13
13
6
6
pc1=[{Plastic},{Cloth}]
Peso par= pp0.w + pp2.w = 17 + 15 = 32
pesos
10. 10 of 17JISBD 2016 10/20
Problema de Optimización
•El problema es encontrar un conjunto de productos que:
•Cubran todos los pares de características válidas (restricción)
•Se maximice la cobertura ponderada (objetivo)
•Se minimice el nº de productos a probar (objetivo)
ZipMe
Compress Extract Checksum Adapt GZIP ArchCheck CRC
✔ ✔ ✔ ✔ ✔
✔ ✔ ✔
✔ ✔ ✔ ✔
✔ ✔ ✔ ✔
✔ ✔ ✔
✔ ✔ ✔ ✔
1
2
3
4
5
6
64 productos
11. 11 of 17JISBD 2016 11/20
Algoritmo basado en Programación Lineal Entera
APLE es un algoritmo ávido que genera el siguiente producto que nos
proporcione más cobertura ponderada.
Transformamos nuestro problema inicial en un programa lineal entero
• 𝑥𝑗: 𝑆𝑖 𝑙𝑎 𝑐𝑎𝑟𝑎𝑐𝑡𝑒𝑟í𝑠𝑡𝑖𝑐𝑎 𝑗 𝑎𝑝𝑎𝑟𝑒𝑐𝑒 𝑒𝑛 𝑒𝑙 𝑠𝑖𝑔𝑢𝑖𝑒𝑛𝑡𝑒 𝑝𝑟𝑜𝑑𝑢𝑐𝑡𝑜
• 𝑣𝑗: 𝑆𝑖 𝑙𝑎 𝑐𝑎𝑟𝑎𝑐𝑡𝑒𝑟í𝑠𝑡𝑖𝑐𝑎 𝑗 𝑎𝑝𝑎𝑟𝑒𝑐𝑒 𝑒𝑛 𝑙𝑎 𝑐𝑙𝑎𝑢𝑠𝑢𝑙𝑎
• 𝑢𝑗: 𝑆𝑖 𝑙𝑎 𝑐𝑎𝑟𝑎𝑐𝑡𝑒𝑟í𝑠𝑡𝑖𝑐𝑎 𝑗 𝑎𝑝𝑎𝑟𝑒𝑐𝑒 𝑛𝑒𝑔𝑎𝑑𝑎 𝑒𝑛 𝑙𝑎 𝑐𝑙𝑎𝑢𝑠𝑢𝑙𝑎
𝑗=1
𝑓
𝑣𝑗 𝑢𝑗 1 − 𝑥𝑗 + 1 − 𝑢𝑗 𝑥𝑗 ≥ 1.
•Ejemplo: 𝑃𝑖𝑠𝑡𝑜𝑛 𝐽𝑒𝑡 ->𝑥7 + (1 − 𝑥8) ≥ 1
•𝑐𝑗,𝑘, 𝑐𝑗,𝑘, 𝑐𝑗, 𝑘, 𝑐𝑗, 𝑘: Si el par j, k se cubre en el nuevo producto
2𝑐𝑗, 𝑘 ≤ 1 − 𝑥𝑗 + 1 − 𝑥 𝑘 ,
2𝑐𝑗,𝑘 ≤ 1 − 𝑥𝑗 + 𝑥 𝑘,
2𝑐𝑗, 𝑘 ≤ 𝑥𝑗 + 1 − 𝑥 𝑘 ,
2𝑐𝑗,𝑘 ≤ xj + xk.
Función objetivo:
max 𝑓𝑐 =
𝑗,𝑘 ∈𝑈
𝑤𝑗,𝑘 𝑐𝑗,𝑘
12. 12 of 17JISBD 2016 12/20
•Algoritmo ávido que en cada iteración busca el próximo
producto que maximice la cobertura respecto a la test suite
actual.
Entrada: FM y U (conjunto de pares con peso > 0)
Salida: ppCA (lista de productos)
1: ppCA<- []
2: while U != vacío do
3: z<- generaProducto (sujeto a restricciones)
4: ppCA<-ppCA + z
5: U<- U/cubiertos (z)
6: end while
Algoritmo APLE
13. 13 of 17JISBD 2016 13/20
•Comparamos frente a:
•Prioritized ICPL (pICPL) propuesto por Johansen 2012
•Prioritized PGS (PPGS) nuestra propuesta en Gecco’14
•Tres esquemas de asignación de prioridades:
•Valores medidos
•Valores basados en rango
•Valores aleatorios
•Diferentes porcentajes de productos seleccionados
•Entre 5% y 50% de productos usados
Experimentos
14. 14 of 17JISBD 2016 14/20
1. Valores medidos
• 16 ejemplos reales SPL
• Código y feature model
disponibles
• Se miden propiedades no
funcionales (ej: footprint)
2. Basados en rango
• Cómo de diferentes son
dos productos entre si
• Cuanto más diferentes,
más probabilidad de
cubrir nuevos pares
3. Valores Aleatorios
• [Min..Max] rango
Métodos de Asignación de Prioridades
15. 15 of 17JISBD 2016 15/20
Instancias
Instancias G1 = 160 fm X 2 asignaciones prioridades X 3 porcentajes = 960
Instancias G2 = 59 fm X 2 asignaciones prioridades X 3 porcentajes = 354
Instancias G3 = 16 fm X 1 prioridades asignación = 16
Total independent runs = 1.330 X 2 algorithms x 30 indep. runs + 1.330= 81.130
G1 G2 G3 Resumen
Número de Feature Models 160 59 16 235
Número de Productos 16-1K 1K-80K 32-≈1E20 16-≈1E20
Número de Características 10-56 14-67 6-101 6-101
Método de asignación:
RB Basado en rango, RD Aleatorio,
M Medidos
RK,RD RK,RD M
Porcentaje de productos usados 20,30,50 5,10,20 ≈0.0 - 100
Número de instancias 960 354 16 1330
16. 16 of 17JISBD 2016 16/20
•G1: Menos de 1.000 productos
•En 7 ocasiones APLE es mejor que los otros dos algoritmos
Resultados: Kruskal-wallis
17. 17 of 17JISBD 2016 17/20
•G1: Menos de 1.000 productos
•En 7 ocasiones APLE es mejor que los otros dos algoritmos
•G2: Entre 1.000 y 80.000 productos
•APLE y PPGS siempre mejores que pICPL
Resultados: Kruskal-wallis
18. 18 of 17JISBD 2016 18/20
•G1: Menos de 1.000 productos
•En 7 ocasiones APLE es mejor que los otros dos algoritmos
•G2: Entre 1.000 y 80.000 productos
•APLE y PPGS siempre mejores que pICPL
•G3: Entre 32 a 3E24 productos
•APLE y PPGS similares en calidad pero…
•APLE mejor en tiempo de computación
Resultados: Kruskal-wallis
19. 19 of 17JISBD 2016 19/20
•Â12 mide la importancia de la diferencia
•Â12=0,3 significa que un algoritmo A obtendría valores
menores que un algoritmo B para una medida M el 70% de
las veces.
Resultados: Estadístico Â12
APLE vs pICPL
APLE vs PPGS
20. 20 of 17JISBD 2016 20/20
Conclusiones y Trabajo Futuro
Contribuciones:
Proponemos un algoritmo hibrido (ávido + resolutor ILP) para
construir conjuntos de pruebas ordenados por prioridad
Resultados:
Nuestro enfoque basado en ILP es mejor en calidad de la solución
y en tiempo de ejecución.
Trabajo Futuro:
Frente de Pareto exacto para este problema
Estudio del crecimiento de variables y restricciones para la
construcción de test suites completas
21. 21 of 17JISBD 2016 21/20
Gracias por su atención
Javier Ferrer: ferrer@lcc.uma.es
http://neo.lcc.uma.es/
Aplicando Programación Lineal Entera a la
Búsqueda de Conjuntos de Productos de Prueba
Priorizados para Líneas de Productos Software
FINAL
Notas del editor
Frequently, software testers are faced with situations in which there is not enough time for testing, since the software under test must be finished on time for the release date not to be delayed. Hence, software testers have to deal with limited resources, unfinished systems, and not much time to test the software. If this is the case, the prioritization of test cases is a technique for re-ordering of tests to find faults in early stages.
Asumiendo que cada funcionalidad o característica ha sido probada aisladamente, la mayoría de los defectos es debido a la interacción entre funcionalidades o características. Reducimos el nº de productos a probar, pero mantenemos una gran capacidad de detección de errores.
Esta representación nos da la posibilidad de representar gran cantidad de variantes de productos de forma muy resumida.
Salvo la raiz, todas las características tienen un padre y pueden tener varios hijos. Para que un hijo pueda seleccionarse, le padre debe estar seleccionado. Ej: Engine
Recordar que la ausencia en el producto de dos characterísiticas también es una combinación que debe estar contemplada.
Cubran todos los pares de características válidas (CIT)
Se prueben primero los productos con más prioridad
Se minimice el nº de productos a probar
También incluimos las variables c de j,k que estan aún por cubrir. Si a ese conjunto le llamamos U, la función objetivo es…
Esquemas o métodos de asignación de prioridades
Explicar los colores grises:
Gris claro diferencia con otro algoritmo, gris oscuro indica que hay diferencias con los otros dos algoritmos. Estas diferencias son positivas para el algoritmo que marcamos diferente, los resultados son mejores, en este caso con un valor de tamaño o tiempo más pequeño.
Nuestra principal contribución es la combinación de un algoritmo greedy con un resolutor ILP para la construcción de conjuntos de pruebas ordenados por prioridad.
Trabajo futuro:
Nuestro enfoque no nos proporciona el óptimo, ya que para ello tendríamos que calcular la mejor test suite para cada tamaño utilizando la cobertura ponderada. Y por otro lado, ya estamos investigando la posibilidad de aplicar los resolutores ILP para contruir test suites completas. Los resultados preliminares nos dicen que la aplicación directa no es posible por la explosión combinatoria al subir mucho el nº de características. Y queremos ver hasta donde podemos llegar, buscar siempre el límite de la técnica.