Re-using Generators of Complex Test Data
by S. Poulding and R. Feldt

The efficiency of random testing can be improved by sampling test inputs using a generating program that incorporates knowledge about the types of input most likely to detect faults in the software-under-test (SUT). But when the input of the SUT is a complex data type---such as a domain-specific string, array, record, tree, or graph---creating such a generator may be time-consuming and may require the tester to have substantial prior experience of the domain.

In this paper we propose the re-use of generators created for one SUT on other SUTs that take the same complex data type as input. The re-use of a generator in this way would have little overhead, and we hypothesise that the re-used generator will typically be as least as efficient as the most straightforward form of random testing: sampling test inputs from the uniform distribution.

We investigate this proposal for two data types using five generators. We assess test efficiency against seven real-world SUTs, and in terms of both structural coverage and the detection of seeded faults. The results support the re-use of generators for complex data types, and suggest that if a library of generators is to be maintained for this purpose, it is possible to extend library generators to accommodate the specific testing requirements of newly-encountered SUTs.


  author =    "Simon Poulding and Robert Feldt",
  title =     "Re-using Generators of Complex Test Data",
  year =      "2015",
  pages =     "",
  booktitle = "Software Testing, Verification and Validation (ICST), 2015 IEEE Eigth Int. Conference on",
  organization = "IEEE",
  url =       "",
  keywords =  "Software testing, Test data generation, Reuse, Search-based software testing"