Apprendre à rechercher : Génération de tests déclencheurs d'exceptions par sélection adaptative de fonctions de fitness
2022-01-12
Hussein Almulla Gregory Gay
La génération de tests basée sur la recherche est guidée par les retours d'une ou plusieurs fonctions de fitness - des fonctions de notation qui jugent de l'optimalité des solutions. Choisir des fonctions de fitness informatives est crucial pour atteindre les objectifs d'un testeur. Malheureusement, de nombreux objectifs - comme forcer la classe à tester à lancer des exceptions - n'ont pas de formulation de fonction de fitness connue. Nous proposons que la réalisation de tels objectifs nécessite de traiter l'identification de la fonction de fitness comme une étape d'optimisation secondaire. Un algorithme adaptatif qui peut varier la sélection des fonctions de fitness pourrait ajuster sa sélection tout au long du processus de génération pour maximiser l'atteinte des objectifs, en fonction de la population actuelle des suites de tests. Pour tester cette hypothèse, nous avons implémenté deux algorithmes d'apprentissage par renforcement dans le cadre EvoSuite, et utilisé ces algorithmes pour définir dynamiquement les fonctions de fitness utilisées lors de la génération. Nous avons évalué notre cadre, EvoSuiteFIT, sur un ensemble de 386 défauts réels. EvoSuiteFIT découvre et conserve plus d'entrées déclenchant des exceptions et produit des suites qui détectent une variété de défauts manqués par les autres techniques. La capacité d'ajuster les fonctions de fitness permet à EvoSuiteFIT de faire des choix stratégiques qui produisent efficacement des suites de tests plus efficaces.
