  In this paper, we propose to use production executions to improve the quality
of testing for certain methods of interest for developers. These methods can be
methods that are not covered by the existing test suite, or methods that are
poorly tested. We devise an approach called PANKTI which monitors applications
as they execute in production, and then automatically generates differential
unit tests, as well as derived oracles, from the collected data. PANKTI's
monitoring and generation focuses on one single programming language, Java. We
evaluate it on three real-world, open-source projects: a videoconferencing
system, a PDF manipulation library, and an e-commerce application. We show that
PANKTI is able to generate differential unit tests by monitoring target methods
in production, and that the generated tests improve the quality of the test
suite of the application under consideration.
