Finding Min-Repros in Database Software - Bruno, Nicolas; Nehme, Rimma V. (DBTest, 2009)
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 ﬁx to resolve the problem. In many cases, problems appear in very complex scenarios, and thus the reproduction of a problem may be large and diﬃcult to understand. This makes the task of ﬁnding the root cause of the problem very diﬃcult. As a consequence, a very time-consuming task for DB testers is ﬁnding a min-repro – a process of weeding out irrelevant inputs and ﬁnding 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 ﬁnding min-repros in database-related products. The system employs a number of tools for min-repro search, including: novel simpliﬁcation 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 ﬁxes 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 ﬁnd min-repros faster.