What is Software Testing? – 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.
- Testing is a processTesting 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) 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.
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 AnalysisOnce 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
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 reportsTest Preparation
Once test plan has been finalised you need to do test preparation. The main activities of Test Preparation are:
-Prepare test cases
-Prepare test environment
-Prepare test data
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
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 Software Testing
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.
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.
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.