Test Smell Detection Tools: A Systematic Mapping Study

Test smells are defined as sub-optimal design choices developers make when implementing test cases. Hence, similar to code smells, the research community has produced numerous test smell detection tools to investigate the impact of test smells on the quality and maintenance of test suites. However, little is known about the characteristics, type of smells, target language, and availability of these published tools. In this paper, we provide a detailed catalog of all known, peer-reviewed, test smell detection tools. We start with performing a comprehensive search of peer-reviewed scientific publications to construct a catalog of 22 tools. Then, we perform a comparative analysis to identify the smell types detected by each tool and other salient features that include programming language, testing framework support, detection strategy, and adoption, among others. From our findings, we discover tools that detect test smells in Java, Scala, Smalltalk, and C++ test suites, with Java support favored by most tools. These tools are available as command-line and IDE plugins, among others. Our analysis also shows that most tools overlap in detecting specific smell types, such as General Fixture. Further, we encounter four types of techniques these tools utilize to detect smells. We envision our study as a one-stop source for researchers and practitioners in determining the tool appropriate for their needs. Our findings also empower the community with information to guide future tool development.

[1]  Andrea De Lucia,et al.  VITRuM: A Plug-In for the Visualization of Test-Related Metrics , 2020, AVI.

[2]  Vahid Garousi,et al.  Smells in software test code: A survey of knowledge in industry and academia , 2018, J. Syst. Softw..

[3]  Harald C. Gall,et al.  Lightweight Assessment of Test-Case Effectiveness Using Source-Code-Quality Indicators , 2019, IEEE Transactions on Software Engineering.

[4]  Stéphane Ducasse,et al.  Rule-based Assessment of Test Quality , 2007, J. Object Technol..

[5]  Claes Wohlin,et al.  Guidelines for snowballing in systematic literature studies and a replication in software engineering , 2014, EASE '14.

[6]  Amjed Tahir,et al.  An Empirical Study into the Relationship Between Class Features and Test Smells , 2021, 2016 23rd Asia-Pacific Software Engineering Conference (APSEC).

[7]  Paolo Tonella,et al.  Web test dependency detection , 2019, ESEC/SIGSOFT FSE.

[8]  Jens Grabowski,et al.  An approach to quality engineering of TTCN-3 test specifications , 2008, International Journal on Software Tools for Technology Transfer.

[9]  Jens Grabowski,et al.  TTCN-3 Quality Engineering: Using Learning Techniques to Evaluate Metric Sets , 2007, SDL Forum.

[10]  Larissa Rocha Soares,et al.  JNose: Java Test Smell Detector , 2020, SBES.

