Ubiquity, Volume 2015 Issue March, March 2015 | BY Walter Tichy
Full citation in the ACM Digital Library
I'll summarize the link in the previous blog entry.
While Weimer's GenProg relies on programmer-provided test cases, Furia at al's AutoFix uses programmer-provided assertions. The interesting insight behind AutoFix is that given assertions, one can generate random test cases automatically and use the assertions as so-called oracles, meaning that the assertions decide whether a test case fails or succeeds. So the programmer is relieved of writing unit tests, but must provide assertions instead (or in addition). The fascinating question is: Which way is better?
Furia writes that assertions lead to better fault localization and more intelligible fixes; he also thinks that his method generates fixes at a fraction of GenProg's runtime because of reduced search space. So AutoFix might have an advantage, but the question is: What would programmers rather write: tests or assertions?
My experience is that programmers don't write enough tests, but they hardly ever write assertions, even though programming languages such as Java and Eiffel provide syntax for them. If we forced them to write assertions then they are likely to write useless pre-conditions and post-conditions that echo the (potentially faulty) code. So which way should we go?
��� Walter Tichy, Thu, 11 Jun 2015 12:30:05 UTC
Interesting interview! I have written down some comments on the same topic with reference to AutoFix, our technique for automated program repair
��� Carlo A. Furia, Tue, 07 Apr 2015 18:24:03 UTC
Your Name (Required)
Your E-Mail address (Required)
Comment (Required - HTML syntax is not allowed and will be removed)