Este documento describe el uso de algoritmos bioinspirados como algoritmos genéticos y optimización por colonia de hormigas para generar secuencias de pruebas funcionales que maximicen la cobertura de clases y transiciones en un sistema bajo prueba. Los experimentos muestran que estas técnicas bioinspiradas generan secuencias de pruebas con una cobertura significativamente mayor que un algoritmo voraz, especialmente para sistemas más complejos. El trabajo futuro incluye explorar criterios de cobertura más avanzados y priorizar clases
Generación de secuencias de pruebas funcionales con algorithmos bio-inspirados
1. 1 of 17
•Haga clic para modificar el estilo de subtítulo del patrón
Ajhsia
MAEB 2013
Generación de Secuencias de Pruebas
Funcionales con Algoritmos Bio-inspirados
Javier Ferrer Peter M. Kruse Enrique Alba Francisco Chicano
ferrer@lcc.uma.es peter.kruse@berner-matter.com eat@lcc.uma.es chicano@lcc.uma.es
2. 2 of 17MAEB 2013 2/25
Contenidos
3
Introducción
Problema de la Secuencia de Pruebas
Algoritmos de Resolución
Experimentos
Conclusiones
1
2
5
Introducción
Sistemas de Alta Variabilidad
Generador de Escenarios de Test
Validación Experimental
Conclusiones
4
3. 3 of 17MAEB 2013 3/25
•Necesidad de la fase de pruebas
•Alrededor del 50% del presupuesto total
•Automatización de la fase de pruebas
•Generación datos + salida (oráculo)
•No hay recursos para pruebas exhaustivas -> Tamaño
Introducción
1,0;
2,3 1,0; 2,3
10,5¡Good!
2,7; 5,4
¡Error! 2,7; 5,4
15,1
4. 4 of 17MAEB 2013 4/25
•Combinatorial Interaction Testing es …
•Un técnica para pruebas funcionales (black box)
•Efectiva para detectar fallos causado por interacciones de
parámetros.
•Se identifican los aspectos más
relevantes (parámetros) y se definen
sus correspondientes clases
(valores de los parámetros)
•Un caso de prueba es un conjunto de n valores, uno por
cada parámetro
Introducción: Combinatorial Interaction Testing
5. 5 of 17MAEB 2013 5/25
•Pruebas tradicionales: Casos de prueba independientes
•Secuencias de Pruebas: Estado del SUT (Software Under Test)
•Objetivo: Probar los todos los estados y transiciones
Introducción: Secuencias de Pruebas
Aceleración
(40 Km/h)
Girar y
Acelerar
(100 Km/h)
Frenar
(ABS)
Fallo!
6. 6 of 17MAEB 2013 6/25
•Classification Tree Method: identificar casos de prueba para
pruebas funcionales. Diseño del árbol + casos de prueba
•Extensión CTM: Añadir transiciones entre clases
•Secuencia de pruebas: lista ordenada de casos de prueba
con el objetivo de probar toda la funcionalidad.
Problema Secuencia de Pruebas: CTM
7. 7 of 17MAEB 2013 7/25
•Cobertura de Clases: Todas las clases deben estar
presentes en la secuencia
Problema Secuencia de Pruebas: Cobertura
8. 8 of 17MAEB 2013 8/25
•Cobertura de Clases: Todas las clases deben estar
presentes en la secuencia
•Cobertura de Transiciones: Todas las transiciones posibles
deben ser tomadas
Problema Secuencia de Pruebas: Cobertura
9. 9 of 17MAEB 2013 9/25
Algoritmos de Resolución
• Generación automática de test suites
• Herramienta Real: CTE XL Proffessional
10. 10 of 17MAEB 2013 10/25
•Individuo: Representa la transición seleccionada
•Evaluación:
•Parte del estado inicial (startingGame, running)
•Consume transiciones del vector
Generador Genético de Secuencias de Pruebas
1 1 1 2 2 5 2 1 3 1
12. 12 of 17MAEB 2013 12/25
•Modificaciones:
•Nos interesa el camino completo
•No tenemos nodos finales, todos son objetivos
•Heurística:
•Selecciona una candidata del conjunto de las disponibles
•Guía la búsqueda hacia regiones inexploradas
Generador de Secuencias con ACO
Valor: 90
Valor: 120
14. 14 of 17MAEB 2013 14/25
Experimentos: Resultados Cobertura Clases
Programa GA ACO Voraz
Keyboard 2 2 2
Microwave 8* 8* 9
Autoradio 13,30* 14 13*
Citizen 39,47* 36** 47
Coffee Machine 9 9 9
Communication 7 7 7
Elevator 6 6 6
Tetris 12* 12* 15
Mealy Moore 5 5 5
Fuel Control 5 5 5
Transmission 4 4 4
Aircraft 4 (86,20%) 4 (86,20%) 4 (86,20%)
*Diferencia significativa con el peor resultado
**Diferencia significativa con los otros dos resultados
15. 15 of 17MAEB 2013 15/25
Experimentos: Cobertura Clases Vs Tamaño
16. 16 of 17MAEB 2013 16/25
Experimentos: Resultados Cobertura Transiciones
Programa GA ACO Voraz
Keyboard 5 5 5
Microwave 17 17 17
Autoradio 36,30 36 36
Citizen 75,27 (99,90%) 64,17 51(92,70%)
Coffee Machine 19 19 18**
Communication 16* 16* 17
Elevator 9 9 9
Tetris 31 31 31
Mealy Moore 24 24 24
Fuel Control 11* 11* 12
Transmission 9 9 9
Aircraft 7 (2) 7 (2) 7 (2)
*Diferencia significativa con el peor resultado
**Diferencia significativa con los otros dos resultados
17. 17 of 17MAEB 2013 17/25
Experimentos: Cobertura Transiciones Vs Tamaño
18. 18 of 17MAEB 2013 18/25
Conclusiones y Trabajo Futuro
Introducción
Sistemas de Alta Variabilidad
Generador de Escenarios de Test
Validación Experimental
Conclusiones
Contribuciones:
Extendemos el CTM para posibilitar la generación de secuencias
Experimentamos con 12 modelos de programas y 3 algoritmos
con cobertura de clases y transiciones.
Resultados:
Las técnicas bio-inspiradas son significativamente mejores,
especialmente en el programa más complejo.
El ACO es el mejor algoritmo de la comparación
Trabajo Futuro:
Criterios de cobertura t-wise t≥2 para secuencias.
Aplicar prioridades a las clases del modelo.
Explorar algoritmos de trayectoria como Simulated Annealing.
19. 19 of 17MAEB 2013 19/25
Gracias por su atención
Javier Ferrer: ferrer@lcc.uma.es
http://neo.lcc.uma.es/
Generación de Secuencias de Pruebas
Funcionales con Algoritmos Bio-inspirados
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.
El enfoque CIT intent encontrar el conjunto minimo de pruebas que consiga la cobertura deseada
Combinatorial Interaction Testing (CIT) is a
black box sampling technique to complement traditional testing methods.
CIT provides a practical way to detect failures caused by parameter interactions with a good trade-off between cost and efficiency.
This technique provides a natural mechanism for testing systems to be deployed on a variety of hardware and software configurations.
De hecho, en sistemas software grandes, el coste derivado de situar al programa en cierto estado puede ser importante. Por ejemplo, probar el sistema ABS de un vehículo requiere
que este alcance cierta velocidad. En este caso, tiene sentido considerar la generación de secuencias de pruebas que nos permitan probar una funcionalidad (aceleración del vehículo) mientras que modificamos el estado del SUT (considerando las dependencias entre casos de prueba). El ahorro implícito de usar esta técnica es la razón por la cual la generación de secuencias es relevante y merece mas esfuerzo de investigaciónon
Se usa para la identificación de casos de prueba. En esta técnica ayudados por un expert en el dominio, debemos definer el árbol y a continuación ya podríamos generar los casos de prueba.
Para diseñar el árbol se tienen en cuenta los aspectos de interés o clasificaciones (representadas en rectángulos) y estas a su vez se subdividen en clases, o valores de las clasificaciones (son las que no están contenidas en un rectángulo). Nótese que las clases se pueden seguir refinando en nuevas clasificaciones.
Un caso de prueba se define como una combinación de clases de diferentes clasificaciones, teniendo en cuenta que no se pueden seleccionar dos clases “hermanas”.
En este ejemplo un caso de prueba sería seleccionar “startup y running”
Dada una secuencia de pruebas denimos la cobertura de clases como el numero de clases no repetidas que aparecen en los casos de prueba de una secuencia dividida por el total de clases del modelo ECTM
Explicar cómo funcionan las transiciones y las clases iniciales.
Definimos la cobertura de transiciones como el numerous de transiciones no repetidas efectuadas frente al numero total de transiciones posibles en el ECTM. El problema que estamos interesados en solucionar consiste en encontrar un conjunto de secuencias tales que la cobertura (clases o transiciones) sea maximizada y la longitud de la secuencia sea minimizada.
Al llegar aki: 7‘, 5‘15, 5
We have used the Classification Tree Method that is a technique for black box testing.
Its main advantage is that this techinique is independent of test domain, test level or test object.
Aplying the classificatin tree method implies two stages; the first one is the design of the classification tree. The tree represents the test object. This task must be done by the tester guided by the specification of the system.
The second stage is the costly generation of tests, nevertheless this generation could be automated for reducing costs. In this work we focus on this second stage.
In addition, in order to make the work useful, we have worked with the restrictions and constraints impose by a professional tool called CTE XL. All the algorithms introduced in this work can be integrated in this particular tool, and some of them are already integrated.
Explicar cómo funcionan las transiciones y las clases iniciales.
Definimos la cobertura de transiciones como el numerous de transiciones no repetidas efectuadas frente al numero total de transiciones posibles en el ECTM. El problema que estamos interesados en solucionar consiste en encontrar un conjunto de secuencias tales que la cobertura (clases o transiciones) sea maximizada y la longitud de la secuencia sea minimizada.
Explicar cómo funcionan las transiciones y las clases iniciales.
Definimos la cobertura de transiciones como el numerous de transiciones no repetidas efectuadas frente al numero total de transiciones posibles en el ECTM. El problema que estamos interesados en solucionar consiste en encontrar un conjunto de secuencias tales que la cobertura (clases o transiciones) sea maximizada y la longitud de la secuencia sea minimizada.
Explicar como va la función heurística:
- Se añade a la cola la clase o transición candidata.
Si no se ha cubierto, se suma cierto valor arbitrario.
Se añaden las clases o transiciones hijas y se decrementa el peso, ya que estas están un paso más lejos.
Se procede de esta forma hasta que se hayan evaluado todas las posibles transiciones, a partir de esa candidata.
Esta heurística tiene un mecanismo para no caer en un bucle, ya que recuerda las clases o transiciones ya valoradas.
Decir que esos valores se obtienen si ninguna clase se ha cubierto ya, sino serían valores diferentes
Explicar como va la función heurística:
- Se añade a la cola la clase o transición candidata.
Si no se ha cubierto, se suma cierto valor arbitrario.
Se añaden las clases o transiciones hijas y se decrementa el peso, ya que estas están un paso más lejos.
Se procede de esta forma hasta que se hayan evaluado todas las posibles transiciones, a partir de esa candidata.
Esta heurística tiene un mecanismo para no caer en un bucle, ya que recuerda las clases o transiciones ya valoradas.
Decir que esos valores se obtienen si ninguna clase se ha cubierto ya, sino serían valores diferentes
Explicar como va la función heurística:
- Se añade a la cola la clase o transición candidata.
Si no se ha cubierto, se suma cierto valor arbitrario.
Se añaden las clases o transiciones hijas y se decrementa el peso, ya que estas están un paso más lejos.
Se procede de esta forma hasta que se hayan evaluado todas las posibles transiciones, a partir de esa candidata.
Esta heurística tiene un mecanismo para no caer en un bucle, ya que recuerda las clases o transiciones ya valoradas.
Decir que esos valores se obtienen si ninguna clase se ha cubierto ya, sino serían valores diferentes
Explicar como va la función heurística:
- Se añade a la cola la clase o transición candidata.
Si no se ha cubierto, se suma cierto valor arbitrario.
Se añaden las clases o transiciones hijas y se decrementa el peso, ya que estas están un paso más lejos.
Se procede de esta forma hasta que se hayan evaluado todas las posibles transiciones, a partir de esa candidata.
Esta heurística tiene un mecanismo para no caer en un bucle, ya que recuerda las clases o transiciones ya valoradas.
Decir que esos valores se obtienen si ninguna clase se ha cubierto ya, sino serían valores diferentes
Explicar como va la función heurística:
- Se añade a la cola la clase o transición candidata.
Si no se ha cubierto, se suma cierto valor arbitrario.
Se añaden las clases o transiciones hijas y se decrementa el peso, ya que estas están un paso más lejos.
Se procede de esta forma hasta que se hayan evaluado todas las posibles transiciones, a partir de esa candidata.
Esta heurística tiene un mecanismo para no caer en un bucle, ya que recuerda las clases o transiciones ya valoradas.
Decir que esos valores se obtienen si ninguna clase se ha cubierto ya, sino serían valores diferentes
Explicar como va la función heurística:
- Se añade a la cola la clase o transición candidata.
Si no se ha cubierto, se suma cierto valor arbitrario.
Se añaden las clases o transiciones hijas y se decrementa el peso, ya que estas están un paso más lejos.
Se procede de esta forma hasta que se hayan evaluado todas las posibles transiciones, a partir de esa candidata.
Esta heurística tiene un mecanismo para no caer en un bucle, ya que recuerda las clases o transiciones ya valoradas.
Decir que esos valores se obtienen si ninguna clase se ha cubierto ya, sino serían valores diferentes
Hemos aportado…
Los benecios de generar secuencias son claros, ahorramos costes y tiempo al ejecutar las pruebas de forma secuencial, ya que el caso de prueba previo situa al SUT en el estado adecuado para probar la siguiente funcionalidad
Nos ha permitido concluir que…
No existe un programa que funcione bien para condiciones de tráfico diferentes (3 de 10 escenarios como máximo)
La ponderación de los escenarios es fundamental (probabilidad de ocurrencia)