KATCH: High-Coverage Testing of Software Patches

One of the distinguishing characteristics of software systems is that they evolve: new patches are committed to software repositories and new versions are released to users on a continuous basis. Unfortunately, many of these changes bring unexpected bugs that break the stability of the system or affect its security. We address this problem using a technique for automatically testing code patches. Our technique combines symbolic execution with several novel heuristics based on static and dynamic program analysis which allow it to quickly reach the code of the patch. We have implemented our approach in a tool called KATCH, which we have applied to all the patches written in a combined period of approximately six years for nineteen mature programs from the popular GNU diffutils, GNU binutils and GNU findutils utility suites, which are shipped with virtually all UNIX-based distributions. Our results show that KATCH can automatically synthesise inputs that significantly increase the patch coverage achieved by the existing manual test suites, and find bugs at the moment they are introduced.

Paul Marinescu is a final-year PhD candidate in the Department of Computer Science at Imperial College London, supervised by Cristian Cadar. His goal is to create techniques and tools which can reason symbolically about programs outside the scope of current approaches (millions of lines of code) and bring a tangible benefit in industry by improving program coverage and finding bugs, ultimately offering increased confidence in software correctness.