Ask any question about EPFL courses, lectures, exercises, research, news, etc. or try the example questions below.
DISCLAIMER: The Graph Chatbot is not programmed to provide explicit or categorical answers to your questions. Rather, it transforms your questions into API requests that are distributed across the various IT services officially administered by EPFL. Its purpose is solely to collect and recommend relevant references to content that you can explore to help you answer your questions.
End-user software is executed billions of times daily, but the corresponding execution details (“by-products”) are discarded. We hypothesize that, if suitably captured and aggregated, these by-products could substantially speed up the process of testing programs and proving them correct. Ironically, both testing and debugging involve simulating real-world conditions and executions, in essence trying to recreate in the lab some of these (previously available, but discarded) execution details. This position paper proposes a way to recoup the execution information that is lost during everyday software use, aggregate it, and automatically turn it into bug fixes and proofs. The goal is to enable software to improve itself by “learning” from past failures and successes, leveraging the information-rich execution by-products that today are being wasted. We view every execution of a program as a test run and aggregate executions across the lifetime of a program into one gigantic test suite—i.e., we remove the distinction between software use and software testing and verification—with the purpose of substantially reducing software bug density.
Christina Fragouli, Suhas Diggavi, Pavlos Nikolopoulos