According to the International Software Testing Qualifications Board (ISTQB), software testing is defined as:

“The process of evaluating a software product to detect differences between given input and expected output, and to assess the quality of a software product.”

Software Testing Software (b ᵔ▽ᵔ)b:

Test Case Template for Excel

Purpose of Software Testing

  • Validation: Ensuring that the software meets the needs and expectations of the end-users.
  • Verification: Checking that the software correctly implements the intended design and requirements.
  • Risk Management: Identifying and reducing risks associated with software failures.

Key Concepts

  • Evaluation of Software: Systematic assessment of the software to ensure that it meets specified requirements and functions correctly.
  • Detection of Differences: Identification of defects or discrepancies between how the software is supposed to work (expected outcome) and how it actually performs (actual outcome).
  • Assessment of Quality: Measurement and improvement of the quality of the software to ensure it meets the necessary standards.
  • Process-Oriented: Testing is not a one-time activity but an ongoing process that occurs throughout the software development lifecycle.

Types of Testing

ISTQB categorizes testing into several types based on different criteria:

Scope:

  • Unit Testing: Testing individual components or pieces of code.
  • Integration Testing: Testing the interaction between integrated units or components.
  • System Testing: Testing the complete system as a whole.
  • Acceptance Testing: Testing conducted to determine if the software meets the acceptance criteria and is ready for deployment.

Objective:

  • Functional Testing: Verifying that the software functions according to specified requirements.
  • Non-Functional Testing: Testing aspects like performance, usability, reliability, etc.
  • Regression Testing: Ensuring that new code changes do not adversely affect existing functionality.

Execution:

  • Manual Testing: Tests are executed manually by a human tester.
  • Automated Testing: Tests are executed automatically using tools or scripts.

Principles of Testing

ISTQB also outlines several fundamental principles of software testing:

  • Testing shows the presence of defects: Testing cannot prove that the software is defect-free.
  • Exhaustive testing is impossible: It’s impossible to test all possible inputs and scenarios, so testing should be risk-based and prioritized.
  • Early testing: Testing activities should start as early as possible in the software development lifecycle.
  • Defect clustering: A small number of modules typically contain most of the defects.
  • Pesticide paradox: Repeated execution of the same tests will eventually no longer find new defects, so tests need to be regularly reviewed and revised.
  • Testing is context-dependent: Different types of software require different testing strategies and methods.
  • Absence-of-errors fallacy: Finding and fixing defects does not guarantee that the software meets users’ needs.