ArbitCheck: A Highly Automated Property-Based Testing Tool for Java
Kohsuke Yatoh, Kazunori Sakamoto, Fuyuki Ishikawa, Shinichi Honiden · 2014
Lightweight property-based testing tools are becoming popular these days. With property-based testing, developers can test properties of the system under test against large varieties of randomly generated inputs without writing test cases. Despite the advantages of property-based testing, current property-based testing tools have a major drawback: they require developers to write generator functions for user-defined types. This is because it is difficult for a tool to infer the possible values for the type. However, user-defined generators sometimes fail to find faults by only producing overly limited varieties of values. In this paper, we present a new property-based testing tool, called ArbitCheck, which automates object generation by adapting the feedback-directed random test generation technique. With the help of feedback-directed random test generation, ArbitCheck exhaustively generates possible values of user-defined types and tests properties with them, so that it can reveal faults that are hard to find with either manually written tests or existing property-based testing tools.