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.
翻译:测试的气味被定义为执行测试案例时的亚最佳设计选择开发者所做出的。因此,与代码气味相似,研究界制作了许多测试气味检测工具,以调查测试气味对测试套件质量和维护的影响。然而,对于这些公布工具的特点、气味类型、目标语言和可用性知之甚少。在本文中,我们提供了所有已知、同行评审、测试气味检测工具的详细目录。我们首先对经同行审查的科学出版物进行全面搜索,以建立22种工具的目录。然后,我们进行了比较分析,以确定每个工具所检测的气味类型和其他突出特征,包括编程语言、测试框架支持、检测策略和采用等。根据我们的调查结果,我们发现了在爪哇、斯卡拉、小说和C++测试套件中检测气味的工具,大多数工具都支持爪哇。这些工具可以作为指令线和IDE插件等。我们的分析还表明,在检测特定气味类型(如总固化)中,我们发现的大多数工具重叠。此外,我们还从四种类型的工具中发现,我们利用这些工具的气质研究工具来测量。