A debugging strategy based on the requirements of testing

Testing and debugging activities consume a significant amount of the software development and maintenance budget. To reduce this cost, the use of testing information for debugging purposes has been advocated. In general, heuristics are used to select structural testing requirements (nodes, branches...

Full description

Saved in:
Bibliographic Details
Published in:Journal of software maintenance and evolution Vol. 16; no. 4-5; pp. 277 - 308
Main Authors: Chaim, Marcos L., Maldonado, José C., Jino, Mario
Format: Journal Article
Language:English
Published: Chichester, UK John Wiley & Sons, Ltd 01-07-2004
Subjects:
Online Access:Get full text
Tags: Add Tag
No Tags, Be the first to tag this record!
Description
Summary:Testing and debugging activities consume a significant amount of the software development and maintenance budget. To reduce this cost, the use of testing information for debugging purposes has been advocated. In general, heuristics are used to select structural testing requirements (nodes, branches and definition–use associations) more closely related to the manifestation of a failure, which are then mapped into a piece of code. The intuition is that the selected piece of code is likely to contain the fault. However, this approach has its drawbacks. Heuristics that select a manageable piece of code are less likely to hit the fault and the piece of code itself does not provide enough guidance for program understanding—a major factor in program debugging. These problems occur because this approach relies only on static information—a fragment of code. We introduce a strategy for fault localization that addresses these problems. The strategy—called the debugging strategy based on the requirements of testing (DRT)—is based on the investigation of indications (or hints) provided at run‐time by data‐flow testing requirements (definition–use associations). Our claim is that the selected definition–use associations may fail to hit the fault site, but still provide information useful for fault localization. The strategy's novelty and attractiveness are threefold: (i) the focus on dynamic information related to testing data; (ii) implementation in state‐of‐the‐practice symbolic debuggers with a low overhead; and (iii) the use of algorithms which consume constant memory and are linear on the number of branches in the program. A case study shows that our claim is valid (for the subject program) and a prototype tool implements the strategy. Copyright © 2004 John Wiley & Sons, Ltd.
Bibliography:ark:/67375/WNG-JQKB6PDS-3
CAPES Foundation, Brasília, Brazil
CNPq, Brasília, Brazil
istex:6860B91F47886BD40D32C2BBC56400B3592EEBFF
ArticleID:SMR297
FAPESP, São Paulo, Brazil
ObjectType-Article-2
SourceType-Scholarly Journals-1
ObjectType-Feature-1
content type line 23
ISSN:1532-060X
1532-0618
DOI:10.1002/smr.297