Distancia SQL avanzada para generación de casos de test con EvoMaster - Brassara, Luis Francisco (2024)
EvoMaster es una herramienta de generación automática de casos de test para una API REST. Para que la suite generada consiga el mayor coverage posible, EvoMaster intenta generar tests que visiten todas las ramas de los condicionales. Esto lo consigue usando algoritmos evolutivos, cuya población de individuos serán test con llamadas REST y cuya función de fitness será lo que se conoce como branch distance. Como algunas guardas de los condicionales no dependen solo de los parámetros REST sino también del estado de la base de datos, se extendió EvoMaster para tener en cuenta este comportamiento. La heurística planteada en ese trabajo supone que algunas ramas de los condicionales no se visitan cuando la base de datos devuelve una query sin resultados. Luego, identifica esas queries y determina cuán lejos o cerca están de devolver algún resultado mediante la definición de una SQL distance. Esa definición de distancia es usada en la fitness function para guiar al algoritmo evolutivo hacia soluciones que visiten más ramas y en consecuencia ofrezcan mayor coverage. Actualmente, la implementación de la SQL distance cubre sólo un subconjunto de todas las posibles queries SQL ya que no tiene soporte para operadores que involucran subqueries tales como EXISTS, IN, ALL/ANY o UNION. Además, la SQL distance actual no da ningún gradiente intermedio cuando la cláusula FROM no trae resultados. El objetivo de la tesis será entonces definir, implementar y probar una extensión de la SQL distancia actual, que llamaremos distancia SQL avanzada, de manera que cubra esos nuevos casos y funcionalidades.