Since the advent of object-oriented programming languages, using inheritance has been a fundamental concept in software design. It is used to achieve polymorphism, facilitating code reuse, enable ease in extension of software program. Despite its benefits, inheritance may introduce tight coupling between classes and overtime can degrade maintainability of software systems. In this work, we take the first step by studying inheritance and interface, with the focus on impact on test code maintainability and design decisions. We have developed a tool capable of identifying inheritance and interface changes in modified test classes within the software evolution commit history. Our empirical study spans 12 open-source Java systems, covering their entire developmental history up to 2021. We have mined 4,662 instances of inheritance and interface changes in test code. We have compiled a comprehensive catalog of motivations driving these changes. This catalog offers insights on how inheritance impact test maintainability, providing valuable guidance for developers navigating the use of inheritance and interface in test code.
No takes yet. Share an insight, caveat, or question.
Kim et al. (2024) studied this question.
Synapse has enriched 5 closely related papers on similar clinical questions. Consider them for comparative context: