Profile-guided program simplification for effective testing and analysis

Many testing and analysis techniques have been developed for inhouse use. Although they are effective at discovering defects before a program is deployed, these techniques are often limited due to the complexity of real-world code and thus miss program faults. It will be the users of the program who...

Full description

Saved in:
Bibliographic Details
Main Authors: JIANG, Lingxiao, SU, Zhendong
Format: text
Language:English
Published: Institutional Knowledge at Singapore Management University 2008
Subjects:
Online Access:https://ink.library.smu.edu.sg/sis_research/951
https://ink.library.smu.edu.sg/context/sis_research/article/1950/viewcontent/fse08_ProfileGuidedPrgramSimplification.pdf
Tags: Add Tag
No Tags, Be the first to tag this record!
Institution: Singapore Management University
Language: English
id sg-smu-ink.sis_research-1950
record_format dspace
spelling sg-smu-ink.sis_research-19502017-02-05T02:27:28Z Profile-guided program simplification for effective testing and analysis JIANG, Lingxiao SU, Zhendong Many testing and analysis techniques have been developed for inhouse use. Although they are effective at discovering defects before a program is deployed, these techniques are often limited due to the complexity of real-world code and thus miss program faults. It will be the users of the program who eventually experience failures caused by the undetected faults. To take advantage of the large number of program runs carried by the users, recent work has proposed techniques to collect execution profiles from the users for developers to perform post-deployment failure analysis. However, in order to protect users' privacy and to reduce run-time overhead, such profiles are usually not detailed enough for the developers to identify or fix the root causes of the failures. In this paper, we propose a novel approach to utilize user execution profiles for more effective in-house testing and analysis. Our key insight is that execution profiles for program failures can be used to simplify a program, while preserving its erroneous behavior. By simplifying a program and scaling down its complexity according to its profiles, in-house testing and analysis techniques can be performed more accurately and efficiently, and pragmatically program defects that occur more often and are (arguably) more relevant to users will be given preference during failure analysis. Specifically, we adapt statistical debugging on execution profiles to predict likely failure-related code and use a syntax-directed algorithm to trim failure-irrelevant code from a program, while preserving its erroneous behavior as much as possible. We conducted case studies on a testing engine, CUTE, and a software model checker, BLAST, to evaluate our technique. We used subject programs from the Aristotle Analysis System and the Software-artifact Infrastructure Repository (SIR). Our empirical results show that using simplified programs, CUTE and BLAST find more bugs with improved accuracy and performance: they were able to detect 20 and 21 (out of 139) more bugs respectively in about half of the time as they took on the original test programs. 2008-11-01T07:00:00Z text application/pdf https://ink.library.smu.edu.sg/sis_research/951 info:doi/10.1145/1453101.1453110 https://ink.library.smu.edu.sg/context/sis_research/article/1950/viewcontent/fse08_ProfileGuidedPrgramSimplification.pdf http://creativecommons.org/licenses/by-nc-nd/4.0/ Research Collection School Of Computing and Information Systems eng Institutional Knowledge at Singapore Management University program simplification testing and analysis profiling statistical debugging Software Engineering
institution Singapore Management University
building SMU Libraries
continent Asia
country Singapore
Singapore
content_provider SMU Libraries
collection InK@SMU
language English
topic program simplification
testing and analysis
profiling
statistical debugging
Software Engineering
spellingShingle program simplification
testing and analysis
profiling
statistical debugging
Software Engineering
JIANG, Lingxiao
SU, Zhendong
Profile-guided program simplification for effective testing and analysis
description Many testing and analysis techniques have been developed for inhouse use. Although they are effective at discovering defects before a program is deployed, these techniques are often limited due to the complexity of real-world code and thus miss program faults. It will be the users of the program who eventually experience failures caused by the undetected faults. To take advantage of the large number of program runs carried by the users, recent work has proposed techniques to collect execution profiles from the users for developers to perform post-deployment failure analysis. However, in order to protect users' privacy and to reduce run-time overhead, such profiles are usually not detailed enough for the developers to identify or fix the root causes of the failures. In this paper, we propose a novel approach to utilize user execution profiles for more effective in-house testing and analysis. Our key insight is that execution profiles for program failures can be used to simplify a program, while preserving its erroneous behavior. By simplifying a program and scaling down its complexity according to its profiles, in-house testing and analysis techniques can be performed more accurately and efficiently, and pragmatically program defects that occur more often and are (arguably) more relevant to users will be given preference during failure analysis. Specifically, we adapt statistical debugging on execution profiles to predict likely failure-related code and use a syntax-directed algorithm to trim failure-irrelevant code from a program, while preserving its erroneous behavior as much as possible. We conducted case studies on a testing engine, CUTE, and a software model checker, BLAST, to evaluate our technique. We used subject programs from the Aristotle Analysis System and the Software-artifact Infrastructure Repository (SIR). Our empirical results show that using simplified programs, CUTE and BLAST find more bugs with improved accuracy and performance: they were able to detect 20 and 21 (out of 139) more bugs respectively in about half of the time as they took on the original test programs.
format text
author JIANG, Lingxiao
SU, Zhendong
author_facet JIANG, Lingxiao
SU, Zhendong
author_sort JIANG, Lingxiao
title Profile-guided program simplification for effective testing and analysis
title_short Profile-guided program simplification for effective testing and analysis
title_full Profile-guided program simplification for effective testing and analysis
title_fullStr Profile-guided program simplification for effective testing and analysis
title_full_unstemmed Profile-guided program simplification for effective testing and analysis
title_sort profile-guided program simplification for effective testing and analysis
publisher Institutional Knowledge at Singapore Management University
publishDate 2008
url https://ink.library.smu.edu.sg/sis_research/951
https://ink.library.smu.edu.sg/context/sis_research/article/1950/viewcontent/fse08_ProfileGuidedPrgramSimplification.pdf
_version_ 1770570791312687104