kirancodes.me
To Proof Maintenance & Beyond!

Automatic test factoring for java

David Saff, Shay Artzi, Jeff H. Perkins, Michael D. Ernst

Abstract

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.

BibTeX
@inproceedings{Saff-al:ASE05,
  author    = {David Saff and
               Shay Artzi and
               Jeff H. Perkins and
               Michael D. Ernst},
  title     = {Automatic test factoring for java},
  booktitle = {ASE},
  pages     = {114--123},
  publisher = {{ACM}},
  year      = {2005},
}

Related papers