What is Software Testing?

What is Software Testing?

Software testing is the process of evaluating a system with the intend of finding bugs. It is performed to check if the system satisfies its specified requirements. 
Testing measures the overall quality of the system in terms of its correctness, completeness, usability, performance and other functional and non-functional attributes.

Why is Testing required?

Software Testing as a separate activity in SDLC, is required because-
  • Testing provides an assurance to the stakeholders that product works as intended.
  • Avoidable defects leaked to the end user/customer without proper testing adds bad reputation to the development company.
  • Separate testing phase adds a confidence factor to the stakeholders regarding quality of the software developed.
  • Defects detected in earlier phase of SDLC results into lesser cost and resource utilization for defect resolution.
  • Saves development time by detecting issues in earlier phase of development.
  • Testing team adds another dimension to the software development by providing a different view point to the product development process.

Who does Testing?

Software Testing is/can be done by all technical and non technical people associated with the software. Testing in its various phases is done by-
  • Developer - Developer does the unit testing of the software and ensure that the individual methods work correctly
  • Tester - Testers are the face of the software testing. A tester verifies the functionality, usability of the application as functional tester, a tester checks the performance of the application as a Performance tester, a tester automates the manual-functional test cases and creates test scripts as an automation tester
  • Test Managers/Lead/Architects - Define the test strategy and test plan
  • End users - A group of end users do the User Acceptance Testing (UAT) of the application to make sure the software can work in the real world

When do we start Software Testing?

Based on the selection of different Software Development Life Cycle Model for the software project, testing phase gets started in the different phases. There is a software myth that testing is done only when some part of software is built but testing can(should) be started even before a single line of code is written. It can be done in parallel with development phase e.g. in case of V Model -
Development PhaseTesting Activity
Requirement DesignAcceptance test creation
Functional SpecificationFunctional test case creation
ImplementationUnit testcase creation
Code CompleteTest case execution

How is Software Testing done?

Software testing can be done both manually as well as using automation tools. Manual effort includes verification of requirement and design; development of test strategy and plan; preparation of test case and then the execution of tests. Automation effort includes preparation of test scripts for UI automation, back-end automation, performance test script preparation and use of other automation tools.