Method and apparatus for automatically isolating minimal distinguishing stimuli in design verification and software development
First Claim
Patent Images
1. A computer-implemented method of debugging software comprising:
- obtaining a software module;
obtaining a first input test vector;
obtaining a bug list, wherein said bug list comprises a minimal set of stimuli to reproduce a software bug in said software module;
generating a first output vector by applying said first input test vector to said software module;
applying a comparison test to said first output vector to determine whether a bug exists in said software module;
applying a module decomposition test to said software module when the result of said comparison test is positive;
obtaining a module decomposition list comprising two or more submodules of said software module and iteratively processing said module decomposition list when the result of said module decomposition test is positive, wherein iteratively processing said module decomposition list comprises removing at least one submodule; and
appending said software module and said first input test vector to said bug list when said software module is a minimal module based on module decomposition list as determined by the module decomposition test.
2 Assignments
0 Petitions
Accused Products
Abstract
The invention provides a method for detecting and isolating software bugs and generating a minimal set of stimuli to reproduce the bugs. The present invention utilizes a recursive algorithm to compare the output of successively smaller software blocks of a program in development to a verified output sample. The smallest software blocks which are found to contain a bug are isolated. For each of these isolated blocks, the smallest input vector is determined such that the application of this vector to the block expresses the bug. The present invention utilizes a separate recursive algorithm to determine these minimal vectors.
17 Citations
8 Claims
-
1. A computer-implemented method of debugging software comprising:
-
obtaining a software module; obtaining a first input test vector; obtaining a bug list, wherein said bug list comprises a minimal set of stimuli to reproduce a software bug in said software module; generating a first output vector by applying said first input test vector to said software module; applying a comparison test to said first output vector to determine whether a bug exists in said software module; applying a module decomposition test to said software module when the result of said comparison test is positive; obtaining a module decomposition list comprising two or more submodules of said software module and iteratively processing said module decomposition list when the result of said module decomposition test is positive, wherein iteratively processing said module decomposition list comprises removing at least one submodule; and appending said software module and said first input test vector to said bug list when said software module is a minimal module based on module decomposition list as determined by the module decomposition test. - View Dependent Claims (2, 3, 4, 5, 6, 7)
-
-
8. A computer system for debugging software comprising:
-
a processor; a memory; a storage device; and software instructions stored in the memory for enabling the computer system under control of the processor, to; obtain a software module; obtain a first input test vector; obtain a bug list, wherein said bug list comprises a minimal set of stimuli to reproduce a software bug in said software module; generate a first output vector by applying said first input test vector to said software module; apply a comparison test to said first output vector to determine whether a bug exists in said software module; apply a module decomposition test to said software module when the result of said comparison test is positive; obtain a module decomposition list comprising two or more submodules of said software module and iteratively processing said module decomposition list when the result of said module decomposition test is positive, wherein iteratively processing said module decomposition list comprises removing at least one submodule; and append said software module and said first input test vector to said bug list when said software module is a minimal module based on module decomposition list as determined by the module decomposition test.
-
Specification