IRILL - Research and Innovation on Free Software
IRILL, Paris

Implantation d'un oracle de test aléatoire

Le test aléatoire est une technique permettant de tester des programmes avec des entrées aléatoires et indépendantes. Ces entrées sont supposées correctes et, donc, si la sortie ne correspond pas à la spécification alors un bug est détecté. Le framework de test Testify [1] permet de générer automatiquement et efficacement des tests aléatoires pour les programmes OCaml. On souhaiterait également pouvoir l'étendre à d'autres langages. Pour ce faire, une solution est d'implémenter un outil (oracle) recevant la spécification d'une fonction d'un programme arbitraire à tester, e.g. une fonction qui attend un tableau d'entiers trié, et générant un ensemble d'entrées valides pour cette fonction. Pour chaque entrée générée, la fonction exécutée, dans son environnement d'exécution d'origine, retourne le résultat à l'oracle qui sera capable d'émettre un jugement. Le but du stage consistera à définir un petit langage de spécification, d'implémenter l'outil capable de: comprendre ce langage de spécification, générer des entrées et de vérifier des sorties. Et, finalement, d'être capable d'interagir avec cet outil au sein d'un framework de test dans le langage de votre choix.

Le stagiaire devra être d'accord pour que ses contributions soient distribuées sous licence libre.

[1]: Ziat, Ghiles ; Dien, Matthieu ; Botbol, Vincent Automated Random Testing of Numerical Constrained Types https://drops.dagstuhl.de/opus/volltexte/2021/15350/

Contacts : Vincent Botbol & Ghiles Ziat