Finding Min-Repros in Database Software

DBTest |

Testing and debugging database system applications is often challenging and time consuming. A database tester (or DB tester for short) has to detect a problem, determine why it happened, set up an environment to reproduce it, and then create a fix to resolve the problem. In many cases, problems appear in very complex scenarios, and thus the reproduction of a problem may be large and difficult to understand. This makes the task of finding the root cause of the problem very difficult. As a consequence, a very time-consuming task for DB testers is finding a min-repro – a process of weeding out irrelevant inputs and finding the simplest way to reproduce a problem. Currently, a great deal of searching for a min-repro is carried out manually, which is both slow and error-prone. In this paper, we present a system designed to ease finding min-repros in database-related products. The system employs a number of tools for min-repro search, including: novel simplification transformations, a high-level script language to automate sub-tasks and to guide the search, record-and-replay functionality, and an intuitive representation of results and the search space. These tools can save hours of time (for both customers and testers to isolate the problem), which could lead to faster fixes and large cost savings to organizations. Our min-repro system can be executed in two modes: (1) application mode and (2) game mode. The complexity and the tediosness of debugging has prompted us to explore the potential for a “game-like” approach to minrepro search. Inspired in part by the fact that humans enjoy “fun applications” and by the prevalence of long-term play of computer games, we believe that a game-like approach could help make the process of searching for a min repro more enjoyable and possibly help find min-repros faster.