Fuzzing para Testing de Compiladores

  • Guillermo Polito – CNRS, INRIA.

El testing de compiladores es hoy en día un área crítica para el desarrollo de software profesional, dada la complejidad y constante evolución de los lenguajes de programación. El testing automático debe validar la interrelación entre nuevos lenguajes, nuevas representaciones intermedias de código, nuevas fases de optimización y transformación. Dentro del área de testing automatizado de compiladores, las técnicas de fuzzing proponen la creación automática de forma más o menos aleatoria, de valores de input para testear un programa.

Este curso presenta técnicas maduras de testing automático de compiladores. El curso se basa en tres ejes. En una primera parte, el curso presenta buenas prácticas de testing automatizado, aplicables no solo a compiladores. En una segunda parte, el curso estudia técnicas para generar automáticamente inputs para compiladores, y cómo guiarlos para testear distintas partes de un compilador. En tercer lugar, el curso presenta el problema del oráculo de testing y cómo este problema se instancia en el caso de los compiladores. En cada uno de esos ejes se estudian técnicas del estado del arte, acompañados de casos de estudio y artículos de investigación que ilustran los distintos casos.

El curso es teórico y práctico. La práctica tiene como objetivo la implementación de fuzzers automáticos y ponerlos en práctica para testear lenguajes de programación.

Idioma: Español

Requisitos: La parte teórica de este curso requiere conocimientos medios de programación. Es deseable, pero no bloqueante, conocimiento de sintaxis y gramática de los lenguajes de programación. La parte práctica de este curso requiere experiencia en programación. Es deseable el conocimiento de lenguajes de alto nivel como Python o Smalltalk (e.g., Pharo).