Achieving high coverage for floating-point code via unconstrained programming
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 th...
Gespeichert in:
Veröffentlicht in: | SIGPLAN notices 2017-09, Vol.52 (6), p.306-319 |
---|---|
Hauptverfasser: | , |
Format: | Artikel |
Sprache: | eng |
Online-Zugang: | Volltext |
Tags: |
Tag hinzufügen
Keine Tags, Fügen Sie den ersten Tag hinzu!
|
container_end_page | 319 |
---|---|
container_issue | 6 |
container_start_page | 306 |
container_title | SIGPLAN notices |
container_volume | 52 |
creator | Fu, Zhoulai Su, Zhendong |
description | 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. |
doi_str_mv | 10.1145/3140587.3062383 |
format | Article |
fullrecord | <record><control><sourceid>crossref</sourceid><recordid>TN_cdi_crossref_primary_10_1145_3140587_3062383</recordid><sourceformat>XML</sourceformat><sourcesystem>PC</sourcesystem><sourcerecordid>10_1145_3140587_3062383</sourcerecordid><originalsourceid>FETCH-LOGICAL-c1273-c766da01465c913d5fa8cb7bc443e304ffe044b05fd7abb8ed13635ea73f0dca3</originalsourceid><addsrcrecordid>eNotkDtPwzAURi0EEqEws_oPpL0313bCWFW8pCIWmCPHj8SoiSsnROLfE0SmbzifznAYu0fYIgq5IxQgq3JLoAqq6IJlKGWVIyq4ZBmQKnIkAdfsZhy_AICgqDL2tjddcHMYWt6FtuMmzi7p1nEfE_enqKcF5ecYhmlh1vE5aP49mDiMU9JhcJafU2yT7vvleMuuvD6N7m7dDft8evw4vOTH9-fXw_6YGyxKyk2plNWAQknzgGSl15VpysYIQY5AeO9AiAakt6VumspZJEXS6ZI8WKNpw3b_XpPiOCbn63MKvU4_NUL9V6Nea9RrDfoFX-pTVQ</addsrcrecordid><sourcetype>Aggregation Database</sourcetype><iscdi>true</iscdi><recordtype>article</recordtype></control><display><type>article</type><title>Achieving high coverage for floating-point code via unconstrained programming</title><source>ACM Digital Library</source><creator>Fu, Zhoulai ; Su, Zhendong</creator><creatorcontrib>Fu, Zhoulai ; Su, Zhendong</creatorcontrib><description>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.</description><identifier>ISSN: 0362-1340</identifier><identifier>EISSN: 1558-1160</identifier><identifier>DOI: 10.1145/3140587.3062383</identifier><language>eng</language><ispartof>SIGPLAN notices, 2017-09, Vol.52 (6), p.306-319</ispartof><oa>free_for_read</oa><woscitedreferencessubscribed>false</woscitedreferencessubscribed><citedby>FETCH-LOGICAL-c1273-c766da01465c913d5fa8cb7bc443e304ffe044b05fd7abb8ed13635ea73f0dca3</citedby><cites>FETCH-LOGICAL-c1273-c766da01465c913d5fa8cb7bc443e304ffe044b05fd7abb8ed13635ea73f0dca3</cites></display><links><openurl>$$Topenurl_article</openurl><openurlfulltext>$$Topenurlfull_article</openurlfulltext><thumbnail>$$Tsyndetics_thumb_exl</thumbnail><link.rule.ids>315,781,785,27926,27927</link.rule.ids></links><search><creatorcontrib>Fu, Zhoulai</creatorcontrib><creatorcontrib>Su, Zhendong</creatorcontrib><title>Achieving high coverage for floating-point code via unconstrained programming</title><title>SIGPLAN notices</title><description>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.</description><issn>0362-1340</issn><issn>1558-1160</issn><fulltext>true</fulltext><rsrctype>article</rsrctype><creationdate>2017</creationdate><recordtype>article</recordtype><recordid>eNotkDtPwzAURi0EEqEws_oPpL0313bCWFW8pCIWmCPHj8SoiSsnROLfE0SmbzifznAYu0fYIgq5IxQgq3JLoAqq6IJlKGWVIyq4ZBmQKnIkAdfsZhy_AICgqDL2tjddcHMYWt6FtuMmzi7p1nEfE_enqKcF5ecYhmlh1vE5aP49mDiMU9JhcJafU2yT7vvleMuuvD6N7m7dDft8evw4vOTH9-fXw_6YGyxKyk2plNWAQknzgGSl15VpysYIQY5AeO9AiAakt6VumspZJEXS6ZI8WKNpw3b_XpPiOCbn63MKvU4_NUL9V6Nea9RrDfoFX-pTVQ</recordid><startdate>20170914</startdate><enddate>20170914</enddate><creator>Fu, Zhoulai</creator><creator>Su, Zhendong</creator><scope>AAYXX</scope><scope>CITATION</scope></search><sort><creationdate>20170914</creationdate><title>Achieving high coverage for floating-point code via unconstrained programming</title><author>Fu, Zhoulai ; Su, Zhendong</author></sort><facets><frbrtype>5</frbrtype><frbrgroupid>cdi_FETCH-LOGICAL-c1273-c766da01465c913d5fa8cb7bc443e304ffe044b05fd7abb8ed13635ea73f0dca3</frbrgroupid><rsrctype>articles</rsrctype><prefilter>articles</prefilter><language>eng</language><creationdate>2017</creationdate><toplevel>online_resources</toplevel><creatorcontrib>Fu, Zhoulai</creatorcontrib><creatorcontrib>Su, Zhendong</creatorcontrib><collection>CrossRef</collection><jtitle>SIGPLAN notices</jtitle></facets><delivery><delcategory>Remote Search Resource</delcategory><fulltext>fulltext</fulltext></delivery><addata><au>Fu, Zhoulai</au><au>Su, Zhendong</au><format>journal</format><genre>article</genre><ristype>JOUR</ristype><atitle>Achieving high coverage for floating-point code via unconstrained programming</atitle><jtitle>SIGPLAN notices</jtitle><date>2017-09-14</date><risdate>2017</risdate><volume>52</volume><issue>6</issue><spage>306</spage><epage>319</epage><pages>306-319</pages><issn>0362-1340</issn><eissn>1558-1160</eissn><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.</abstract><doi>10.1145/3140587.3062383</doi><tpages>14</tpages><oa>free_for_read</oa></addata></record> |
fulltext | fulltext |
identifier | ISSN: 0362-1340 |
ispartof | SIGPLAN notices, 2017-09, Vol.52 (6), p.306-319 |
issn | 0362-1340 1558-1160 |
language | eng |
recordid | cdi_crossref_primary_10_1145_3140587_3062383 |
source | ACM Digital Library |
title | Achieving high coverage for floating-point code via unconstrained programming |
url | https://sfx.bib-bvb.de/sfx_tum?ctx_ver=Z39.88-2004&ctx_enc=info:ofi/enc:UTF-8&ctx_tim=2024-12-17T21%3A21%3A47IST&url_ver=Z39.88-2004&url_ctx_fmt=infofi/fmt:kev:mtx:ctx&rfr_id=info:sid/primo.exlibrisgroup.com:primo3-Article-crossref&rft_val_fmt=info:ofi/fmt:kev:mtx:journal&rft.genre=article&rft.atitle=Achieving%20high%20coverage%20for%20floating-point%20code%20via%20unconstrained%20programming&rft.jtitle=SIGPLAN%20notices&rft.au=Fu,%20Zhoulai&rft.date=2017-09-14&rft.volume=52&rft.issue=6&rft.spage=306&rft.epage=319&rft.pages=306-319&rft.issn=0362-1340&rft.eissn=1558-1160&rft_id=info:doi/10.1145/3140587.3062383&rft_dat=%3Ccrossref%3E10_1145_3140587_3062383%3C/crossref%3E%3Curl%3E%3C/url%3E&disable_directlink=true&sfx.directlink=off&sfx.report_link=0&rft_id=info:oai/&rft_id=info:pmid/&rfr_iscdi=true |