Test-driven development (TDD) is a widely used agile practice. However, very little is known with certainty about TDD's underlying foundations, i.e., the way TDD works. In this paper, we propose a theoretical framework for TDD, with the following characteristics: 1) Each TDD cycle represents a vertical slice of a (probably also small) user story, 2) vertical slices are captured using contracts, implicit in the developers' minds, and 3) the code created during a TDD cycle is a sliced-based specification of a code oracle, using the contracts as slicing pre/post-conditions. We have checked the connections among TDD, contracts, and slices using a controlled experiment conducted in the industry.
@article{arxiv.2407.13258,
title = {The role of slicing in test-driven development},
author = {Oscar Dieste and Ayse Tosun and Sira Vegas and Adrian Santos and Fernando Uyaguari and Jarno Kyykka and Natalia Juristo},
journal= {arXiv preprint arXiv:2407.13258},
year = {2024}
}