On Extracting Unit Tests From Interactive Programming Sessions

Software engineering methodologies propose that developers should capture their efforts in ensuring that programs run correctly in repeatable and automated artifacts, such as unit tests. However, when looking at developer activities on a spectrum from exploratory testing to scripted testing the authors find that many engineering activities include bursts of exploratory testing. In this paper, they propose to leverage these exploratory testing bursts by automatically extracting scripted tests from a recording of these sessions. In order to do so, they wiretap the development environment so they can record all program input, all user-issued functions calls, and all program output of an exploratory testing session. They propose to then use machine learning (i.e. clustering) to extract scripted test cases from these recordings in real-time.