ArbitCheck: A Highly Automated Property-Based Testing Tool for Java

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.

[1]  Gordon Fraser,et al.  EvoSuite: On the Challenges of Test Case Generation in the Real World , 2013, 2013 IEEE Sixth International Conference on Software Testing, Verification and Validation.

[2]  Tsong Yueh Chen,et al.  Adaptive Random Testing: The ART of test case diversity , 2010, J. Syst. Softw..

[3]  Koen Claessen,et al.  QuickCheck: a lightweight tool for random testing of Haskell programs , 2000, ICFP.

[4]  Michael D. Ernst,et al.  Feedback-Directed Random Test Generation , 2007, 29th International Conference on Software Engineering (ICSE'07).

[5]  Bruno Legeard,et al.  Smartesting CertifyIt: Model-Based Testing for Enterprise IT , 2013, 2013 IEEE Sixth International Conference on Software Testing, Verification and Validation.

[6]  Alex Groce,et al.  Swarm testing , 2012, ISSTA 2012.

[7]  Tao Xie,et al.  Random unit-test generation with MUT-aware sequence recommendation , 2010, ASE '10.

[8]  Barton P. Miller,et al.  An empirical study of the reliability of UNIX utilities , 1990, Commun. ACM.

[9]  Michael D. Ernst,et al.  Randoop: feedback-directed random testing for Java , 2007, OOPSLA '07.

[10]  Patrice Godefroid,et al.  Automated Whitebox Fuzz Testing , 2008, NDSS.

[11]  Nikolai Tillmann,et al.  Automating Software Testing Using Program Analysis , 2008, IEEE Software.

[12]  Patrice Godefroid,et al.  Billions and billions of constraints: Whitebox fuzz testing in production , 2013, 2013 35th International Conference on Software Engineering (ICSE).

[13]  Michael D. Ernst,et al.  Scaling up automated test generation: Automatically generating maintainable regression unit tests for programs , 2011, 2011 26th IEEE/ACM International Conference on Automated Software Engineering (ASE 2011).

[14]  Bertrand Meyer,et al.  Experimental assessment of random testing for object-oriented software , 2007, ISSTA '07.

[15]  Nikolai Tillmann,et al.  Parameterized unit tests , 2005, ESEC/FSE-13.

[16]  Manuel Oriol,et al.  YETI on the Cloud , 2010, 2010 Third International Conference on Software Testing, Verification, and Validation Workshops.

[17]  Gogul Balakrishnan,et al.  Feedback-directed unit test generation for C/C++ using concolic execution , 2013, 2013 35th International Conference on Software Engineering (ICSE).

[18]  Nikolai Tillmann,et al.  Pex-White Box Test Generation for .NET , 2008, TAP.