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...
Saved in:
Main Authors: | , |
---|---|
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 |