Software testing can be daunting, time-consuming, and prone to human error. Automated testing techniques, such as model checking or symbolic execution, promise to alleviate the testing effort and spot more programming errors. Alas, at the moment, such techniques face several challenges in getting mainstream adoption.
One such challenge is the difficulty of producing automated testing engines for dynamic interpreted languages, such as Python or Ruby, which are getting increasingly popular among web developers and system integrators.
To this end, I'm happy to share our latest research result, a recipe and system -- Chef
-- for turning vanilla interpreter implementations into correct and complete symbolic execution engines. With only a fraction of the effort needed to build such an engine from scratch, we built using Chef symbolic execution engines for Python and Lua, which we used to find bugs and obtain code coverage in popular library packages.
Read more about Chef in our upcoming ASPLOS'14 paper, also available at http://dslab.epfl.ch/pubs/chef.pdf?attredirects=0