Software Testing Methodology

Productivity

  • Cost of material + The rework
  • Discarded components
  • Cost of quality assurance and testing

Testing

Purpose of Testing:

  • Testing is an activity to check whether the actual result matches the expected result of the software and to ensure it is defect-free.
  • It is the process of finding and locating defects in software.
  • Performed by the testing team.
  • The purpose is to find as many defects as possible.
  • Comparatively less complex.

Debugging

  • The process of finding and resolving defects or problems within computer software, which prevents correct operation.

Debugging vs. Testing


Phases in a Tester’s Mental Life

  • Phase 0 - Debugging Oriented: Testing and debugging are considered the same.
  • Phase 1 - Demonstration Oriented: The purpose of testing is to demonstrate that the software works.
  • Phase 2 - Evaluation Oriented: The purpose is to show that the software does not work.
  • Phase 3 - Evaluation Oriented: Testing is used to detect bugs and fix them.
  • Phase 4 - Prevention Oriented: Testing techniques are identified based on the code to prevent defects.

Different Users in a Software System

  • Builder – Designs the software.
  • Buyer – Pays for the software.
  • Ultimate Beneficiary – The end user of the software.
  • Tester – Works to find defects in the software.
  • Operator – Handles user complaints and provides feedback to the tester.

Model for Testing

  • Environment Model: Represents the conditions in which the software operates.
  • Program Model: Represents the structure and behavior of the software being tested.
  • Expected: The result matches the predicted outcome.
  • Unexpected: The result deviates from the expected outcome.

Nature and Psychology of Bugs

Big Model

  • Bugs (Behavior & Beliefs): Bugs arise due to different behaviors and beliefs of developers.

Bug Theories

  1. Benign Bug Hypothesis – Bugs are harmless.
  2. Buy Locality Hypothesis – A bug in one component only affects its behavior.
  3. Control Bug Dominance – Errors in control structures dominate system failures.
  4. Code/Data Separation – Bugs separate code and data.
  5. Lingua Salvatore Est – Syntax and semantics help eliminate bugs.
  6. Correction Abide – A corrected bug may still cause issues.
  7. Silver Bullets – Language and design-related bugs.
  8. Sadism Suffices – Repeated testing ensures stability.
  9. Angelic Testers – Testers are considered better at identifying issues than programmers.

Consequences of Bugs

Impact LevelEffect
MildMisspelled output.
ModerateAffects system performance.
AnnoyingAlters system behavior.
DisturbingRefuses to handle legal transactions.
SeriousLoses track of transactions.
Very SeriousCauses incorrect transactions.
ExtremeAffects multiple users or systems.
IntolerableCauses data corruption, making detection/correction difficult.
CatastrophicLeads to total system failure.
InfectiousCorrupts the entire system, leading to environmental failure.
Link to original

Taxonomy of Bugs

Requirement Features and Functionality Bugs

  • Feature Bugs – Wrong or missing features.
  • Feature Interaction Bugs – Issues arising from interactions between a group of features.

Structural Bugs

  • Control / Sequence Bugs – Errors in switches, loops, and logic (e.g., incorrect if-then-else statements).
  • Processing Bugs – Errors in arithmetic operations.
  • Initialization Bugs – Incorrect initialization or wrong format.
  • Data Flow Bugs – Modifying results incorrectly.

Data Bugs

  • Dynamic or Static Data Issues – Errors in handling data types, storage, or processing.

Coding Bugs

  • Errors in Code Implementation – Mistakes in syntax, logic, or algorithms.

Interface, Integration, and System Bugs

  • External Testing Bugs – Issues found in external testing.
  • Internal Testing Bugs – Errors detected during prototype testing.
  • Hardware Architecture Bugs – Problems related to I/O operations and transactions.
  • OS Bugs – Bugs caused by a combination of hardware and interface failures.
  • Software Architecture Bugs – Failures in handling memory allocation and resource management.
  • System Bugs – General system-level errors affecting overall functionality.

Test and Test Design Bugs

  • Errors in Test Planning and Execution – Mistakes in test cases, testing methods, and validation procedures.
Link to original