Vive la Différence: Practical Diff Testing of Stateful Applications

Software rollout is the process of replacing the version of an application that is currently running in production with a new version. Many subtle and catastrophic bugs occur during software rollout. There are many existing techniques to improve the odds of a rollout completing successfully, but these techniques don't work well when the application has shared, persistent, mutable state. In this paper, we present a practical framework to test the rollout of stateful applications. Our framework uses diff testing to verify that the new version of an application behaves identically to the currently running version that will be replaced. The framework has three main components to safely and efficiently compare the behavior of the two versions. First, we implement database branching on top of Postgres. Second, we implement an efficient algorithm to diff two database branches. Third, we describe how to replay client requests to improve test coverage. Finally, we identify three common categories of rollout bugs and demonstrate how our framework can find these bugs with minimal performance overhead.

Authors

Institutions

Publication Details

Journal
Proceedings of the VLDB Endowment
Published
2025-03-01
DOI
https://doi.org/10.14778/3734839.3734841
Primary Topic
Software Testing and Debugging Techniques
Type
article
Field-Weighted Citation Impact
0.00
Controls
|||
ALL TIME
JAN
FEB
MAR
APR
MAY
JUN
JUL
AUG
SEP
OCT
article

Vive la Différence: Practical Diff Testing of Stateful Applications

Sanjay Ghemawat, Srdjan Petrovic, Robert Grandl, Michael Whittaker et al.
Proceedings of the VLDB Endowment
Software Testing and Debugging Techniques
article

Vive la Différence: Practical Diff Testing of Stateful Applications

Sanjay Ghemawat, Srdjan Petrovic, Robert Grandl, Michael Whittaker, Kexin Zhu
article en

Abstract

Software rollout is the process of replacing the version of an application that is currently running in production with a new version. Many subtle and catastrophic bugs occur during software rollout. There are many existing techniques to improve the odds of a rollout completing successfully, but these techniques don't work well when the application has shared, persistent, mutable state. In this paper, we present a practical framework to test the rollout of stateful applications. Our framework uses diff testing to verify that the new version of an application behaves identically to the currently running version that will be replaced. The framework has three main components to safely and efficiently compare the behavior of the two versions. First, we implement database branching on top of Postgres. Second, we implement an efficient algorithm to diff two database branches. Third, we describe how to replay client requests to improve test coverage. Finally, we identify three common categories of rollout bugs and demonstrate how our framework can find these bugs with minimal performance overhead.

Proceedings of the VLDB EndowmentVol. 18(7)
Google (United States) (US)
Openalex Percentile: Top 77%
Software Testing and Debugging Techniques
AI Navigator

Ask Laika to Summarize, Analyze, and Connect papers live on the map.

Summarize Papers & Methodologies

Extract key findings, datasets, and comparative methods across publications.

Benchmark Rankings & Visual Analytics

Rank top research institutions, authors, funders, topics, and journals by Field-Weighted Citation Impact (FWCI) and paper volume with instant charts.

Connect Distant Disciplines

Bridge topological clusters on the map to find hidden collaborative intersections.

Vive la Différence: Practical Diff Testing of Stateful Applications — Sanjay Ghemawat, Srdjan Petrovic, et al. · Proceedings of the VLDB Endowment (2025) | TGRS Research Map | TGRS