{"title":"A systematic literature review on transformation for testability techniques in software systems","authors":"Fateme Bagheri-Galle , Saeed Parsa , Morteza Zakeri","doi":"10.1016/j.infsof.2025.107788","DOIUrl":null,"url":null,"abstract":"<div><h3>Context</h3><div>Software testability is a critical aspect of software development, enabling efficient error identification during testing. Program transformation techniques, mainly refactoring, play a key role in enhancing testability by simplifying the process of identifying and addressing potential issues. By improving testability, developers empower themselves to create more dependable software products.</div></div><div><h3>Objective</h3><div>Our study aims to conduct a systematic literature review focused on transformation techniques for improving testability in software systems. By analyzing existing research, we seek to provide insights into effective strategies for enhancing testability and addressing critical issues in software development.</div></div><div><h3>Method</h3><div>We queried six digital libraries, resulting in over 5000 articles. After rigorous analysis, we narrowed our focus to 39 primary research papers. Based on a novel hierarchical classification of the approaches used to enhance testability, the selected articles were analyzed considering the refactoring techniques, software metrics, and code smells affecting testability at the design and code levels.</div></div><div><h3>Results</h3><div>Our investigation revealed that among our findings, 53.8 % of the papers specifically employed refactoring for testability, while 46.2 % utilized testability transformation techniques. Only one study provided structured sequences of refactoring for testability. The studies primarily focused on three testing levels: unit testing, regression testing, and graphical user interface (GUI) testing. Notably, unit testing received the most attention, appearing in 71.8 % of the studies. About 64.1 % of the studies involved software projects written in the Java programming language. The results suggest that removing code smells and anti-patterns through refactoring would increase testability.</div></div><div><h3>Conclusion</h3><div>While transformation techniques are essential to increase testability and often improve it, more research is needed to address this critical issue. Additionally, exploring other levels of testing beyond unit testing and using software projects with languages beyond Java is essential. To enhance testability, it is necessary to provide more refactoring sequences aimed at improving testability.</div></div>","PeriodicalId":54983,"journal":{"name":"Information and Software Technology","volume":"185 ","pages":"Article 107788"},"PeriodicalIF":4.3000,"publicationDate":"2025-05-14","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":"0","resultStr":null,"platform":"Semanticscholar","paperid":null,"PeriodicalName":"Information and Software Technology","FirstCategoryId":"94","ListUrlMain":"https://www.sciencedirect.com/science/article/pii/S0950584925001272","RegionNum":2,"RegionCategory":"计算机科学","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":null,"EPubDate":"","PubModel":"","JCR":"Q2","JCRName":"COMPUTER SCIENCE, INFORMATION SYSTEMS","Score":null,"Total":0}
引用次数: 0
Abstract
Context
Software testability is a critical aspect of software development, enabling efficient error identification during testing. Program transformation techniques, mainly refactoring, play a key role in enhancing testability by simplifying the process of identifying and addressing potential issues. By improving testability, developers empower themselves to create more dependable software products.
Objective
Our study aims to conduct a systematic literature review focused on transformation techniques for improving testability in software systems. By analyzing existing research, we seek to provide insights into effective strategies for enhancing testability and addressing critical issues in software development.
Method
We queried six digital libraries, resulting in over 5000 articles. After rigorous analysis, we narrowed our focus to 39 primary research papers. Based on a novel hierarchical classification of the approaches used to enhance testability, the selected articles were analyzed considering the refactoring techniques, software metrics, and code smells affecting testability at the design and code levels.
Results
Our investigation revealed that among our findings, 53.8 % of the papers specifically employed refactoring for testability, while 46.2 % utilized testability transformation techniques. Only one study provided structured sequences of refactoring for testability. The studies primarily focused on three testing levels: unit testing, regression testing, and graphical user interface (GUI) testing. Notably, unit testing received the most attention, appearing in 71.8 % of the studies. About 64.1 % of the studies involved software projects written in the Java programming language. The results suggest that removing code smells and anti-patterns through refactoring would increase testability.
Conclusion
While transformation techniques are essential to increase testability and often improve it, more research is needed to address this critical issue. Additionally, exploring other levels of testing beyond unit testing and using software projects with languages beyond Java is essential. To enhance testability, it is necessary to provide more refactoring sequences aimed at improving testability.
期刊介绍:
Information and Software Technology is the international archival journal focusing on research and experience that contributes to the improvement of software development practices. The journal''s scope includes methods and techniques to better engineer software and manage its development. Articles submitted for review should have a clear component of software engineering or address ways to improve the engineering and management of software development. Areas covered by the journal include:
• Software management, quality and metrics,
• Software processes,
• Software architecture, modelling, specification, design and programming
• Functional and non-functional software requirements
• Software testing and verification & validation
• Empirical studies of all aspects of engineering and managing software development
Short Communications is a new section dedicated to short papers addressing new ideas, controversial opinions, "Negative" results and much more. Read the Guide for authors for more information.
The journal encourages and welcomes submissions of systematic literature studies (reviews and maps) within the scope of the journal. Information and Software Technology is the premiere outlet for systematic literature studies in software engineering.