Automatic Test Factoring for Java
Author(s)
Saff, David; Artzi, Shay; Perkins, Jeff H.; Ernst, Michael D.
DownloadMIT-CSAIL-TR-2005-042.ps (20912Kb)
Additional downloads
Other Contributors
Program Analysis
Metadata
Show full item recordAbstract
Test factoring creates fast, focused unit tests from slow system-widetests; each new unit test exercises only a subset of the functionalityexercised by the system test. Augmenting a test suite with factoredunit tests should catch errors earlier in a test run.One way to factor a test is to introduce 'mock' objects. If a testexercises a component T, which interacts with another component E (the'environment'), the implementation of E can be replaced by a mock.The mock checks that T's calls to E are as expected, and it simulatesE's behavior in response. We introduce an automatic technique fortest factoring. Given a system test for T and E, and a record of T'sand E's behavior when the system test is run, test factoring generatesunit tests for T in which E is mocked. The factored tests can isolatebugs in T from bugs in E and, if E is slow or expensive, improve testperformance or cost.We have built an implementation of automatic dynamic test factoring for theJava language. Our experimental data indicates that it can reduce therunning time of a system test suite by up to an order of magnitude.
Date issued
2005-06-08Other identifiers
MIT-CSAIL-TR-2005-042
MIT-LCS-TR-991
Series/Report no.
Massachusetts Institute of Technology Computer Science and Artificial Intelligence Laboratory