ERROR GUESSING
9.8 ERROR GUESSING
Error guessing is a test case design technique where a test engineer uses experi- ence to (i) guess the types and probable locations of defects and (ii) design tests specifically to reveal the defects. For example, if memory is allocated dynamically, then a good place to look for error is the portion of the code after the allocated memory is used—there is a possibility that unused memory is not deallocated. An experienced test engineer can ask the question: Are all the allocated memory blocks correctly deallocated?
Though experience is of much use in guessing errors, it is useful to add some structure to the technique. It is good to prepare a list of types of errors that can
be uncovered. The error list can aid us in guessing where errors may occur. Such
a list should be maintained from experience gained from earlier test projects. The following are the critical areas of the code where defects are most likely to be found:
• Different portions of the code have different complexity. One can measure code complexity by means of cyclomatic complexity. Portions of the code with a high cyclomatic complexity are likely to have defects. Therefore, it is productive to concentrate more efforts on those portions of code.
• The code that has been recently added or modified can potentially contain defects. The probability of inadvertently introducing defects with addition and modification of code is high.
• Portions of code with prior defect history are likely to be prone to errors. Such code blocks are likely to be defective, because of clustering tendency of the defects, despite the efforts to remove the defects by rewriting the code.
256 CHAPTER 9 FUNCTIONAL TESTING
• Parts of a system where new, unproven technology has been used is likely to contain defects. For example, if the code has been automatically gen- erated from a formal specification of the system, then there is higher possibility of defects imbedded into the code.
• Portions of the code for which the functional specification has been loosely defined can be more defective.
• Code blocks that have been produced by novice developers can be defec- tive. If some developers have not been careful during coding in the past, then any code written by these developers should be examined in greater detail.
• Code segments for which a developer may have a low confidence level should receive more attention. The developers know the internal details of the system better than anyone else. Therefore, they should be quizzed on their comfort levels and more test effort be put on those areas where a developer feels less confident about their work.
• Areas where the quality practices have been poor should receive additional attention. An example of poor quality practice is not adequately testing a module at the unit level. Another example of poor quality practice is not performing code review for a critical part of a module.
A module that involved many developers should receive more test effort. If several developers worked on a particular part of the code, there is a possibility of misunderstanding among different developers and, therefore, there is a good possibility of errors in these parts of the code.
Parts
» SOFTWARE TESTING AND QUALITY ASSURANCE Theory and Practice – KSHIRASAGAR NAIK – 2008
» FAILURE, ERROR, FAULT, AND DEFECT
» SOURCES OF INFORMATION FOR TEST CASE SELECTION
» WHITE-BOX AND BLACK-BOX TESTING
» MONITORING AND MEASURING TEST EXECUTION
» THEORY OF GOODENOUGH AND GERHART
» THEORY OF WEYUKER AND OSTRAND
» UNIT TESTING IN EXTREME PROGRAMMING
» CHAPTER 4 CONTROL FLOW TESTING
» COMPARISON OF DATA FLOW TEST SELECTION CRITERIA
» FEASIBLE PATHS AND TEST SELECTION CRITERIA
» COMPARISON OF TESTING TECHNIQUES
» CONCEPT OF INTEGRATION TESTING
» GRANULARITY OF SYSTEM INTEGRATION TESTING
» Incremental In this approach, integration testing is conducted in an incremental manner as
» Bottom Up In the bottom-up approach, system integration begins with the integration of lowest
» Hardware Design Verification Tests
» FUNCTIONAL TESTING CONCEPTS OF HOWDEN
» COMPLEXITY OF APPLYING FUNCTIONAL TESTING
» EQUIVALENCE CLASS PARTITIONING
» Data Declarations TTCN-3 allows the declarations of constants and variables. A constant is denoted
» ADDITIONAL COVERAGE CRITERIA FOR SYSTEM TESTING
» TEST OBJECTIVE IDENTIFICATION
» MODELING A TEST DESIGN PROCESS
» STRUCTURE OF A SYSTEM TEST PLAN
» EVALUATION AND SELECTION OF TEST AUTOMATION TOOLS
» CHARACTERISTICS OF AUTOMATED TEST CASES
» TEST AUTOMATION INFRASTRUCTURE
» ORTHOGONAL DEFECT CLASSIFICATION
» MEASURING TEST EFFECTIVENESS
» Time Time plays a key role in modeling software reliability metrics. Let us go back
» FACTORS INFLUENCING SOFTWARE RELIABILITY
» SOFTWARE QUALITY ASSURANCE GROUP
» ISO 9000:2000 SOFTWARE QUALITY STANDARD
» BASIC IDEA IN SOFTWARE PROCESS
Show more