Achieving high coverage for floating-point code via unconstrained programming

Author:

Fu Zhoulai1,Su Zhendong1

Affiliation:

1. University of California at Davis, USA

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.

Funder

National Science Foundation

Google Faculty Research Award

Publisher

Association for Computing Machinery (ACM)

Subject

Computer Graphics and Computer-Aided Design,Software

Reference44 articles.

1. AFL : American Fuzzy Lop. http://lcamtuf.coredump.cx/ afl/. Retrieved: 01 Novermber 2016. AFL: American Fuzzy Lop. http://lcamtuf.coredump.cx/ afl/. Retrieved: 01 Novermber 2016.

2. Clang: a C language family frontend for LLVM. http: //clang.llvm.org/. Retrieved: 24 March 2016. Clang: a C language family frontend for LLVM. http: //clang.llvm.org/. Retrieved: 24 March 2016.

3. Class StrictMath of Java SE 8. https://docs.oracle.com/ javase/8/docs/api/java/lang/StrictMath.html. Retrieved: 09 Novermber 2016. Class StrictMath of Java SE 8. https://docs.oracle.com/ javase/8/docs/api/java/lang/StrictMath.html. Retrieved: 09 Novermber 2016.

4. Code coverage analysis tool for AFL. https://github.com/ mrash/afl-cov. Retrieved: 01 Novermber 2016. Code coverage analysis tool for AFL. https://github.com/ mrash/afl-cov. Retrieved: 01 Novermber 2016.

5. An extended version of this paper. https://arxiv.org/pdf/ 1704.03394. An extended version of this paper. https://arxiv.org/pdf/ 1704.03394.

Cited by 7 articles. 订阅此论文施引文献 订阅此论文施引文献,注册后可以免费订阅5篇论文的施引文献,订阅后可以查看论文全部施引文献

1. Network information security and legal management based on embedded real-time task processing and high-frequency acquisition system;International Journal of System Assurance Engineering and Management;2023-09-25

2. NuMFUZZ: A Floating-Point Format Aware Fuzzer for Numerical Programs;2022 29th Asia-Pacific Software Engineering Conference (APSEC);2022-12

3. Exposing numerical bugs in deep learning via gradient back-propagation;Proceedings of the 29th ACM Joint Meeting on European Software Engineering Conference and Symposium on the Foundations of Software Engineering;2021-08-18

4. Automatically Tailoring Abstract Interpretation to Custom Usage Scenarios;Computer Aided Verification;2021

5. Harvey: a greybox fuzzer for smart contracts;Proceedings of the 28th ACM Joint Meeting on European Software Engineering Conference and Symposium on the Foundations of Software Engineering;2020-11-07

同舟云学术

1.学者识别学者识别

2.学术分析学术分析

3.人才评估人才评估

"同舟云学术"是以全球学者为主线,采集、加工和组织学术论文而形成的新型学术文献查询和分析系统,可以对全球学者进行文献检索和人才价值评估。用户可以通过关注某些学科领域的顶尖人物而持续追踪该领域的学科进展和研究前沿。经过近期的数据扩容,当前同舟云学术共收录了国内外主流学术期刊6万余种,收集的期刊论文及会议论文总量共计约1.5亿篇,并以每天添加12000余篇中外论文的速度递增。我们也可以为用户提供个性化、定制化的学者数据。欢迎来电咨询!咨询电话:010-8811{复制后删除}0370

www.globalauthorid.com

TOP

Copyright © 2019-2024 北京同舟云网络信息技术有限公司
京公网安备11010802033243号  京ICP备18003416号-3