Software Testing is a process that consists of all test life cycle activities like static and dynamic testing concerned with planning, preparation and evaluation of software products to determine that the software products satisfy customers requirements and are fit for customers use. Software Testing is done to find software defects or failures in advance.

ISTQB definition of Software Testing

As per ISTQB software testing can be divided into two parts (Testing as a Process and Objectives of Testing), lets go through both of these in detail one by one.

Testing as a process

Let us understand testing as a process below in detail. Software Testing is not a standalone activity, it is a process of activities which consists of several steps in the whole process.

  1. Testing is a process
    Testing is not a standalone activity, It is a series of activities. Software Testing is done in all phases of Software Development Life Cycle(SDLC). Testers start with static testing which includes reviewing the documents like Software Requirements Specifications(SRS), High Level Design(HLD) etc. and in later phases of Software Development Life Cycle(SDLC) when tester gets the working software product he installs the software and validates that the software functions as per the end user requirements.

  2. Testing is both static & dynamic
    Software Testing consists of both both Static and Dynamic verification. In initial phases of Software Development Life Cycle(SDLC) static testing is done for the various work products available during initial phases of SDLC. Some of the static testing techniques used in initial phases are:
    – Technical Reviews
    – Walkthrough
    – Inspection
    – Static Code Analysis
    Once the development team starts coding and building the software and it becomes available to tester in the form of working build then he starts dynamic testing and validates that software works as expected and meets customer requirements. Some of the dynamic testing levels are:
    – Unit Testing
    – Integration Testing
    – System Testing
    – Acceptance Testing

  3. Testing requires Test Planning
    Test planning is the most important part of software testing. You need to do test planning for:
    -What you want to achieve?
    -Who will do what?
    -Time frame of testing
    -Control the test progress
    -Prepare test summary reports
  4. Test Preparation
    Once test plan has been finalized you need to do test preparation. The main activities of Test Preparation are:
    -Prepare test cases
    -Prepare test environment
    -Prepare test data

  5. Evaluation
    While test execution you also need to evaluate the software and make sure that:
    -It meets the exit criteria
    -It is easy to use (Usability testing)
    -Meets end user requirements

  6. Software products & related work products
    Software testing is not just about testing the software code. It requires testing all the related documents like:
    -Software requirements documents(SRS)
    -Design documents(HLD/LLD)
    -Quick reference guide
    -Training materials
    -User guides
    -Installation guide
    -And any other related products

Objectives of Testing

    1. Determine that software meets end user requirements
      Software Testing in not ony about finding defects in code, it also checks products against requirements. High Level Design Document (HLD) is reviewed to make sure that it meets requirements and validation of software is done to ensure it meets the design and requirements. Testing ensures that product meets its specification and helps stakeholders to make release decisions.
    2. Demonstrate that Software is fit for use
      Software Testing also demonstrates that the software is fit for use. Testing is done to ensure that software is fit for use for the end users who will be using the software. It also ensures that the software does what users expect it to do.
    3. Find Defects/Bugs in software
      Software testing finds the defects/bugs in software. Fixing those defects/bugs improves the quality of software. By doing root cause analysis of defects found by testing it improves the software development process and eventually less defects get introduced in future development cycles.