Database-backed applications are widely used. To effectively test these applications, one needs to design not only user inputs but also database states, which imposes unique challenges. First, valid database states have to satisfy complicated constraints determined by application semantics, and hence are difficult to synthesize. Second, the state space of a database is huge, as an application can contain tens to hundreds of tables with up to tens of fields per table. Making things worse, each test run takes time, as it involves database operations. Consequently, unhelpful tests can severely waste testing resources.
We propose DBGRILLER, a framework that supports the testing of database-backed applications by generating test database states. To effectively generate valid database states, DBGRILLER strategically injects minor mutation into existing database states and transforms part of the application-under-test into a standalone validity checker. To tackle the huge database state space and save testing time, DBGRILLER uses program analysis to identify a novel branch-projected DB view that can be used to filter out database states that are unlikely to increase the testing branch coverage. Our evaluation on 9 popular open-source database applications shows that DBGRILLER can effectively increase the testing branch coverage and expose previously unknown bugs.
Fri 19 MayDisplayed time zone: Hobart change
11:00 - 12:30 | Testing of database and low-level softwareTechnical Track / SEIP - Software Engineering in Practice / DEMO - Demonstrations / Journal-First Papers at Meeting Room 109 Chair(s): Michael Pradel University of Stuttgart | ||
11:00 15mTalk | Compiler Test-Program Generation via Memoized Configuration Search Technical Track Junjie Chen Tianjin University, Chenyao Suo College of Intelligence and Computing, Tianjin University, Jiajun Jiang Tianjin University, Peiqi Chen College of Intelligence and Computing, Tianjin University, Xingjian Li College of Intelligence and Computing, Tianjin University | ||
11:15 15mTalk | Generating Test Databases for Database-Backed Applications Technical Track | ||
11:30 15mTalk | Testing Database Engines via Query Plan Guidance Technical Track Pre-print | ||
11:45 15mTalk | Testing Database Systems via Differential Query Execution Technical Track Jiansen Song , Wensheng Dou Institute of Software Chinese Academy of Sciences, Ziyu Cui Institute of Software Chinese Academy of Sciences, Qianwang Dai Institute of Software Chinese Academy of Sciences, Wei Wang , Jun Wei Institute of Software at Chinese Academy of Sciences; University of Chinese Academy of Sciences; University of Chinese Academy of Sciences Chongqing School, Hua Zhong Institute of Software Chinese Academy of Sciences, Tao Huang Institute of Software Chinese Academy of Sciences Pre-print | ||
12:00 15mTalk | Achieving Last-Mile Functional Coverage in Testing Chip Design Software Implementations SEIP - Software Engineering in Practice Ming Yan College of Intelligence and Computing, Tianjin University, Junjie Chen Tianjin University, Hangyu Mao , Jiajun Jiang Tianjin University, Jianye Hao Tianjin University, Xingjian Li College of Intelligence and Computing, Tianjin University, Zhao Tian Tianjin University, Zhichao Chen , Dong Li , Dong Li , Yanwei Guo , Wulong Liu , Bin Wang , Yuefeng Sun , Yongshun Cui | ||
12:15 7mTalk | Randomized Differential Testing of RDF Stores DEMO - Demonstrations Rui Yang Institute of Software, Chinese Academy of Sciences, Yingying Zheng Institute of Software Chinese Academy of Sciences, Lei Tang Institute of Software Chinese Academy of Sciences, Wensheng Dou Institute of Software Chinese Academy of Sciences, Wei Wang , Jun Wei Institute of Software at Chinese Academy of Sciences; University of Chinese Academy of Sciences; University of Chinese Academy of Sciences Chongqing School Pre-print | ||
12:22 7mTalk | Boosting Compiler Testing via Compiler Optimization Exploration Journal-First Papers Junjie Chen Tianjin University, Chenyao Suo College of Intelligence and Computing, Tianjin University |