Taxonomy of Bugs A taxonomy is a structure
Taxonomy of Bugs A taxonomy is a structure for classifying the bugs in hierarchical categories. The major categories are requirements, features functionality, structure, data, implementation and coding, integration, system and software architecture and testing.
Requirements, Features and Functionality Bugs Requirements and specifications : developed from them can be incomplete, ambiguous. They can be misunderstood or impossible to understand. Features can be added, modified, deleted. Feature bugs: can be wrong, missing, extra. A missing feature is the easiest to detect and correct. A wrong feature could have deep design implications. Extra features were once considered desirable. Feature interaction : providing clear, correct, implementable, and testable feature is not enough. Features usually come in groups of related features Specification & feature bug remedies: 1. short term support: Fully automatic test case generation is possible Long term support: This approach will reduce but not eliminate, specification of bugs.
Structural Bugs control and sequence of bugs: It includes path left out, unreachable code, improper nesting of loops, loop termination criteria incorrect, missing process steps. path testing can be used to identify these bugs Logic bugs: Bugs in logic. misunderstanding the sematics of the order in which Boolean expression is evaluated. These bugs are part of logical processing not related to control flow, then they are categorized as processing bugs
Processing bugs: includes arithmetic bugs, algebraic, mathematical, algorithm and general processing. although these bugs are frequent 12%, they tend to be caught in good unit testing. Initialization bugs: forgetting to initialize the working space, registers, or data areas; A bug in the first value of a loop control parameter; accepting initial value without a validation check. The test methods are helpful for the test deign and for debugging initialization problems Data flow bugs: A data flow anomaly occurs when there is path along which we expect to do something unreasonable with data, such as using an uninitialized variable, or initializing twice without an intermediate use, modifying the data and not storing or using the result.
Data bugs include all bugs that arise from the specification of data objects, their formats, the number of such objects, and their initial values. To increase the proportion of the source statements devoted to data definition is a direct consequence of two factors. Dramatic reduction in the cost of main memory and disc storage The high cost of creating and testing software. Dynamic Vs static Dynamic data are transitory. A storage object may be used to hold dynamic data of different types, with different formats , attributes. Static data are fixed in form and content. They appear in the source code or database, either directly or indirectly.
2)information, parameter and control: static or dynamic data can serve in one of three roles or in a combination of roles. . 3)Data specification consist of three parts: contents, attributes and attributes Contents: actual bit pattern, character string Structure: the size and shape and numbers that describe the data object. Attributes: semantics associated with the contents of a data object. ex: integer, alphanumeric string.
Coding Bugs Codings errors of all kinds can create any of the other kind of bugs Most common kind of coding bug and often considered are documentation bugs. These bugs are simple spelling errors or the result of poor writing. Giving good source syntax checking.
Interface integration and system bug External interfaces Internal interfaces Hardware architecture Software architecture Operating system Control and sequence bugs Resource management problems Integration bugs System bugs
External Interfaces The external interfaces are the means used to communicate with the world This include devices are sensors, input terminals, printers and communication lines Through protocols we can communicate the world
Internal Interfaces It is based on internal environment The internal interfaces are closely related to the implementation details. They are Protocol design bugs I/p & O/p format bugs Wrong subroutine call sequence Call parameter bugs Misunderstood entry
Hardware architecture Software bugs are related to hardware architecture Ex: address generation error I/o device operation or instruction error I/O device address error Misunderstood the device status code Device protocol error Incorrect interrupt handling
Operating system Program bugs related to the operating system are combination of hardware architecture and interface bugs, mostly caused by misunderstanding of what is the operating system does. The remedy for OS interface bugs is the same as for hardware bugs.
Software architecture bugs are often the kind that are called interactive All test techniques are applicable to the discovery of s/w architecture bugs Some of the sample bugs are failure to block or unblock interrupts, register or memory were initialized or not initialized
Control and sequence bugs System level control and sequence bugs include ignored timing. Assuming that events occur in a specified sequence. Specifying wrong priority, program state, processing level, redundancy. Path testing is applicable for this type of bugs.
Resource management problems Wrong resources used Resources already in use Resources are not returned into the right pool. Complicated resource structures are often designed in a misguided attempt to save memory Memory is cheap and getting cheaper Remedies 1. To prevent the bugs test methods can be used in efficient manner 2. Resource management is to keep the resource structure is simple.
Integration bugs are bugs having to do with the integration of , and with the interfaces between working and tested components All methods are used to transfer data directly or indirectly between components and all methods by which component share data can host the integration bugs. Integration bugs do not constitute a big bug category(9%) they are expensive category because they are usually caught late.
System bugs It can covering all types of bugs like Hardware bugs Software bugs operating system bugs All testing techniques can be useful at all levels. unit testing and the integration testing can be used in system testing
- Slides: 17