# Achieving High Coverage for Floating-point Code via Unconstrained   Programming (Extended Version)

**Authors:** Zhoulai Fu, Zhendong Su

arXiv: 1704.03394 · 2017-04-17

## TL;DR

This paper introduces a novel approach using unconstrained programming to achieve high coverage in testing floating-point code, transforming the challenge of floating-point constraints into an optimization problem.

## Contribution

The paper presents a new method and tool, CoverMe, that leverages unconstrained programming to efficiently generate test inputs for high coverage of floating-point programs.

## Key findings

- CoverMe achieves 90.8% branch coverage on average.
- CoverMe outperforms random testing, AFL, and Austin in coverage and speed.
- The approach effectively handles floating-point constraints in testing.

## Abstract

Achieving high code coverage is essential in testing, which gives us confidence in code quality. Testing floating-point code usually requires painstaking efforts in handling floating-point constraints, e.g., in symbolic execution. This paper turns the challenge of testing floating-point code into the opportunity of applying unconstrained programming --- the mathematical solution for calculating function minimum points over the entire search space. Our core insight is to derive a representing function from the floating-point program, any of whose minimum points is a test input guaranteed to exercise a new branch of the tested program. This guarantee allows us to achieve high coverage of the floating-point program by repeatedly minimizing the representing function.   We have realized this approach in a tool called CoverMe and conducted an extensive evaluation of it on Sun's C math library. Our evaluation results show that CoverMe achieves, on average, 90.8% branch coverage in 6.9 seconds, drastically outperforming our compared tools: (1) Random testing, (2) AFL, a highly optimized, robust fuzzer released by Google, and (3) Austin, a state-of-the-art coverage-based testing tool designed to support floating-point code.

## Full text

_Full body text omitted from this summary view._ Fetch the complete paper as Markdown: https://tomesphere.com/paper/1704.03394/full.md

## Figures

10 figures with captions in the complete paper: https://tomesphere.com/paper/1704.03394/full.md

## References

51 references — full list in the complete paper: https://tomesphere.com/paper/1704.03394/full.md

---
Source: https://tomesphere.com/paper/1704.03394