[11]  Jens Grabowski,et al.  TRex - The Refactoring and Metrics Tool for TTCN-3 Test Specifications , 2006, Testing: Academic & Industrial Conference - Practice And Research Techniques (TAIC PART'06).

[12]  Gabriele Bavota,et al.  An empirical investigation into the nature of test smells , 2016, 2016 31st IEEE/ACM International Conference on Automated Software Engineering (ASE).

[13]  Coen De Roover,et al.  Assessing diffusion and perception of test smells in scala projects , 2019, MSR.

[14]  Sven Apel,et al.  Views on Internal and External Validity in Empirical Software Engineering , 2015, 2015 IEEE/ACM 37th IEEE International Conference on Software Engineering.

[15]  Souvik Barat,et al.  Conducting Systematic Literature Reviews and Systematic Mapping Studies , 2017, ISEC.

[16]  Darko Marinov,et al.  Reliable testing: detecting state-polluting tests to prevent test dependency , 2015, ISSTA.

[17]  Davide Taibi,et al.  Architectural Smells Detected by Tools: a Catalogue Proposal , 2019, 2019 IEEE/ACM International Conference on Technical Debt (TechDebt).

[18]  Mohamed Wiem Mkaouer,et al.  An Exploratory Study on the Refactoring of Unit Test Files in Android Applications , 2020, ICSE.

[19]  Jens Grabowski,et al.  Refactoring and Metrics for TTCN-3 Test Suites , 2006, SAM.

[20]  Avinash C. Kak,et al.  A Large-Scale Comparative Evaluation of IR-Based Tools for Bug Localization , 2020, MSR.

[21]  Heitor Augustus Xavier Costa,et al.  On the influence of Test Smells on Test Coverage , 2019, SBES.

[22]  Andrea De Lucia,et al.  Automatic Test Smell Detection Using Information Retrieval Techniques , 2018, 2018 IEEE International Conference on Software Maintenance and Evolution (ICSME).

[23]  Marco Tulio Valente,et al.  RefDiff 2.0: A Multi-Language Refactoring Detection Tool , 2021, IEEE Transactions on Software Engineering.

[24]  Darko Marinov,et al.  An empirical analysis of flaky tests , 2014, SIGSOFT FSE.

[25]  Diomidis Spinellis,et al.  A survey on software smells , 2018, J. Syst. Softw..

[26]  Gabriele Bavota,et al.  An empirical analysis of the distribution of unit test smells and their impact on software maintenance , 2012, 2012 28th IEEE International Conference on Software Maintenance (ICSM).

[27]  Andrea De Lucia,et al.  Just-In-Time Test Smell Detection and Refactoring: The DARTS Project , 2020, ICPC.

[28]  Mohamed Wiem Mkaouer,et al.  On the distribution of test smells in open source Android applications: an exploratory study , 2019, CASCON.

[29]  André L. M. Santos,et al.  Refactoring Test Smells: A Perspective from Open-Source Developers , 2020, SAST.

[30]  Serge Demeyer,et al.  Characterizing the Relative Significance of a Test Smell , 2006, 2006 22nd IEEE International Conference on Software Maintenance.

[31]  Kai Petersen,et al.  Systematic Mapping Studies in Software Engineering , 2008, EASE.

[32]  Helmut Neukirchen,et al.  Utilising Code Smells to Detect Quality Problems in TTCN-3 Test Suites , 2007, TestCom/FATES.

[33]  Annibale Panichella,et al.  Revisiting Test Smells in Automatically Generated Tests: Limitations, Pitfalls, and Opportunities , 2020, 2020 IEEE International Conference on Software Maintenance and Evolution (ICSME).

[34]  Arie van Deursen,et al.  Automated Detection of Test Fixture Strategies and Smells , 2013, 2013 IEEE Sixth International Conference on Software Testing, Verification and Validation.

[35]  Jouni Ikonen,et al.  Where is the research on connecting game ​ worlds? - A systematic mapping study , 2015, Comput. Sci. Rev..

[36]  Dong Jae Kim,et al.  An Empirical Study on the Evolution of Test Smell , 2020, 2020 IEEE/ACM 42nd International Conference on Software Engineering: Companion Proceedings (ICSE-Companion).

[37]  David Brumley,et al.  All You Ever Wanted to Know about Dynamic Taint Analysis and Forward Symbolic Execution (but Might Have Been Afraid to Ask) , 2010, 2010 IEEE Symposium on Security and Privacy.

[38]  Gabriele Bavota,et al.  Are test smells really harmful? An empirical study , 2014, Empirical Software Engineering.

[39]  Bart Van Rompaey,et al.  TestQ: Exploring Structural and Maintenance Characteristics of Unit Test Suites , 2008 .

[40]  Marcelo de Almeida Maia,et al.  A Systematic Literature Review on Bad Smells–5 W's: Which, When, What, Who, Where , 2018, IEEE Transactions on Software Engineering.

[41]  Gerard Meszaros,et al.  xUnit Test Patterns: Refactoring Test Code , 2007 .

[42]  Abdallah Qusef,et al.  An Exploratory Study of the Relationship Between Software Test Smells and Fault-Proneness , 2019, IEEE Access.

[43]  Chen Huo,et al.  Improving oracle quality by detecting brittle assertions and unused inputs in tests , 2014, FSE 2014.

[44]  Eduardo Figueiredo,et al.  A review-based comparative study of bad smell detection tools , 2016, EASE.

[45]  Paolo Tonella,et al.  Dependency-Aware Web Test Generation , 2020, 2020 IEEE 13th International Conference on Software Testing, Validation and Verification (ICST).

[46]  Ivan Machado,et al.  RAIDE: a tool for Assertion Roulette and Duplicate Assert identification and refactoring , 2020, SBES.

[47]  Vahid Garousi,et al.  What We Know About Smells in Software Test Code , 2019, IEEE Software.

[48]  Andreas Zeller,et al.  Practical Test Dependency Detection , 2018, 2018 IEEE 11th International Conference on Software Testing, Verification and Validation (ICST).

[49]  St'ephane Ducasse,et al.  RTj: a Java Framework for Detecting and Refactoring Rotten Green Test Cases , 2019, 2020 IEEE/ACM 42nd International Conference on Software Engineering: Companion Proceedings (ICSE-Companion).

[50]  Annibale Panichella,et al.  On the Diffusion of Test Smells in Automatically Generated Test Code: An Empirical Study , 2016, 2016 IEEE/ACM 9th International Workshop on Search-Based Software Testing (SBST).

[51]  Harald C. Gall,et al.  Scented since the beginning: On the diffuseness of test smells in automatically generated test code , 2019, J. Syst. Softw..

[52]  Arie van Deursen,et al.  Strategies for avoiding text fixture smells during software evolution , 2013, 2013 10th Working Conference on Mining Software Repositories (MSR).

[53]  Larissa Rocha Soares,et al.  An empirical study of automatically-generated tests from the perspective of test smells , 2020, SBES.

[54]  Vahid Garousi,et al.  A systematic literature review of literature reviews in software testing , 2016, Inf. Softw. Technol..

[55]  Terese Besker,et al.  An Overview and Comparison of Technical Debt Measurement Tools , 2021, IEEE Software.

[56]  Vahid Garousi,et al.  A Tester-Assisted Methodology for Test Redundancy Detection , 2010, Adv. Softw. Eng..

[57]  Gail E. Kaiser,et al.  Efficient dependency detection for safe Java test acceleration , 2015, ESEC/SIGSOFT FSE.

[58]  Mohamed Wiem Mkaouer,et al.  tsDetect: an open source test smells detection tool , 2020, ESEC/SIGSOFT FSE.

[59]  Gordon Fraser,et al.  Teaching Software Testing with the Code Defenders Testing Game: Experiences and Improvements , 2020, 2020 IEEE International Conference on Software Testing, Verification and Validation Workshops (ICSTW).

[60]  Michael D. Ernst,et al.  Empirically revisiting the test independence assumption , 2014, ISSTA 2014.

[61]  Davide Spadini,et al.  Investigating Developer Perception on Test Smells Using Better Code Hub , 2019, SATToSE.

[62]  Andy Zaidman,et al.  On the Relation of Test Smells to Software Code Quality , 2018, 2018 IEEE International Conference on Software Maintenance and Evolution (ICSME).

[63]  Vahid Garousi,et al.  TeCReVis: A Tool for Test Coverage and Test Redundancy Visualization , 2010, TAIC PART.

[64]  Yann-Gaël Guéhéneuc,et al.  Code Smells and Refactoring: A Tertiary Systematic Review of Challenges and Observations , 2020, J. Syst. Softw..

[65]  Roger S. Pressman,et al.  Software Engineering: A Practitioner's Approach , 1982 .

[66]  Arie van Deursen,et al.  Refactoring test code , 2001 .

[67]  Alberto Bacchelli,et al.  Investigating Severity Thresholds for Test Smells , 2020, 2020 IEEE/ACM 17th International Conference on Mining Software Repositories (MSR).

[68]  Stéphane Ducasse,et al.  Rotten Green Tests , 2019, 2019 IEEE/ACM 41st International Conference on Software Engineering (ICSE).

[69]  Farooque Azam,et al.  A Systematic Review on Code Clone Detection , 2019, IEEE Access.