Home

Articles

On the Interesting Properties of the Number 37

Fixing uniq in Serenity OS

Languages with Alternative "Hello World" Programs

Publications

A Method for Finding Missing Unit Tests

I wrote this paper with my advisor James Clause as part of my (unfinished) doctoral research at the University of Delaware. It was accepted ICSME 2020. Read it here.

Abstract:

Because tests are important to the development process, developers need to know when a test suite is missing tests. Missing tests—tests that should be included in a test suite but are not—reduce the utility that developers can derive from a test suite. Currently, developers find missing tests by using coverage information such as line coverage or mutation coverage. However, coverage metrics are limited in their ability to reveal missing tests and show only what code needs to be tested, not how to test it.

We present a method for finding missing tests that addresses the shortcomings of coverage metrics based on the fact that similar code entities are often tested in the same way. We are able to find what code is missing tests by identifying code entities which are not tested in the same way as other similar entities. We then show how a code entity with a missing test should be tested by leveraging the tests written for those similar entities. Our results show that our approach offers several benefits over a coverage-based approach and is able to find missing tests in a range of software projects while generating few erroneous identifications of missing tests.

SIGBOVIK Paper

SIGBOVIK is a humorous computer science conference hosted by CMU. I was thrilled to have my submission included. It can be read here or in the official proceedings (page 338).