Table of Contents
Fetching ...

Taming the Beast: Fully Automated Unit Testing with Coyote C++

Sanghoon Rho, Philipp Martens, Seungcheol Shin, Yeoneo Kim

TL;DR

The paper addresses automated white-box unit test generation for C/C++, with particular focus on the complexity of C++ in industrial software. It introduces Coyote C++, a concolic-execution-based tool that auto-generates test inputs and harnesses via LLVM IR instrumentation and a CCS-driven search, enabling high coverage with minimal manual intervention. Empirical results show substantial improvements over prior work (e.g., near 92% statement and 89% branch coverage in under an hour) and demonstrate practical viability for industrial validation such as automotive software. The work also provides a pathway for manual refinement and outlines future directions in tailored driver/stub generation and static analysis to bound inputs and loops, enhancing robustness and scalability.

Abstract

In this paper, we present Coyote C++, a fully automated white-box unit testing tool for C and C++. Whereas existing tools have struggled to realize unit test generation for C++, Coyote C++ is able to produce high coverage results from unit test generation at a testing speed of over 10,000 statements per hour. This impressive feat is made possible by the combination of a powerful concolic execution engine with sophisticated automated test harness generation. Additionally, the GUI of Coyote C++ displays detailed code coverage visualizations and provides various configuration features for users seeking to manually optimize their coverage results. Combining potent one-click automated testing with rich support for manual tweaking, Coyote C++ is the first automated testing tool that is practical enough to make automated testing of C++ code truly viable in industrial applications.

Taming the Beast: Fully Automated Unit Testing with Coyote C++

TL;DR

The paper addresses automated white-box unit test generation for C/C++, with particular focus on the complexity of C++ in industrial software. It introduces Coyote C++, a concolic-execution-based tool that auto-generates test inputs and harnesses via LLVM IR instrumentation and a CCS-driven search, enabling high coverage with minimal manual intervention. Empirical results show substantial improvements over prior work (e.g., near 92% statement and 89% branch coverage in under an hour) and demonstrate practical viability for industrial validation such as automotive software. The work also provides a pathway for manual refinement and outlines future directions in tailored driver/stub generation and static analysis to bound inputs and loops, enhancing robustness and scalability.

Abstract

In this paper, we present Coyote C++, a fully automated white-box unit testing tool for C and C++. Whereas existing tools have struggled to realize unit test generation for C++, Coyote C++ is able to produce high coverage results from unit test generation at a testing speed of over 10,000 statements per hour. This impressive feat is made possible by the combination of a powerful concolic execution engine with sophisticated automated test harness generation. Additionally, the GUI of Coyote C++ displays detailed code coverage visualizations and provides various configuration features for users seeking to manually optimize their coverage results. Combining potent one-click automated testing with rich support for manual tweaking, Coyote C++ is the first automated testing tool that is practical enough to make automated testing of C++ code truly viable in industrial applications.
Paper Structure (11 sections, 2 figures, 1 table)

This paper contains 11 sections, 2 figures, 1 table.

Figures (2)

  • Figure 1: Progress displayed in the main page of Coyote C++
  • Figure 2: Results page with test cases and coverage info