June: A Type Testability Transformation for Improved ATG Performance
Strings are universal containers: they are flexible to use, abundant in code, and difficult to test. String-controlled programs are programs that make branching decisions based on string input. Automatically generating valid test inputs for these programs considering only character sequences rather than any underlying string-encoded structures, can be prohibitively expensive.
We present June, a tool that enables Java developers to expose any present latent string structure to test generation tools. June is an annotation-driven testability transformation and an extensible library, JuneLib, of structured string definitions. The core JuneLib definitions are empirically derived and provide templates for all structured strings in our test set.
June takes lightly annotated source code and injects code that permits an automated test generator (ATG) to focus on the creation of mutable substrings inside a structured string. Using June costs the developer little, with an average of 2.1 annotations per string-controlled class. June uses standard Java build tools and therefore deploys seamlessly within a Java project.
By feeding string structure information to an ATG tool, June dramatically reduces wasted effort; branches are effortlessly covered that would otherwise be extremely difficult, or impossible, to cover. This waste reduction both increases and speeds coverage. EvoSuite, for example, achieves the same coverage on June-ed classes in 1 minute, on average, as it does in 9 minutes on the un-June-ed class. These gains increase over time. On our corpus, June-ing a program compresses 24 hours of execution time into ca. 2 hours. We show that many ATG tools can reuse the same June-ed code: a few June annotations, a one-off cost, benefit many different testing regimes.
Thu 20 JulDisplayed time zone: Pacific Time (US & Canada) change
10:30 - 12:00 | ISSTA 10: Test OptimizationsTechnical Papers at Smith Classroom (Gates G10) Chair(s): Wing Lam University of Illinois at Urbana-Champaign | ||
10:30 15mTalk | More Precise Regression Test Selection via Reasoning about Semantics-Modifying ChangesACM SIGSOFT Distinguished Paper Technical Papers Yu Liu University of Texas at Austin, Jiyang Zhang University of Texas at Austin, Pengyu Nie University of Texas at Austin, Milos Gligoric University of Texas at Austin, Owolabi Legunsen Cornell University DOI | ||
10:45 15mTalk | Catamaran: Low-Overhead Memory Safety Enforcement via Parallel Acceleration Technical Papers Yiyu Zhang Nanjing University, Tianyi Liu Nanjing University, Zewen Sun Nanjing University, Zhe Chen Nanjing University of Aeronautics and Astronautics, Xuandong Li Nanjing University, Zhiqiang Zuo Nanjing University DOI | ||
11:00 15mTalk | Applying and Extending the Delta Debugging Algorithm for Elevator Dispatching Algorithms (Experience Paper) Technical Papers DOI Pre-print | ||
11:15 15mTalk | June: A Type Testability Transformation for Improved ATG Performance Technical Papers Dan Bruce University College London, David Kelly King’s College London, Hector Menendez King’s College London, Earl T. Barr University College London; Google DeepMind, David Clark University College London DOI | ||
11:30 15mTalk | Pattern-Based Peephole Optimizations with Java JIT Tests Technical Papers Zhiqiang Zang University of Texas at Austin, Aditya Thimmaiah University of Texas at Austin, Milos Gligoric University of Texas at Austin DOI Pre-print | ||
11:45 15mTalk | GPUHarbor: Testing GPU Memory Consistency at Large (Experience Paper)ACM SIGSOFT Distinguished Artifact Technical Papers Reese Levine University of California at Santa Cruz, Mingun Cho University of California at Davis, Devon McKee University of California at Santa Cruz, Andrew Quinn University of California at Santa Cruz, Tyler Sorensen University of California at Santa Cruz DOI |