  While a substantial body of prior research has investigated the form and
nature of production code, comparatively little attention has examined
characteristics of test code, and, in particular, test smells in that code. In
this paper, we explore the relationship between production code properties (at
the class level) and a set of test smells, in five open source systems.
Specifically, we examine whether complexity properties of a production class
can be used as predictors of the presence of test smells in the associated unit
test. Our results, derived from the analysis of 975 production class-unit test
pairs, show that the Cyclomatic Complexity (CC) and Weighted Methods per Class
(WMC) of production classes are strong indicators of the presence of smells in
their associated unit tests. The Lack of Cohesion of Methods in a production
class (LCOM) also appears to be a good indicator of the presence of test
smells. Perhaps more importantly, all three metrics appear to be good
indicators of particular test smells, especially Eager Test and Duplicated
Code. The Depth of the Inheritance Tree (DIT), on the other hand, was not found
to be significantly related to the incidence of test smells. The results have
important implications for large-scale software development, particularly in a
context where organizations are increasingly using, adopting or adapting open
source code as part of their development strategy and need to ensure that
classes and methods are kept as simple as possible.
