What Do the Asserts in a Unit Test Tell Us about Code Quality? A Study on Open Source and Industrial Projects

ANICHE, M. F.; OLIVA, G. A.; GEROSA, MARCO A. "What Do the Asserts in a Unit Test Tell Us about Code Quality? A Study on Open Source and Industrial Projects ". CSMR 2013, 17th European Conference on Software Maintenance and Reengineering , pp. 111-120 , ISSN 1534-5351 . , DOI: 10.1109/CSMR.2013.21

Topics: Mining techniques and tools, Agile Methods, Software testing, Mining, Statistical analysis

PDFPDF SlidesSlides

Abstract: Unit tests and production code are intrinsically connected. A class that is easy to test usually presents desirable characteristics, such as low coupling and high cohesion. Thus, finding hard-to-test classes may help developers identify problematic code. Many different test feedbacks that warn developers about problematic code were already catalogued. In this paper, we argue that analyzing assert instructions in unit tests also aid in identifying and reasoning about potentially problematic pieces of code. We report an analysis conducted with both open source and industry projects relating assert instructions in a unit test with quality measures of the code being tested. We observed that when a production method has a unit test that uses the "assert" instruction in more than one object instance, it often exhibits higher cyclomatic complexity, number of lines of code, or higher number of method invocations. It means that developers should monitor the number of asserts in a unit test as it may indicate problems in the production code.